Spend less on fees, more on crypto. Buy crypto easily with MoonPay Balance. 20M+ users trust MoonPay worldwide.
Ready to onboard to Ethereum? With MetaMask Portfolio, you're in control.
Don’t invest unless you’re prepared to lose all the money you invest.
Ready to simplify your web3 experience? Try the all-in-one web3 app trusted by millions worldwide.
Available on 9 networks: Ethereum mainnet, Linea, Polygon, Optimism, BNB Chain, zkSync Era, Base, Avalanche.
Everyday giveaways up to 100 ETH, Lucky Spins. Deposit BONUS 300% and Cashbacks!
5000+ Slots & Live Casino Games, 50+cryptos. Register with Etherscan and get 760% deposit bonus. Win Big$, withdraw it fast.
Slots, Roulette, Poker & more - Proud sponsors of UFC, Everton & StakeF1 team!
5000+ Slots & Live Casino Games, 50+cryptos. Register with Etherscan and get 760% deposit bonus. Win Big$, withdraw it fast.
Anonymous play on awesome games - sign up now for 25 free jackpot spins - worth $100s!
100s of games, generous bonuses, 20+ years of trusted gaming. Join CryptoWins & start winning today!
Overview
ETH Balance
Eth Value
$2,818.63 (@ $3,336.95/ETH)Token Holdings
Could not find any matches!
- ERC-20 Tokens (122)3 BENDBend Token (BEND)$0.00@0.00060.275 LINKChainLink To... (LINK)$6.35@23.100.6 CVPConcentrated... (CVP)$0.05@0.07681 TSUKADejitaru Tsu... (TSUKA)$0.01@0.00650.5 GOFGolff.financ... (GOF)$0.00@0.00890.001 HBTCHuobi BTC (HBTC)$6.96@6,961.500.86180395 HTHuobiToken (HT)$0.87@1.01480.01001001 HUSDHUSD (HUSD)$0.00@0.02720.096 MLNMelon Token (MLN)$1.94@20.17640.4 MTAMeta (MTA)$0.01@0.03181,000 MTVMultiVAC (MTV)$0.77@0.00081 MUSKMUSK (MUSK)$0.00@0.008,223 SHIBSHIBA INU (SHIB)$0.18@0.0010 SHIShina Inu (SHI)$0.00@0.000.7 SUSHISushiToken (SUSHI)$1.02@1.450.5 SNXSynthetix Ne... (SNX)$1.00@2.000.3 UNIUniswap (UNI)$4.13@13.780.02 AAVEAave Token (AAVE)$6.73@336.720.1 AMBAmber (AMB)$0.00@0.00810.06 COMPCompound (COMP)$4.84@80.710.3 CRVCurve DAO To... (CRV)$0.25@0.8440.1 DAIDai Stableco... (DAI)$0.10@0.99970.01 USDTTether USD (USDT)$0.01@0.998632,500 $ Evmosia.comERC-20: $ E... ($ Evm...)184,195,918,398.339 HelloERC-20: $Hel... (Hello)18,500,000 USDOGE 🇺🇸ERC-20: Amer... (USDOGE...)1,320,000,000,000 SHARKERC-20: Baby... (SHARK)1,314.38912087 BGBGBigMouthFrog50.00292838 BlueSparrowBlueSparrowToken$1.24@0.024810,000 CBDCYERC-20: CBDC... (CBDCY)87,657.2357414 LINKERC-20: Chai... (LINK)0 CMFERC-20: Coin... (CMF)1 CNXTCrowdnext10,000,000 COLLARERC-20: DOG ... (COLLAR)100 DRTERC-20: DRT ... (DRT)41,979,305.491837 EAERC-20: EA S... (EA)206,791,929,098.374 mETHERC-20: ETH ... (mETH)5,819 FORMERC-20: Form... (FORM)111,056,759,816.282 GISHUERC-20: Giga... (GISHU)1,100,000 GOLDENGolden Inu$0.00@0.005,064,703,855,131.33 HiERC-20: Hi (Hi)1 HSFHillstone.Finance$0.01@0.00850.5 HBSVERC-20: Huob... (HBSV)0.999999 HFILERC-20: Huob... (HFIL)0.20005 HBETHERC-20: Huob... (HBETH)33,300,000 KEIFERC-20: Keif... (KEIF)346,211,488.48228 KOJlERC-20: Koji (KOJl)19,101.92037467 LOFEERC-20: LOFE (LOFE)10,000 MVDGMetaverse Dog100.67684881 mSHIBminiSHIB17,500 MPLYMoonopoly35,567.74592606 MALONEERC-20: Post... (MALONE)2,938,600 PLSERC-20: Puls... (PLS)5,000 PSLCERC-20: Pump... (PSLC)4,891,240,061.29757 RAKUCERC-20: Raku... (RAKUC)3,597,150.23886537 REALMADRIDERC-20: Real... (REALMA...)1,524,501 RSRReserve Rights100,000,000 ShibaWERC-20: Shib... (ShibaW)7,085 SQUID2.0Squid Game 2.0865,475 SUIERC-20: SUIN... (SUI)5 SWAPPSwapp Token100 SWIRLERC-20: Swir... (SWIRL)10 TESLFTeslafan101 ELITEERC-20: The ... (ELITE)108,000 TITANERC-20: Tita... (TITAN)1,132,843,397 USDGERC-20: Unit... (USDG)9,254,000 URANUSERC-20: Uran... (URANUS)13,977,727,037.9847 VISHIBERC-20: Vita... (VISHIB)5,284,325,026.84499 VSHIBAERC-20: Vita... (VSHIBA)487,000 🧙♂️WIZ🧙♂️ERC-20: Wiza... (Ԏ...)50,125 XRP 2.0ERC-20: XRP ... (XRP 2....)18,373,806,029.8626 YesERC-20: Yes (Yes)0.7 ZKSZks2 HQGERC-20: 环球股 (HQG)1,041,807.19444908 AIDIAidi Inu0.01 SHEESHASheesha Finance$0.04@3.6961.4 TokenERC-20 TOKEN*[Suspicious]525,235,396 TokenERC-20 TOKEN*[Suspicious]3,999,990,000,000,000,00... TokenERC-20 TOKEN*[Suspicious]0.7 TokenERC-20 TOKEN*[Suspicious]32 TokenERC-20 TOKEN*[Suspicious]245.44 TokenERC-20 TOKEN*[Suspicious]400 TokenERC-20 TOKEN*[Suspicious]605 TokenERC-20 TOKEN*[Suspicious]100,000 TokenERC-20 TOKEN*[Suspicious]4,214 TokenERC-20 TOKEN*[Suspicious]7,000 TokenERC-20 TOKEN*[Suspicious]7,000 TokenERC-20 TOKEN*[Suspicious]8,239,291 TokenERC-20 TOKEN*[Suspicious]587 TokenERC-20 TOKEN*[Suspicious]228,045,690,978.888 TokenERC-20 TOKEN*[Suspicious]459,568.21894503 TokenERC-20 TOKEN*[Suspicious]668,876.77077215 TokenERC-20 TOKEN*[Suspicious]356.65224601 TokenERC-20 TOKEN*[Suspicious]1,974,052,420 TokenERC-20 TOKEN*[Suspicious]436 TokenERC-20 TOKEN*[Unsafe]7,000 TokenERC-20 TOKEN*[Unsafe]7,000 TokenERC-20 TOKEN*[Unsafe]0.87 TokenERC-20 TOKEN*[Unsafe]5,555 TokenERC-20 TOKEN*[Unsafe]1 TokenERC-20 TOKEN*[Spam]1.4 TokenERC-20 TOKEN*[Spam]500 TokenERC-20 TOKEN*[Spam]98,127 TokenERC-20 TOKEN*[Spam]7,000 TokenERC-20 TOKEN*[Spam]8,824,230 TokenERC-20 TOKEN*[Spam]300 TokenERC-20 TOKEN*[Spam]82,900,843.8610947 TokenERC-20 TOKEN*[Spam]707,090 TokenERC-20 TOKEN*[Spam]1,390,334.51534256 TokenERC-20 TOKEN*[Spam]80,002.16441542 TokenERC-20 TOKEN*[Spam]607,613.59986318 TokenERC-20 TOKEN*[Spam]404,939,237,038.71 TokenERC-20 TOKEN*[Spam]9,999 TokenERC-20 TOKEN*[Spam]38 TokenERC-20 TOKEN*[Spam]8,238.16656389 TokenERC-20 TOKEN*[Spam]940.51485466 TokenERC-20 TOKEN*[Spam]5,782.2372373 TokenERC-20 TOKEN*[Spam]71,756.17930977 TokenERC-20 TOKEN*[Spam]6,490.6617146 TokenERC-20 TOKEN*[Spam]367,822,802,466.12 TokenERC-20 TOKEN*[Spam]5,555 TokenERC-20 TOKEN*[Spam]NFT Tokens (35)Voucher$0100,000 BONEERC-1155claim rewards on clinknetwork.netclinknetwork.netERC-1155claim rewards on getaave.orggetaave.orgERC-1155claim rewards on linkaward.orglinkaward.orgERC-1155NativePunks CollectionNativePunks CollectionERC-1155Nft Mint Club Pass LimitedNft Mint Club Pass LimitedERC-1155claim rewards on pooledeth.orgpooledeth.orgERC-1155Reward Club [QEfkfA1G]Reward Club [w7cIVAag]ERC-1155claim rewards on shibprotocol.comshibprotocol.comERC-1155claim rewards on snxtoken.comsnxtoken.comERC-1155claim rewards on univ4portal.comuniv4portal.comERC-1155ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Suspicious]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]
More Info
Private Name Tags
ContractCreator
TokenTracker
Multichain Info
1 address found via- Transactions
- Internal Transactions
- Token Transfers (ERC-20)
- NFT Transfers
- Contract
- Events
- Analytics
- Multichain Portfolio
- Cards New
Advanced Filter- Filter by Tx Type:
- Tx
- Internal Tx
- ERC-20
- NFTs
Latest 25 from a total of 42,447 transactions
Transaction Hash MethodBlockFromToWithdraw Token 19572796 2024-04-03 4:14:23 264 days ago 1712117663 IN 0 ETH$0.00 0.00609182 56.72614543 Withdraw Token 19572794 2024-04-03 4:13:59 264 days ago 1712117639 IN 0 ETH$0.00 0.00864188 56.72614543 Withdraw Token 19410348 2024-03-11 7:25:23 287 days ago 1710141923 IN 0 ETH$0.00 0.0059601 56.72614543 Withdraw Token 19410348 2024-03-11 7:25:23 287 days ago 1710141923 IN 0 ETH$0.00 0.0059614 56.72614543 Withdraw Token 19410348 2024-03-11 7:25:23 287 days ago 1710141923 IN 0 ETH$0.00 0.00672709 56.72614543 Withdraw Token 19410348 2024-03-11 7:25:23 287 days ago 1710141923 IN 0 ETH$0.00 0.00609238 56.72614543 Withdraw Token 19410348 2024-03-11 7:25:23 287 days ago 1710141923 IN 0 ETH$0.00 0.00729135 56.72614543 Withdraw Token 19410348 2024-03-11 7:25:23 287 days ago 1710141923 IN 0 ETH$0.00 0.00672352 56.72614543 Withdraw Token 19410348 2024-03-11 7:25:23 287 days ago 1710141923 IN 0 ETH$0.00 0.0078476 56.72614543 Withdraw Token 19410348 2024-03-11 7:25:23 287 days ago 1710141923 IN 0 ETH$0.00 0.00684588 56.72614543 Withdraw Token 19410348 2024-03-11 7:25:23 287 days ago 1710141923 IN 0 ETH$0.00 0.00608036 56.72614543 Withdraw Token 19410337 2024-03-11 7:23:11 287 days ago 1710141791 IN 0 ETH$0.00 0.0086412 56.72614543 Withdraw Token 19410337 2024-03-11 7:23:11 287 days ago 1710141791 IN 0 ETH$0.00 0.00864052 56.72614543 Withdraw Token 19410337 2024-03-11 7:23:11 287 days ago 1710141791 IN 0 ETH$0.00 0.00864052 56.72614543 Withdraw Token 19410337 2024-03-11 7:23:11 287 days ago 1710141791 IN 0 ETH$0.00 0.0086412 56.72614543 Withdraw Token 19410337 2024-03-11 7:23:11 287 days ago 1710141791 IN 0 ETH$0.00 0.0086412 56.72614543 Withdraw Token 19410337 2024-03-11 7:23:11 287 days ago 1710141791 IN 0 ETH$0.00 0.00863984 56.72614543 Withdraw Token 19410337 2024-03-11 7:23:11 287 days ago 1710141791 IN 0 ETH$0.00 0.00864052 56.72614543 Withdraw Token 19410337 2024-03-11 7:23:11 287 days ago 1710141791 IN 0 ETH$0.00 0.00864052 56.72614543 Withdraw Token 19410337 2024-03-11 7:23:11 287 days ago 1710141791 IN 0 ETH$0.00 0.0086412 56.72614543 Withdraw Token 19410319 2024-03-11 7:19:35 287 days ago 1710141575 IN 0 ETH$0.00 0.00601847 56.72614543 Withdraw Token 19410319 2024-03-11 7:19:35 287 days ago 1710141575 IN 0 ETH$0.00 0.0086412 56.72614543 Withdraw Token 19375307 2024-03-06 9:42:59 292 days ago 1709718179 IN 0 ETH$0.00 0.00594529 56.72614543 Withdraw Token 19375307 2024-03-06 9:42:59 292 days ago 1709718179 IN 0 ETH$0.00 0.0086412 56.72614543 Withdraw Token 19375307 2024-03-06 9:42:59 292 days ago 1709718179 IN 0 ETH$0.00 0.00707051 56.72614543 Latest 25 internal transactions (View All)
Advanced mode:Parent Transaction Hash Block FromTo18626540 2023-11-22 9:59:35 397 days ago 1700647175 10,145 ETH$33,853,381.38 18590579 2023-11-17 9:02:59 402 days ago 1700211779 83 ETH$276,967.04 18574934 2023-11-15 4:32:47 404 days ago 1700022767 15 ETH$50,054.28 18553273 2023-11-12 3:52:35 407 days ago 1699761155 15 ETH$50,054.28 18541640 2023-11-10 12:47:23 408 days ago 1699620443 21 ETH$70,076.00 18535253 2023-11-09 15:22:11 409 days ago 1699543331 10 ETH$33,369.52 18532590 2023-11-09 6:26:23 410 days ago 1699511183 133 ETH$443,814.66 18433014 2023-10-26 7:50:23 424 days ago 1698306623 10 ETH$33,369.52 18431622 2023-10-26 3:10:23 424 days ago 1698289823 10 ETH$33,369.52 18417223 2023-10-24 2:44:23 426 days ago 1698115463 16 ETH$53,391.24 18416060 2023-10-23 22:50:11 426 days ago 1698101411 10 ETH$33,369.52 18411813 2023-10-23 8:34:23 427 days ago 1698050063 10 ETH$33,369.52 18388065 2023-10-20 0:49:35 430 days ago 1697762975 30 ETH$100,108.57 18369005 2023-10-17 8:49:35 433 days ago 1697532575 476 ETH$1,588,389.31 18368968 2023-10-17 8:42:11 433 days ago 1697532131 13 ETH$43,380.38 18119347 2023-09-12 9:26:11 468 days ago 1694510771 13 ETH$43,380.38 18088587 2023-09-08 2:00:59 472 days ago 1694138459 63 ETH$210,228.00 17975605 2023-08-23 6:25:35 488 days ago 1692771935 21 ETH$70,076.00 17950064 2023-08-19 16:39:23 491 days ago 1692463163 308 ETH$1,027,781.32 17950019 2023-08-19 16:30:23 491 days ago 1692462623 200 ETH$667,390.47 17949943 2023-08-19 16:15:11 491 days ago 1692461711 100 ETH$333,695.23 17949919 2023-08-19 16:10:23 491 days ago 1692461423 10 ETH$33,369.52 17877724 2023-08-09 13:44:23 501 days ago 1691588663 102 ETH$340,369.14 17870756 2023-08-08 14:19:23 502 days ago 1691504363 53 ETH$176,858.47 17864049 2023-08-07 15:49:23 503 days ago 1691423363 22 ETH$73,412.95 Loading...LoadingContract Name:Bridge
Compiler Versionv0.7.4+commit.3f05b770
Contract Source Code (Solidity)
- library SafeMath
- - function add(uint256 a, uint256 b)
- - function sub(uint256 a, uint256 b)
- - function sub(uint256 a, uint256 b, st ...
- - function mul(uint256 a, uint256 b)
- - function div(uint256 a, uint256 b)
- - function div(uint256 a, uint256 b, st ...
- - function mod(uint256 a, uint256 b)
- - function mod(uint256 a, uint256 b, st ...
- - function _msgSender()
- - function _msgData()
- - function paused()
- - function _pause()
- - function _unpause()
- contract Container
- - function itemAddressExists(bytes32 _i ...
- - function getItemAddresses(bytes32 _id ...
- - function getItemInfo(bytes32 _id)
- - function getItemAddressCount(bytes32 ...
- - function setItemInfo(bytes32 _id, uin ...
- - function addItemAddress(bytes32 _id, ...
- - function removeItemAddresses(bytes32 ...
- - function removeOneItemAddress(bytes32 ...
- - function removeItem(bytes32 _id)
- - function replaceItemAddress(bytes32 _ ...
- contract BridgeStorage is Containe ... *
- - function supporterExists(bytes32 task ...
- - function setTaskInfo(bytes32 taskHash ...
- - function getTaskInfo(bytes32 taskHash ...
- - function addSupporter(bytes32 taskHas ...
- - function removeAllSupporter(bytes32 t ...
- - function removeTask(bytes32 taskHash)
- contract BridgeAdmin is Container *
- - function initAdmin(address[] memory _ ...
- - function classHashExist(bytes32 aHash ...
- - function getAdminAddresses(string mem ...
- - function getOwnerRequireNum()
- - function getOperatorRequireNum()
- - function resetRequiredNum(string memo ...
- - function modifyAddress(string memory ...
- - function getClassHash(string memory c ...
- - function dropAddress(string memory cl ...
- - function addAddress(string memory cla ...
- - function dropTask(bytes32 taskHash)
- interface IERC20
- - function totalSupply()
- - function balanceOf(address account)
- - function transfer(address recipient, ...
- - function allowance(address owner, add ...
- - function approve(address spender, uin ...
- - function transferFrom(address sender, ...
- contract BridgeLogic *
- - function resetStoreLogic(address stor ...
- - function getStoreAddress()
- - function supportTask(uint256 taskType ...
- - function cancelTask(bytes32 taskHash)
- - function removeTask(bytes32 taskHash)
- - function mint(address account, uint25 ...
- - function burn(address account , uint2 ...
- - function redeem(address account, uint ...
- - function issue(address account, uint2 ...
- contract Bridge is BridgeAdmin, Pa ... *
- - function depositNative(string memory ...
- - function depositToken(address _token, ...
- - function withdrawNative(address payab ...
- - function withdrawToken(address _token ...
- - function modifyAdminAddress(string me ...
- - function getLogicAddress()
- - function getStoreAddress()
- - function pause()
- - function unpause()
- - function transferToken(address token, ...
- - function setDepositSelector(address t ...
- - function setWithdrawSelector(address ...
- - function depositTokenLogic(address to ...
- - function withdrawTokenLogic(address t ...
/** *Submitted for verification at Etherscan.io on 2021-01-28 */ // Sources flattened with hardhat v2.0.7 https://hardhat.org // File @openzeppelin/contracts/math/[email protected] // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File @openzeppelin/contracts/GSN/[email protected] pragma solidity >=0.6.0 <0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File @openzeppelin/contracts/utils/[email protected] pragma solidity >=0.6.0 <0.8.0; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor () internal { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!_paused, "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(_paused, "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File contracts/Container.sol pragma solidity ^0.7.0; contract Container { struct Item{ uint256 itemType; uint256 status; address[] addresses; } uint256 MaxItemAdressNum = 255; mapping (bytes32 => Item) private container; // bool private _nativePaused = false; function itemAddressExists(bytes32 _id, address _oneAddress) internal view returns(bool){ for(uint256 i = 0; i < container[_id].addresses.length; i++){ if(container[_id].addresses[i] == _oneAddress) return true; } return false; } function getItemAddresses(bytes32 _id) internal view returns(address[] memory){ return container[_id].addresses; } function getItemInfo(bytes32 _id) internal view returns(uint256, uint256, uint256){ return (container[_id].itemType, container[_id].status, container[_id].addresses.length); } function getItemAddressCount(bytes32 _id) internal view returns(uint256){ return container[_id].addresses.length; } function setItemInfo(bytes32 _id, uint256 _itemType, uint256 _status) internal{ container[_id].itemType = _itemType; container[_id].status = _status; } function addItemAddress(bytes32 _id, address _oneAddress) internal{ require(!itemAddressExists(_id, _oneAddress), "dup address added"); require(container[_id].addresses.length < MaxItemAdressNum, "too many addresses"); container[_id].addresses.push(_oneAddress); } function removeItemAddresses(bytes32 _id) internal { delete container[_id].addresses; } function removeOneItemAddress(bytes32 _id, address _oneAddress) internal { for(uint256 i = 0; i < container[_id].addresses.length; i++){ if(container[_id].addresses[i] == _oneAddress){ container[_id].addresses[i] = container[_id].addresses[container[_id].addresses.length - 1]; container[_id].addresses.pop(); return; } } } function removeItem(bytes32 _id) internal{ delete container[_id]; } function replaceItemAddress(bytes32 _id, address _oneAddress, address _anotherAddress) internal { for(uint256 i = 0; i < container[_id].addresses.length; i++){ if(container[_id].addresses[i] == _oneAddress){ container[_id].addresses[i] = _anotherAddress; return; } } } } // File contracts/BridgeStorage.sol pragma solidity ^0.7.0; contract BridgeStorage is Container { string public constant name = "BridgeStorage"; address private caller; constructor(address aCaller) { caller = aCaller; } modifier onlyCaller() { require(msg.sender == caller, "only use main contract to call"); _; } function supporterExists(bytes32 taskHash, address user) public view returns(bool) { return itemAddressExists(taskHash, user); } function setTaskInfo(bytes32 taskHash, uint256 taskType, uint256 status) external onlyCaller { setItemInfo(taskHash, taskType, status); } function getTaskInfo(bytes32 taskHash) public view returns(uint256, uint256, uint256){ return getItemInfo(taskHash); } function addSupporter(bytes32 taskHash, address oneAddress) external onlyCaller{ addItemAddress(taskHash, oneAddress); } function removeAllSupporter(bytes32 taskHash) external onlyCaller { removeItemAddresses(taskHash); } function removeTask(bytes32 taskHash)external onlyCaller{ removeItem(taskHash); } } // File contracts/BridgeAdmin.sol pragma solidity ^0.7.0; contract BridgeAdmin is Container { bytes32 internal constant OWNERHASH = 0x02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c0; bytes32 internal constant OPERATORHASH = 0x46a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f622; bytes32 internal constant PAUSERHASH = 0x0cc58340b26c619cd4edc70f833d3f4d9d26f3ae7d5ef2965f81fe5495049a4f; bytes32 internal constant STOREHASH = 0xe41d88711b08bdcd7556c5d2d24e0da6fa1f614cf2055f4d7e10206017cd1680; bytes32 internal constant LOGICHASH = 0x397bc5b97f629151e68146caedba62f10b47e426b38db589771a288c0861f182; uint256 internal constant MAXUSERNUM = 255; bytes32[] private classHashArray; uint256 internal ownerRequireNum; uint256 internal operatorRequireNum; event AdminChanged(string TaskType, string class, address oldAddress, address newAddress); event AdminRequiredNumChanged(string TaskType, string class, uint256 previousNum, uint256 requiredNum); event AdminTaskDropped(bytes32 taskHash); modifier validRequirement(uint ownerCount, uint _required) { require(ownerCount <= MaxItemAdressNum && _required <= ownerCount && _required > 0 && ownerCount > 0); _; } modifier onlyOwner() { require(itemAddressExists(OWNERHASH, msg.sender), "only use owner to call"); _; } function initAdmin(address[] memory _owners, uint _ownerRequired) internal validRequirement(_owners.length, _ownerRequired) { for (uint i = 0; i < _owners.length; i++) { addItemAddress(OWNERHASH, _owners[i]); } addItemAddress(PAUSERHASH,_owners[0]);// we need an init pauser addItemAddress(LOGICHASH, address(0x0)); addItemAddress(STOREHASH, address(0x1)); classHashArray.push(OWNERHASH); classHashArray.push(OPERATORHASH); classHashArray.push(PAUSERHASH); classHashArray.push(STOREHASH); classHashArray.push(LOGICHASH); ownerRequireNum = _ownerRequired; operatorRequireNum = 2; } function classHashExist(bytes32 aHash) private view returns (bool) { for (uint256 i = 0; i < classHashArray.length; i++) if (classHashArray[i] == aHash) return true; return false; } function getAdminAddresses(string memory class) public view returns (address[] memory) { bytes32 classHash = getClassHash(class); return getItemAddresses(classHash); } function getOwnerRequireNum() public view returns (uint256){ return ownerRequireNum; } function getOperatorRequireNum() public view returns (uint256){ return operatorRequireNum; } function resetRequiredNum(string memory class, uint256 requiredNum) public onlyOwner returns (bool){ bytes32 classHash = getClassHash(class); require((classHash == OPERATORHASH) || (classHash == OWNERHASH), "wrong class"); bytes32 taskHash = keccak256(abi.encodePacked("resetRequiredNum", class, requiredNum)); addItemAddress(taskHash, msg.sender); if (getItemAddressCount(taskHash) >= ownerRequireNum) { removeItem(taskHash); uint256 previousNum = 0; if (classHash == OWNERHASH) { previousNum = ownerRequireNum; ownerRequireNum = requiredNum; } else if (classHash == OPERATORHASH) { previousNum = operatorRequireNum; operatorRequireNum = requiredNum; } else { revert("wrong class"); } emit AdminRequiredNumChanged("resetRequiredNum", class, previousNum, requiredNum); } return true; } function modifyAddress(string memory class, address oldAddress, address newAddress) internal onlyOwner returns (bool){ bytes32 classHash = getClassHash(class); bytes32 taskHash = keccak256(abi.encodePacked("modifyAddress", class, oldAddress, newAddress)); addItemAddress(taskHash, msg.sender); if (getItemAddressCount(taskHash) >= ownerRequireNum) { replaceItemAddress(classHash, oldAddress, newAddress); emit AdminChanged("modifyAddress", class, oldAddress, newAddress); removeItem(taskHash); return true; } return false; } function getClassHash(string memory class) private view returns (bytes32){ bytes32 classHash = keccak256(abi.encodePacked(class)); require(classHashExist(classHash), "invalid class"); return classHash; } function dropAddress(string memory class, address oneAddress) public onlyOwner returns (bool){ bytes32 classHash = getClassHash(class); require(classHash != STOREHASH && classHash != LOGICHASH, "wrong class"); require(itemAddressExists(classHash, oneAddress), "no such address exist"); if (classHash == OWNERHASH) require(getItemAddressCount(classHash) > ownerRequireNum, "insuffience addresses"); bytes32 taskHash = keccak256(abi.encodePacked("dropAddress", class, oneAddress)); addItemAddress(taskHash, msg.sender); if (getItemAddressCount(taskHash) >= ownerRequireNum) { removeOneItemAddress(classHash, oneAddress); emit AdminChanged("dropAddress", class, oneAddress, oneAddress); removeItem(taskHash); return true; } return false; } function addAddress(string memory class, address oneAddress) public onlyOwner returns (bool){ bytes32 classHash = getClassHash(class); require(classHash != STOREHASH && classHash != LOGICHASH, "wrong class"); bytes32 taskHash = keccak256(abi.encodePacked("addAddress", class, oneAddress)); addItemAddress(taskHash, msg.sender); if (getItemAddressCount(taskHash) >= ownerRequireNum) { addItemAddress(classHash, oneAddress); emit AdminChanged("addAddress", class, oneAddress, oneAddress); removeItem(taskHash); return true; } return false; } function dropTask(bytes32 taskHash) public onlyOwner returns (bool){ removeItem(taskHash); emit AdminTaskDropped(taskHash); return true; } } // File @openzeppelin/contracts/token/ERC20/[email protected] pragma solidity >=0.6.0 <0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File contracts/BridgeLogic.sol pragma solidity ^0.7.0; contract BridgeLogic { using SafeMath for uint256; string public constant name = "BridgeLogic"; bytes32 internal constant OPERATORHASH = 0x46a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f622; uint256 public constant TASKINIT = 0; uint256 public constant TASKPROCESSING = 1; uint256 public constant TASKCANCELLED = 2; uint256 public constant TASKDONE = 3; uint256 public constant WITHDRAWTASK = 1; address private caller; BridgeStorage private store; constructor(address aCaller) { caller = aCaller; } modifier onlyCaller(){ require(msg.sender == caller, "only main contract can call"); _; } modifier operatorExists(address operator) { require(store.supporterExists(OPERATORHASH, operator), "wrong operator"); _; } function resetStoreLogic(address storeAddress) external onlyCaller { store = BridgeStorage(storeAddress); } function getStoreAddress() public view returns(address) { return address(store); } function supportTask(uint256 taskType, bytes32 taskHash, address oneAddress, uint256 requireNum) external onlyCaller returns(uint256){ require(!store.supporterExists(taskHash, oneAddress), "supporter already exists"); (uint256 theTaskType,uint256 theTaskStatus,uint256 theSupporterNum) = store.getTaskInfo(taskHash); require(theTaskStatus < TASKDONE, "wrong status"); if (theTaskStatus != TASKINIT) require(theTaskType == taskType, "task type not match"); store.addSupporter(taskHash, oneAddress); theSupporterNum++; if(theSupporterNum >= requireNum) theTaskStatus = TASKDONE; else theTaskStatus = TASKPROCESSING; store.setTaskInfo(taskHash, taskType, theTaskStatus); return theTaskStatus; } function cancelTask(bytes32 taskHash) external onlyCaller returns(uint256) { (uint256 theTaskType,uint256 theTaskStatus,uint256 theSupporterNum) = store.getTaskInfo(taskHash); require(theTaskStatus == TASKPROCESSING, "wrong status"); if(theSupporterNum > 0) store.removeAllSupporter(taskHash); theTaskStatus = TASKCANCELLED; store.setTaskInfo(taskHash, theTaskType, theTaskStatus); return theTaskStatus; } function removeTask(bytes32 taskHash) external onlyCaller { store.removeTask(taskHash); } } // File contracts/ERC20Sample.sol pragma solidity ^0.7.0; abstract contract ERC20Template is IERC20 { function mint(address account, uint256 amount) public{ } function burn(address account , uint256 amount) public{ } function redeem(address account, uint256 amount)public { } function issue(address account, uint256 amount) public { } } // File contracts/Bridge.sol pragma solidity ^0.7.0; contract Bridge is BridgeAdmin, Pausable { using SafeMath for uint256; string public constant name = "Bridge"; BridgeLogic private logic; event DepositNative(address indexed from, uint256 value, string targetAddress, string chain); event DepositToken(address indexed from, uint256 value, address indexed token, string targetAddress, string chain, uint256 nativeValue); event WithdrawingNative(address indexed to, uint256 value, string proof); event WithdrawingToken(address indexed to, address indexed token, uint256 value, string proof); event WithdrawDoneNative(address indexed to, uint256 value, string proof); event WithdrawDoneToken(address indexed to, address indexed token, uint256 value, string proof); modifier onlyOperator() { require(itemAddressExists(OPERATORHASH, msg.sender), "wrong operator"); _; } modifier onlyPauser() { require(itemAddressExists(PAUSERHASH, msg.sender), "wrong pauser"); _; } modifier positiveValue(uint _value) { require(_value > 0, "value need > 0"); _; } constructor(address[] memory _owners, uint _ownerRequired) { initAdmin(_owners, _ownerRequired); } function depositNative(string memory _targetAddress, string memory chain) public payable { emit DepositNative(msg.sender, msg.value, _targetAddress,chain); } function depositToken(address _token, uint value, string memory _targetAddress, string memory chain) public payable returns (bool){ //deposit(address token, address _from, uint256 _value) bool res = depositTokenLogic(_token, msg.sender, value); emit DepositToken(msg.sender, value, _token, _targetAddress, chain, msg.value); return res; }// function withdrawNative(address payable to, uint value, string memory proof, bytes32 taskHash) public onlyOperator whenNotPaused positiveValue(value) returns(bool) { require(address(this).balance >= value, "not enough native token"); require(taskHash == keccak256((abi.encodePacked(to,value,proof))),"taskHash is wrong"); uint256 status = logic.supportTask(logic.WITHDRAWTASK(), taskHash, msg.sender, operatorRequireNum); if (status == logic.TASKPROCESSING()){ emit WithdrawingNative(to, value, proof); }else if (status == logic.TASKDONE()) { emit WithdrawingNative(to, value, proof); emit WithdrawDoneNative(to, value, proof); to.transfer(value); logic.removeTask(taskHash); } return true; } function withdrawToken(address _token, address to, uint value, string memory proof, bytes32 taskHash) public onlyOperator whenNotPaused positiveValue(value) returns (bool) { require(taskHash == keccak256((abi.encodePacked(to,value,proof))),"taskHash is wrong"); uint256 status = logic.supportTask(logic.WITHDRAWTASK(), taskHash, msg.sender, operatorRequireNum); if (status == logic.TASKPROCESSING()){ emit WithdrawingToken(to, _token, value, proof); }else if (status == logic.TASKDONE()) { // withdraw(address token, address _to, address _value) bool res = withdrawTokenLogic( _token, to, value); emit WithdrawingToken(to, _token, value, proof); emit WithdrawDoneToken(to, _token, value, proof); logic.removeTask(taskHash); return res; } return true; } function modifyAdminAddress(string memory class, address oldAddress, address newAddress) public whenPaused { require(newAddress != address(0x0), "wrong address"); bool flag = modifyAddress(class, oldAddress, newAddress); if(flag){ bytes32 classHash = keccak256(abi.encodePacked(class)); if(classHash == LOGICHASH){ logic = BridgeLogic(newAddress); }else if(classHash == STOREHASH){ logic.resetStoreLogic(newAddress); } } } function getLogicAddress() public view returns(address){ return address(logic); } function getStoreAddress() public view returns(address){ return logic.getStoreAddress(); } function pause() public onlyPauser { _pause(); } function unpause() public onlyPauser { _unpause(); } function transferToken(address token, address to , uint256 value) onlyPauser external{ IERC20 atoken = IERC20(token); bool success = atoken.transfer(to,value); } function setDepositSelector(address token, string memory method, bool _isValueFirst) onlyOperator external{ depositSelector[token] = assetSelector(method,_isValueFirst); } function setWithdrawSelector(address token, string memory method, bool _isValueFirst) onlyOperator external{ withdrawSelector[token] = assetSelector(method,_isValueFirst); } struct assetSelector{ string selector; bool isValueFirst; } mapping (address=>assetSelector) public depositSelector; mapping (address=> assetSelector) public withdrawSelector; function depositTokenLogic(address token, address _from, uint256 _value) internal returns(bool){ bool status = false; bytes memory returnedData; if (bytes(depositSelector[token].selector).length == 0){ (status,returnedData)= token.call(abi.encodeWithSignature("transferFrom(address,address,uint256)",_from,this,_value)); } else{ assetSelector memory aselector = depositSelector[token]; if (aselector.isValueFirst){ (status, returnedData) = token.call(abi.encodeWithSignature(aselector.selector,_value,_from)); } else { (status,returnedData)= token.call(abi.encodeWithSignature(aselector.selector,_from,_value)); } } require( status && (returnedData.length == 0 || abi.decode(returnedData, (bool))), ' transfer failed'); return true; } function withdrawTokenLogic(address token, address _to, uint256 _value) internal returns(bool){ bool status = false; bytes memory returnedData; if (bytes(withdrawSelector[token].selector).length==0){ (status,returnedData)= token.call(abi.encodeWithSignature("transfer(address,uint256)",_to,_value)); } else{ assetSelector memory aselector = withdrawSelector[token]; if (aselector.isValueFirst){ (status,returnedData) = token.call(abi.encodeWithSignature( aselector.selector,_value,_to)); } else { (status,returnedData)= token.call(abi.encodeWithSignature(aselector.selector,_to,_value)); } } require(status && (returnedData.length == 0 || abi.decode(returnedData, (bool))),'withdraw failed'); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
[{"inputs":[{"internalType":"address[]","name":"_owners","type":"address[]"},{"internalType":"uint256","name":"_ownerRequired","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"TaskType","type":"string"},{"indexed":false,"internalType":"string","name":"class","type":"string"},{"indexed":false,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":false,"internalType":"address","name":"newAddress","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"TaskType","type":"string"},{"indexed":false,"internalType":"string","name":"class","type":"string"},{"indexed":false,"internalType":"uint256","name":"previousNum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"requiredNum","type":"uint256"}],"name":"AdminRequiredNumChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"taskHash","type":"bytes32"}],"name":"AdminTaskDropped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"targetAddress","type":"string"},{"indexed":false,"internalType":"string","name":"chain","type":"string"}],"name":"DepositNative","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"string","name":"targetAddress","type":"string"},{"indexed":false,"internalType":"string","name":"chain","type":"string"},{"indexed":false,"internalType":"uint256","name":"nativeValue","type":"uint256"}],"name":"DepositToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"proof","type":"string"}],"name":"WithdrawDoneNative","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"proof","type":"string"}],"name":"WithdrawDoneToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"proof","type":"string"}],"name":"WithdrawingNative","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"proof","type":"string"}],"name":"WithdrawingToken","type":"event"},{"inputs":[{"internalType":"string","name":"class","type":"string"},{"internalType":"address","name":"oneAddress","type":"address"}],"name":"addAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_targetAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"}],"name":"depositNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"depositSelector","outputs":[{"internalType":"string","name":"selector","type":"string"},{"internalType":"bool","name":"isValueFirst","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"_targetAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"}],"name":"depositToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"class","type":"string"},{"internalType":"address","name":"oneAddress","type":"address"}],"name":"dropAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"taskHash","type":"bytes32"}],"name":"dropTask","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"class","type":"string"}],"name":"getAdminAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLogicAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOperatorRequireNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwnerRequireNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStoreAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"class","type":"string"},{"internalType":"address","name":"oldAddress","type":"address"},{"internalType":"address","name":"newAddress","type":"address"}],"name":"modifyAdminAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"class","type":"string"},{"internalType":"uint256","name":"requiredNum","type":"uint256"}],"name":"resetRequiredNum","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"method","type":"string"},{"internalType":"bool","name":"_isValueFirst","type":"bool"}],"name":"setDepositSelector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"method","type":"string"},{"internalType":"bool","name":"_isValueFirst","type":"bool"}],"name":"setWithdrawSelector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"proof","type":"string"},{"internalType":"bytes32","name":"taskHash","type":"bytes32"}],"name":"withdrawNative","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"withdrawSelector","outputs":[{"internalType":"string","name":"selector","type":"string"},{"internalType":"bool","name":"isValueFirst","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"proof","type":"string"},{"internalType":"bytes32","name":"taskHash","type":"bytes32"}],"name":"withdrawToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405260ff6000553480156200001657600080fd5b506040516200606c3803806200606c833981810160405260408110156200003c57600080fd5b81019080805160405193929190846401000000008211156200005d57600080fd5b838201915060208201858111156200007457600080fd5b82518660208202830111640100000000821117156200009257600080fd5b8083526020830192505050908051906020019060200280838360005b83811015620000cb578082015181840152602081019050620000ae565b50505050905001604052602001805190602001909291905050506000600560006101000a81548160ff0219169083151502179055506200011282826200011a60201b60201c565b505062000662565b8151816000548211158015620001305750818111155b80156200013d5750600081115b80156200014a5750600082115b6200015457600080fd5b60005b8451811015620001b857620001aa7f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060001b8683815181106200019657fe5b60200260200101516200040060201b60201c565b808060010191505062000157565b50620002037f0cc58340b26c619cd4edc70f833d3f4d9d26f3ae7d5ef2965f81fe5495049a4f60001b85600081518110620001ef57fe5b60200260200101516200040060201b60201c565b620002397f397bc5b97f629151e68146caedba62f10b47e426b38db589771a288c0861f18260001b60006200040060201b60201c565b6200026f7fe41d88711b08bdcd7556c5d2d24e0da6fa1f614cf2055f4d7e10206017cd168060001b60016200040060201b60201c565b60027f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060001b908060018154018082558091505060019003906000526020600020016000909190919091505560027f46a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f62260001b908060018154018082558091505060019003906000526020600020016000909190919091505560027f0cc58340b26c619cd4edc70f833d3f4d9d26f3ae7d5ef2965f81fe5495049a4f60001b908060018154018082558091505060019003906000526020600020016000909190919091505560027fe41d88711b08bdcd7556c5d2d24e0da6fa1f614cf2055f4d7e10206017cd168060001b908060018154018082558091505060019003906000526020600020016000909190919091505560027f397bc5b97f629151e68146caedba62f10b47e426b38db589771a288c0861f18260001b908060018154018082558091505060019003906000526020600020016000909190919091505582600381905550600260048190555050505050565b6200041282826200059260201b60201c565b1562000486576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f647570206164647265737320616464656400000000000000000000000000000081525060200191505060405180910390fd5b60005460016000848152602001908152602001600020600201805490501062000517576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f746f6f206d616e7920616464726573736573000000000000000000000000000081525060200191505060405180910390fd5b60016000838152602001908152602001600020600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600080600090505b600160008581526020019081526020016000206002018054905081101562000656578273ffffffffffffffffffffffffffffffffffffffff16600160008681526020019081526020016000206002018281548110620005f557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415620006485760019150506200065c565b80806001019150506200059a565b50600090505b92915050565b6159fa80620006726000396000f3fe60806040526004361061013f5760003560e01c8063abd108ba116100b6578063d5b99d3c1161006f578063d5b99d3c14610c8d578063dd9b86c114610d9f578063e6a81ec414610f31578063e9e211bd14610f5c578063f5537ede14611044578063f60c757f146110bf5761013f565b8063abd108ba14610829578063b07ed3a91461086a578063c8e369bf146108ab578063c8fd90f9146109c8578063cb08e3ca14610abc578063ceb35b0f14610b8f5761013f565b80633f4ba83a116101085780633f4ba83a1461052d578063521cb590146105445780635c975abb146105955780638456cb59146105c25780638609d28c146105d957806391c40bf71461072b5761013f565b8062674f631461014457806302c1927c1461023857806306fdde031461036a5780631d75807c146103fa5780632c2df74214610425575b600080fd5b34801561015057600080fd5b506102366004803603606081101561016757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156101a457600080fd5b8201836020820111156101b657600080fd5b803590602001918460018302840111640100000000831117156101d857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803515159060200190929190505050611192565b005b34801561024457600080fd5b50610352600480360360a081101561025b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156102c257600080fd5b8201836020820111156102d457600080fd5b803590602001918460018302840111640100000000831117156102f657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291905050506112cc565b60405180821515815260200191505060405180910390f35b34801561037657600080fd5b5061037f611b82565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bf5780820151818401526020810190506103a4565b50505050905090810190601f1680156103ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040657600080fd5b5061040f611bbb565b6040518082815260200191505060405180910390f35b34801561043157600080fd5b5061052b6004803603606081101561044857600080fd5b810190808035906020019064010000000081111561046557600080fd5b82018360208201111561047757600080fd5b8035906020019184600183028401116401000000008311171561049957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bc5565b005b34801561053957600080fd5b50610542611ebe565b005b34801561055057600080fd5b5061057d6004803603602081101561056757600080fd5b8101908080359060200190929190505050611f67565b60405180821515815260200191505060405180910390f35b3480156105a157600080fd5b506105aa612051565b60405180821515815260200191505060405180910390f35b3480156105ce57600080fd5b506105d7612068565b005b610729600480360360408110156105ef57600080fd5b810190808035906020019064010000000081111561060c57600080fd5b82018360208201111561061e57600080fd5b8035906020019184600183028401116401000000008311171561064057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156106a357600080fd5b8201836020820111156106b557600080fd5b803590602001918460018302840111640100000000831117156106d757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612111565b005b34801561073757600080fd5b506108116004803603604081101561074e57600080fd5b810190808035906020019064010000000081111561076b57600080fd5b82018360208201111561077d57600080fd5b8035906020019184600183028401116401000000008311171561079f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061223d565b60405180821515815260200191505060405180910390f35b34801561083557600080fd5b5061083e6126f0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561087657600080fd5b5061087f61271a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108b757600080fd5b50610971600480360360208110156108ce57600080fd5b81019080803590602001906401000000008111156108eb57600080fd5b8201836020820111156108fd57600080fd5b8035906020019184600183028401116401000000008311171561091f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506127c4565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156109b4578082015181840152602081019050610999565b505050509050019250505060405180910390f35b3480156109d457600080fd5b50610aba600480360360608110156109eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610a2857600080fd5b820183602082011115610a3a57600080fd5b80359060200191846001830284011164010000000083111715610a5c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035151590602001909291905050506127e4565b005b348015610ac857600080fd5b50610b0b60048036036020811015610adf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061291e565b60405180806020018315158152602001828103825284818151815260200191508051906020019080838360005b83811015610b53578082015181840152602081019050610b38565b50505050905090810190601f168015610b805780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b348015610b9b57600080fd5b50610c7560048036036040811015610bb257600080fd5b8101908080359060200190640100000000811115610bcf57600080fd5b820183602082011115610be157600080fd5b80359060200191846001830284011164010000000083111715610c0357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129e7565b60405180821515815260200191505060405180910390f35b348015610c9957600080fd5b50610d8760048036036080811015610cb057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610cf757600080fd5b820183602082011115610d0957600080fd5b80359060200191846001830284011164010000000083111715610d2b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050612d73565b60405180821515815260200191505060405180910390f35b610f1960048036036080811015610db557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610dfc57600080fd5b820183602082011115610e0e57600080fd5b80359060200191846001830284011164010000000083111715610e3057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610e9357600080fd5b820183602082011115610ea557600080fd5b80359060200191846001830284011164010000000083111715610ec757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050613687565b60405180821515815260200191505060405180910390f35b348015610f3d57600080fd5b50610f466137ea565b6040518082815260200191505060405180910390f35b348015610f6857600080fd5b5061102c60048036036040811015610f7f57600080fd5b8101908080359060200190640100000000811115610f9c57600080fd5b820183602082011115610fae57600080fd5b80359060200191846001830284011164010000000083111715610fd057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291905050506137f4565b60405180821515815260200191505060405180910390f35b34801561105057600080fd5b506110bd6004803603606081101561106757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613c0d565b005b3480156110cb57600080fd5b5061110e600480360360208110156110e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613d68565b60405180806020018315158152602001828103825284818151815260200191508051906020019080838360005b8381101561115657808201518184015260208101905061113b565b50505050905090810190601f1680156111835780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6111bf7f46a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f62260001b33613e31565b611231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f77726f6e67206f70657261746f7200000000000000000000000000000000000081525060200191505060405180910390fd5b6040518060400160405280838152602001821515815250600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000190805190602001906112a39291906158dc565b5060208201518160010160006101000a81548160ff021916908315150217905550905050505050565b60006112fb7f46a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f62260001b33613e31565b61136d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f77726f6e67206f70657261746f7200000000000000000000000000000000000081525060200191505060405180910390fd5b600560009054906101000a900460ff16156113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b8360008111611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f76616c7565206e656564203e203000000000000000000000000000000000000081525060200191505060405180910390fd5b858585604051602001808473ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182805190602001908083835b602083106114c557805182526020820191506020810190506020830392506114a2565b6001836020036101000a0380198251168184511680821785525050505050509050019350505050604051602081830303815290604052805190602001208314611576576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f7461736b486173682069732077726f6e6700000000000000000000000000000081525060200191505060405180910390fd5b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ae0fd47f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663478538026040518163ffffffff1660e01b815260040160206040518083038186803b15801561161e57600080fd5b505afa158015611632573d6000803e3d6000fd5b505050506040513d602081101561164857600080fd5b810190808051906020019092919050505086336004546040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050602060405180830381600087803b1580156116bf57600080fd5b505af11580156116d3573d6000803e3d6000fd5b505050506040513d60208110156116e957600080fd5b81019080805190602001909291905050509050600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663afd464f26040518163ffffffff1660e01b815260040160206040518083038186803b15801561176457600080fd5b505afa158015611778573d6000803e3d6000fd5b505050506040513d602081101561178e57600080fd5b810190808051906020019092919050505081141561187d578773ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f91b4005f248ece53c5402f0c547c6a472d18676fbb0e2e15029d4869140cbe2088886040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561183d578082015181840152602081019050611822565b50505050905090810190601f16801561186a5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3611b72565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166310224a986040518163ffffffff1660e01b815260040160206040518083038186803b1580156118e557600080fd5b505afa1580156118f9573d6000803e3d6000fd5b505050506040513d602081101561190f57600080fd5b8101908080519060200190929190505050811415611b71576000611934898989613efc565b90508873ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f91b4005f248ece53c5402f0c547c6a472d18676fbb0e2e15029d4869140cbe2089896040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156119cd5780820151818401526020810190506119b2565b50505050905090810190601f1680156119fa5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a38873ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f044513e921a12ac6560730ac3063f7946fdcb715deb39bc6f84c38be8083648a89896040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611a9f578082015181840152602081019050611a84565b50505050905090810190601f168015611acc5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635035b622866040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b505050508093505050611b78565b5b60019250505b5095945050505050565b6040518060400160405280600681526020017f427269646765000000000000000000000000000000000000000000000000000081525081565b6000600454905090565b600560009054906101000a900460ff16611c47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611cea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f77726f6e6720616464726573730000000000000000000000000000000000000081525060200191505060405180910390fd5b6000611cf7848484614602565b90508015611eb8576000846040516020018082805190602001908083835b60208310611d385780518252602082019150602081019050602083039250611d15565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012090507f397bc5b97f629151e68146caedba62f10b47e426b38db589771a288c0861f18260001b811415611de65782600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611eb6565b7fe41d88711b08bdcd7556c5d2d24e0da6fa1f614cf2055f4d7e10206017cd168060001b811415611eb557600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b0d80346846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015611e9c57600080fd5b505af1158015611eb0573d6000803e3d6000fd5b505050505b5b505b50505050565b611eeb7f0cc58340b26c619cd4edc70f833d3f4d9d26f3ae7d5ef2965f81fe5495049a4f60001b33613e31565b611f5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f77726f6e6720706175736572000000000000000000000000000000000000000081525060200191505060405180910390fd5b611f656148e9565b565b6000611f967f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060001b33613e31565b612008576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f6e6c7920757365206f776e657220746f2063616c6c0000000000000000000081525060200191505060405180910390fd5b612011826149dc565b7f468b360fa155a4c5fdf0cb38ce238407e41508a56023e7536088c21b2cd64139826040518082815260200191505060405180910390a160019050919050565b6000600560009054906101000a900460ff16905090565b6120957f0cc58340b26c619cd4edc70f833d3f4d9d26f3ae7d5ef2965f81fe5495049a4f60001b33613e31565b612107576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f77726f6e6720706175736572000000000000000000000000000000000000000081525060200191505060405180910390fd5b61210f614a15565b565b3373ffffffffffffffffffffffffffffffffffffffff167f219295438b17c92dbc62ee9b1874dc1a25cf55368e13d34d65325217d4acbafe348484604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561219657808201518184015260208101905061217b565b50505050905090810190601f1680156121c35780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156121fc5780820151818401526020810190506121e1565b50505050905090810190601f1680156122295780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a25050565b600061226c7f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060001b33613e31565b6122de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f6e6c7920757365206f776e657220746f2063616c6c0000000000000000000081525060200191505060405180910390fd5b60006122e984614b09565b90507fe41d88711b08bdcd7556c5d2d24e0da6fa1f614cf2055f4d7e10206017cd168060001b811415801561234157507f397bc5b97f629151e68146caedba62f10b47e426b38db589771a288c0861f18260001b8114155b6123b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f77726f6e6720636c61737300000000000000000000000000000000000000000081525060200191505060405180910390fd5b6123bd8184613e31565b61242f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6e6f20737563682061646472657373206578697374000000000000000000000081525060200191505060405180910390fd5b7f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060001b8114156124da5760035461246682614c04565b116124d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e7375666669656e636520616464726573736573000000000000000000000081525060200191505060405180910390fd5b5b6000848460405160200180807f64726f7041646472657373000000000000000000000000000000000000000000815250600b0183805190602001908083835b6020831061253c5780518252602082019150602081019050602083039250612519565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1660601b8152601401925050506040516020818303038152906040528051906020012090506125a38133614c27565b6003546125af82614c04565b106126e3576125be8285614daf565b7fb02ddf2800cd4468f7eb14268a7c9f1b6e816aa425ed542d13d8d3a96fa445668585866040518080602001806020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381038352600b8152602001807f64726f7041646472657373000000000000000000000000000000000000000000815250602001838103825286818151815260200191508051906020019080838360005b83811015612692578082015181840152602081019050612677565b50505050905090810190601f1680156126bf5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a16126d8816149dc565b6001925050506126ea565b6000925050505b92915050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b07ed3a96040518163ffffffff1660e01b815260040160206040518083038186803b15801561278457600080fd5b505afa158015612798573d6000803e3d6000fd5b505050506040513d60208110156127ae57600080fd5b8101908080519060200190929190505050905090565b606060006127d183614b09565b90506127dc81614f8f565b915050919050565b6128117f46a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f62260001b33613e31565b612883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f77726f6e67206f70657261746f7200000000000000000000000000000000000081525060200191505060405180910390fd5b6040518060400160405280838152602001821515815250600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000190805190602001906128f59291906158dc565b5060208201518160010160006101000a81548160ff021916908315150217905550905050505050565b6007602052806000526040600020600091509050806000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129ca5780601f1061299f576101008083540402835291602001916129ca565b820191906000526020600020905b8154815290600101906020018083116129ad57829003601f168201915b5050505050908060010160009054906101000a900460ff16905082565b6000612a167f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060001b33613e31565b612a88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f6e6c7920757365206f776e657220746f2063616c6c0000000000000000000081525060200191505060405180910390fd5b6000612a9384614b09565b90507fe41d88711b08bdcd7556c5d2d24e0da6fa1f614cf2055f4d7e10206017cd168060001b8114158015612aeb57507f397bc5b97f629151e68146caedba62f10b47e426b38db589771a288c0861f18260001b8114155b612b5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f77726f6e6720636c61737300000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000848460405160200180807f6164644164647265737300000000000000000000000000000000000000000000815250600a0183805190602001908083835b60208310612bbf5780518252602082019150602081019050602083039250612b9c565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001209050612c268133614c27565b600354612c3282614c04565b10612d6657612c418285614c27565b7fb02ddf2800cd4468f7eb14268a7c9f1b6e816aa425ed542d13d8d3a96fa445668585866040518080602001806020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381038352600a8152602001807f6164644164647265737300000000000000000000000000000000000000000000815250602001838103825286818151815260200191508051906020019080838360005b83811015612d15578082015181840152602081019050612cfa565b50505050905090810190601f168015612d425780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1612d5b816149dc565b600192505050612d6d565b6000925050505b92915050565b6000612da27f46a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f62260001b33613e31565b612e14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f77726f6e67206f70657261746f7200000000000000000000000000000000000081525060200191505060405180910390fd5b600560009054906101000a900460ff1615612e97576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b8360008111612f0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f76616c7565206e656564203e203000000000000000000000000000000000000081525060200191505060405180910390fd5b84471015612f84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6e6f7420656e6f756768206e617469766520746f6b656e00000000000000000081525060200191505060405180910390fd5b858585604051602001808473ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182805190602001908083835b60208310612fe25780518252602082019150602081019050602083039250612fbf565b6001836020036101000a0380198251168184511680821785525050505050509050019350505050604051602081830303815290604052805190602001208314613093576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f7461736b486173682069732077726f6e6700000000000000000000000000000081525060200191505060405180910390fd5b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ae0fd47f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663478538026040518163ffffffff1660e01b815260040160206040518083038186803b15801561313b57600080fd5b505afa15801561314f573d6000803e3d6000fd5b505050506040513d602081101561316557600080fd5b810190808051906020019092919050505086336004546040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050602060405180830381600087803b1580156131dc57600080fd5b505af11580156131f0573d6000803e3d6000fd5b505050506040513d602081101561320657600080fd5b81019080805190602001909291905050509050600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663afd464f26040518163ffffffff1660e01b815260040160206040518083038186803b15801561328157600080fd5b505afa158015613295573d6000803e3d6000fd5b505050506040513d60208110156132ab57600080fd5b8101908080519060200190929190505050811415613383578673ffffffffffffffffffffffffffffffffffffffff167f85c53e7e269cd44a12210170eb2636cdc0d111b93e101a211305e0144733995587876040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613343578082015181840152602081019050613328565b50505050905090810190601f1680156133705780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2613679565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166310224a986040518163ffffffff1660e01b815260040160206040518083038186803b1580156133eb57600080fd5b505afa1580156133ff573d6000803e3d6000fd5b505050506040513d602081101561341557600080fd5b8101908080519060200190929190505050811415613678578673ffffffffffffffffffffffffffffffffffffffff167f85c53e7e269cd44a12210170eb2636cdc0d111b93e101a211305e0144733995587876040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156134ad578082015181840152602081019050613492565b50505050905090810190601f1680156134da5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a28673ffffffffffffffffffffffffffffffffffffffff167fd8ff38332185c42ca14ded5671b8eb2842095abf024f6900cb42760ccb438f3387876040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561356857808201518184015260208101905061354d565b50505050905090810190601f1680156135955780820380516001836020036101000a031916815260200191505b50935050505060405180910390a28673ffffffffffffffffffffffffffffffffffffffff166108fc879081150290604051600060405180830381858888f193505050501580156135e9573d6000803e3d6000fd5b50600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635035b622856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561365f57600080fd5b505af1158015613673573d6000803e3d6000fd5b505050505b5b600192505050949350505050565b600080613695863387615033565b90508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f63333d9ba80d323ed3a2c486809215e8f1fb8c645691606b862787fad572c1c787878734604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561373a57808201518184015260208101905061371f565b50505050905090810190601f1680156137675780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b838110156137a0578082015181840152602081019050613785565b50505050905090810190601f1680156137cd5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a380915050949350505050565b6000600354905090565b60006138237f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060001b33613e31565b613895576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f6e6c7920757365206f776e657220746f2063616c6c0000000000000000000081525060200191505060405180910390fd5b60006138a084614b09565b90507f46a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f62260001b8114806138f557507f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060001b81145b613967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f77726f6e6720636c61737300000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000848460405160200180807f726573657452657175697265644e756d0000000000000000000000000000000081525060100183805190602001908083835b602083106139c957805182526020820191506020810190506020830392506139a6565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200192505050604051602081830303815290604052805190602001209050613a178133614c27565b600354613a2382614c04565b10613c0157613a31816149dc565b60007f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060001b831415613a6f57600354905084600381905550613b1a565b7f46a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f62260001b831415613aab57600454905084600481905550613b19565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f77726f6e6720636c61737300000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b7fce49fc04234925e87b95750e0e50cac6d4ffcf8a696e3316b3e13bedc84ee7a8868287604051808060200180602001858152602001848152602001838103835260108152602001807f726573657452657175697265644e756d00000000000000000000000000000000815250602001838103825286818151815260200191508051906020019080838360005b83811015613bc2578082015181840152602081019050613ba7565b50505050905090810190601f168015613bef5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505b60019250505092915050565b613c3a7f0cc58340b26c619cd4edc70f833d3f4d9d26f3ae7d5ef2965f81fe5495049a4f60001b33613e31565b613cac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f77726f6e6720706175736572000000000000000000000000000000000000000081525060200191505060405180910390fd5b600083905060008173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613d2457600080fd5b505af1158015613d38573d6000803e3d6000fd5b505050506040513d6020811015613d4e57600080fd5b810190808051906020019092919050505090505050505050565b6006602052806000526040600020600091509050806000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613e145780601f10613de957610100808354040283529160200191613e14565b820191906000526020600020905b815481529060010190602001808311613df757829003601f168201915b5050505050908060010160009054906101000a900460ff16905082565b600080600090505b6001600085815260200190815260200160002060020180549050811015613ef0578273ffffffffffffffffffffffffffffffffffffffff16600160008681526020019081526020016000206002018281548110613e9257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613ee3576001915050613ef6565b8080600101915050613e39565b50600090505b92915050565b6000806000905060606000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180546001816001161561010002031660029004905014156140cf578573ffffffffffffffffffffffffffffffffffffffff168585604051602401808373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061405a5780518252602082019150602081019050602083039250614037565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146140bc576040519150601f19603f3d011682016040523d82523d6000602084013e6140c1565b606091505b508092508193505050614548565b6140d761596a565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806040016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156141ba5780601f1061418f576101008083540402835291602001916141ba565b820191906000526020600020905b81548152906001019060200180831161419d57829003601f168201915b505050505081526020016001820160009054906101000a900460ff161515151581525050905080602001511561439a578673ffffffffffffffffffffffffffffffffffffffff1681600001518688604051602401808381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050604051602081830303815290604052906040518082805190602001908083835b602083106142785780518252602082019150602081019050602083039250614255565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106143255780518252602082019150602081019050602083039250614302565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614387576040519150601f19603f3d011682016040523d82523d6000602084013e61438c565b606091505b508093508194505050614546565b8673ffffffffffffffffffffffffffffffffffffffff1681600001518787604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052906040518082805190602001908083835b602083106144285780518252602082019150602081019050602083039250614405565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106144d557805182526020820191506020810190506020830392506144b2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614537576040519150601f19603f3d011682016040523d82523d6000602084013e61453c565b606091505b5080935081945050505b505b8180156145835750600081511480614582575080806020019051602081101561457057600080fd5b81019080805190602001909291905050505b5b6145f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7769746864726177206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b6001925050509392505050565b60006146317f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060001b33613e31565b6146a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f6e6c7920757365206f776e657220746f2063616c6c0000000000000000000081525060200191505060405180910390fd5b60006146ae85614b09565b9050600085858560405160200180807f6d6f646966794164647265737300000000000000000000000000000000000000815250600d0184805190602001908083835b6020831061471357805182526020820191506020810190506020830392506146f0565b6001836020036101000a0380198251168184511680821785525050505050509050018373ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1660601b8152601401935050505060405160208183030381529060405280519060200120905061479a8133614c27565b6003546147a682614c04565b106148db576147b6828686615757565b7fb02ddf2800cd4468f7eb14268a7c9f1b6e816aa425ed542d13d8d3a96fa445668686866040518080602001806020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381038352600d8152602001807f6d6f646966794164647265737300000000000000000000000000000000000000815250602001838103825286818151815260200191508051906020019080838360005b8381101561488a57808201518184015260208101905061486f565b50505050905090810190601f1680156148b75780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a16148d0816149dc565b6001925050506148e2565b6000925050505b9392505050565b600560009054906101000a900460ff1661496b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6149af61587e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600160008281526020019081526020016000206000808201600090556001820160009055600282016000614a109190615986565b505050565b600560009054906101000a900460ff1615614a98576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258614adc61587e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600080826040516020018082805190602001908083835b60208310614b435780518252602082019150602081019050602083039250614b20565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001209050614b8981615886565b614bfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f696e76616c696420636c6173730000000000000000000000000000000000000081525060200191505060405180910390fd5b80915050919050565b600060016000838152602001908152602001600020600201805490509050919050565b614c318282613e31565b15614ca4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f647570206164647265737320616464656400000000000000000000000000000081525060200191505060405180910390fd5b600054600160008481526020019081526020016000206002018054905010614d34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f746f6f206d616e7920616464726573736573000000000000000000000000000081525060200191505060405180910390fd5b60016000838152602001908152602001600020600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60005b6001600084815260200190815260200160002060020180549050811015614f89578173ffffffffffffffffffffffffffffffffffffffff16600160008581526020019081526020016000206002018281548110614e0b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415614f7c57600160008481526020019081526020016000206002016001806000868152602001908152602001600020600201805490500381548110614e8e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008581526020019081526020016000206002018281548110614eda57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016000848152602001908152602001600020600201805480614f4157fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550614f8b565b8080600101915050614db2565b505b5050565b60606001600083815260200190815260200160002060020180548060200260200160405190810160405280929190818152602001828054801561502757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311614fdd575b50505050509050919050565b6000806000905060606000600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054600181600116156101000203166002900490501415615224578573ffffffffffffffffffffffffffffffffffffffff16853086604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506040516020818303038152906040527f23b872dd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106151af578051825260208201915060208101905060208303925061518c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114615211576040519150601f19603f3d011682016040523d82523d6000602084013e615216565b606091505b50809250819350505061569d565b61522c61596a565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806040016040529081600082018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561530f5780601f106152e45761010080835404028352916020019161530f565b820191906000526020600020905b8154815290600101906020018083116152f257829003601f168201915b505050505081526020016001820160009054906101000a900460ff16151515158152505090508060200151156154ef578673ffffffffffffffffffffffffffffffffffffffff1681600001518688604051602401808381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050604051602081830303815290604052906040518082805190602001908083835b602083106153cd57805182526020820191506020810190506020830392506153aa565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061547a5780518252602082019150602081019050602083039250615457565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146154dc576040519150601f19603f3d011682016040523d82523d6000602084013e6154e1565b606091505b50809350819450505061569b565b8673ffffffffffffffffffffffffffffffffffffffff1681600001518787604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052906040518082805190602001908083835b6020831061557d578051825260208201915060208101905060208303925061555a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061562a5780518252602082019150602081019050602083039250615607565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461568c576040519150601f19603f3d011682016040523d82523d6000602084013e615691565b606091505b5080935081945050505b505b8180156156d857506000815114806156d757508080602001905160208110156156c557600080fd5b81019080805190602001909291905050505b5b61574a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f207472616e73666572206661696c65640000000000000000000000000000000081525060200191505060405180910390fd5b6001925050509392505050565b60005b6001600085815260200190815260200160002060020180549050811015615877578273ffffffffffffffffffffffffffffffffffffffff166001600086815260200190815260200160002060020182815481106157b357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561586a578160016000868152602001908152602001600020600201828154811061581c57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050615879565b808060010191505061575a565b505b505050565b600033905090565b600080600090505b6002805490508110156158d15782600282815481106158a957fe5b906000526020600020015414156158c45760019150506158d7565b808060010191505061588e565b50600090505b919050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826159125760008555615959565b82601f1061592b57805160ff1916838001178555615959565b82800160010185558215615959579182015b8281111561595857825182559160200191906001019061593d565b5b50905061596691906159a7565b5090565b6040518060400160405280606081526020016000151581525090565b50805460008255906000526020600020908101906159a491906159a7565b50565b5b808211156159c05760008160009055506001016159a8565b509056fea2646970667358221220175fd30761d46f49bdd013683f3d26a07b057927b3f48644cc55d126254c071864736f6c63430007040033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000d2b75596a63728d84d341f2e3ce6ddae66810128Deployed Bytecode
0x60806040526004361061013f5760003560e01c8063abd108ba116100b6578063d5b99d3c1161006f578063d5b99d3c14610c8d578063dd9b86c114610d9f578063e6a81ec414610f31578063e9e211bd14610f5c578063f5537ede14611044578063f60c757f146110bf5761013f565b8063abd108ba14610829578063b07ed3a91461086a578063c8e369bf146108ab578063c8fd90f9146109c8578063cb08e3ca14610abc578063ceb35b0f14610b8f5761013f565b80633f4ba83a116101085780633f4ba83a1461052d578063521cb590146105445780635c975abb146105955780638456cb59146105c25780638609d28c146105d957806391c40bf71461072b5761013f565b8062674f631461014457806302c1927c1461023857806306fdde031461036a5780631d75807c146103fa5780632c2df74214610425575b600080fd5b34801561015057600080fd5b506102366004803603606081101561016757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156101a457600080fd5b8201836020820111156101b657600080fd5b803590602001918460018302840111640100000000831117156101d857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803515159060200190929190505050611192565b005b34801561024457600080fd5b50610352600480360360a081101561025b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156102c257600080fd5b8201836020820111156102d457600080fd5b803590602001918460018302840111640100000000831117156102f657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291905050506112cc565b60405180821515815260200191505060405180910390f35b34801561037657600080fd5b5061037f611b82565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bf5780820151818401526020810190506103a4565b50505050905090810190601f1680156103ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040657600080fd5b5061040f611bbb565b6040518082815260200191505060405180910390f35b34801561043157600080fd5b5061052b6004803603606081101561044857600080fd5b810190808035906020019064010000000081111561046557600080fd5b82018360208201111561047757600080fd5b8035906020019184600183028401116401000000008311171561049957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bc5565b005b34801561053957600080fd5b50610542611ebe565b005b34801561055057600080fd5b5061057d6004803603602081101561056757600080fd5b8101908080359060200190929190505050611f67565b60405180821515815260200191505060405180910390f35b3480156105a157600080fd5b506105aa612051565b60405180821515815260200191505060405180910390f35b3480156105ce57600080fd5b506105d7612068565b005b610729600480360360408110156105ef57600080fd5b810190808035906020019064010000000081111561060c57600080fd5b82018360208201111561061e57600080fd5b8035906020019184600183028401116401000000008311171561064057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156106a357600080fd5b8201836020820111156106b557600080fd5b803590602001918460018302840111640100000000831117156106d757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612111565b005b34801561073757600080fd5b506108116004803603604081101561074e57600080fd5b810190808035906020019064010000000081111561076b57600080fd5b82018360208201111561077d57600080fd5b8035906020019184600183028401116401000000008311171561079f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061223d565b60405180821515815260200191505060405180910390f35b34801561083557600080fd5b5061083e6126f0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561087657600080fd5b5061087f61271a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108b757600080fd5b50610971600480360360208110156108ce57600080fd5b81019080803590602001906401000000008111156108eb57600080fd5b8201836020820111156108fd57600080fd5b8035906020019184600183028401116401000000008311171561091f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506127c4565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156109b4578082015181840152602081019050610999565b505050509050019250505060405180910390f35b3480156109d457600080fd5b50610aba600480360360608110156109eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610a2857600080fd5b820183602082011115610a3a57600080fd5b80359060200191846001830284011164010000000083111715610a5c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035151590602001909291905050506127e4565b005b348015610ac857600080fd5b50610b0b60048036036020811015610adf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061291e565b60405180806020018315158152602001828103825284818151815260200191508051906020019080838360005b83811015610b53578082015181840152602081019050610b38565b50505050905090810190601f168015610b805780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b348015610b9b57600080fd5b50610c7560048036036040811015610bb257600080fd5b8101908080359060200190640100000000811115610bcf57600080fd5b820183602082011115610be157600080fd5b80359060200191846001830284011164010000000083111715610c0357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129e7565b60405180821515815260200191505060405180910390f35b348015610c9957600080fd5b50610d8760048036036080811015610cb057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610cf757600080fd5b820183602082011115610d0957600080fd5b80359060200191846001830284011164010000000083111715610d2b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050612d73565b60405180821515815260200191505060405180910390f35b610f1960048036036080811015610db557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610dfc57600080fd5b820183602082011115610e0e57600080fd5b80359060200191846001830284011164010000000083111715610e3057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610e9357600080fd5b820183602082011115610ea557600080fd5b80359060200191846001830284011164010000000083111715610ec757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050613687565b60405180821515815260200191505060405180910390f35b348015610f3d57600080fd5b50610f466137ea565b6040518082815260200191505060405180910390f35b348015610f6857600080fd5b5061102c60048036036040811015610f7f57600080fd5b8101908080359060200190640100000000811115610f9c57600080fd5b820183602082011115610fae57600080fd5b80359060200191846001830284011164010000000083111715610fd057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291905050506137f4565b60405180821515815260200191505060405180910390f35b34801561105057600080fd5b506110bd6004803603606081101561106757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613c0d565b005b3480156110cb57600080fd5b5061110e600480360360208110156110e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613d68565b60405180806020018315158152602001828103825284818151815260200191508051906020019080838360005b8381101561115657808201518184015260208101905061113b565b50505050905090810190601f1680156111835780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6111bf7f46a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f62260001b33613e31565b611231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f77726f6e67206f70657261746f7200000000000000000000000000000000000081525060200191505060405180910390fd5b6040518060400160405280838152602001821515815250600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000190805190602001906112a39291906158dc565b5060208201518160010160006101000a81548160ff021916908315150217905550905050505050565b60006112fb7f46a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f62260001b33613e31565b61136d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f77726f6e67206f70657261746f7200000000000000000000000000000000000081525060200191505060405180910390fd5b600560009054906101000a900460ff16156113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b8360008111611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f76616c7565206e656564203e203000000000000000000000000000000000000081525060200191505060405180910390fd5b858585604051602001808473ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182805190602001908083835b602083106114c557805182526020820191506020810190506020830392506114a2565b6001836020036101000a0380198251168184511680821785525050505050509050019350505050604051602081830303815290604052805190602001208314611576576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f7461736b486173682069732077726f6e6700000000000000000000000000000081525060200191505060405180910390fd5b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ae0fd47f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663478538026040518163ffffffff1660e01b815260040160206040518083038186803b15801561161e57600080fd5b505afa158015611632573d6000803e3d6000fd5b505050506040513d602081101561164857600080fd5b810190808051906020019092919050505086336004546040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050602060405180830381600087803b1580156116bf57600080fd5b505af11580156116d3573d6000803e3d6000fd5b505050506040513d60208110156116e957600080fd5b81019080805190602001909291905050509050600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663afd464f26040518163ffffffff1660e01b815260040160206040518083038186803b15801561176457600080fd5b505afa158015611778573d6000803e3d6000fd5b505050506040513d602081101561178e57600080fd5b810190808051906020019092919050505081141561187d578773ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f91b4005f248ece53c5402f0c547c6a472d18676fbb0e2e15029d4869140cbe2088886040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561183d578082015181840152602081019050611822565b50505050905090810190601f16801561186a5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3611b72565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166310224a986040518163ffffffff1660e01b815260040160206040518083038186803b1580156118e557600080fd5b505afa1580156118f9573d6000803e3d6000fd5b505050506040513d602081101561190f57600080fd5b8101908080519060200190929190505050811415611b71576000611934898989613efc565b90508873ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f91b4005f248ece53c5402f0c547c6a472d18676fbb0e2e15029d4869140cbe2089896040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156119cd5780820151818401526020810190506119b2565b50505050905090810190601f1680156119fa5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a38873ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f044513e921a12ac6560730ac3063f7946fdcb715deb39bc6f84c38be8083648a89896040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611a9f578082015181840152602081019050611a84565b50505050905090810190601f168015611acc5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635035b622866040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611b4f57600080fd5b505af1158015611b63573d6000803e3d6000fd5b505050508093505050611b78565b5b60019250505b5095945050505050565b6040518060400160405280600681526020017f427269646765000000000000000000000000000000000000000000000000000081525081565b6000600454905090565b600560009054906101000a900460ff16611c47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611cea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f77726f6e6720616464726573730000000000000000000000000000000000000081525060200191505060405180910390fd5b6000611cf7848484614602565b90508015611eb8576000846040516020018082805190602001908083835b60208310611d385780518252602082019150602081019050602083039250611d15565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012090507f397bc5b97f629151e68146caedba62f10b47e426b38db589771a288c0861f18260001b811415611de65782600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611eb6565b7fe41d88711b08bdcd7556c5d2d24e0da6fa1f614cf2055f4d7e10206017cd168060001b811415611eb557600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b0d80346846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015611e9c57600080fd5b505af1158015611eb0573d6000803e3d6000fd5b505050505b5b505b50505050565b611eeb7f0cc58340b26c619cd4edc70f833d3f4d9d26f3ae7d5ef2965f81fe5495049a4f60001b33613e31565b611f5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f77726f6e6720706175736572000000000000000000000000000000000000000081525060200191505060405180910390fd5b611f656148e9565b565b6000611f967f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060001b33613e31565b612008576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f6e6c7920757365206f776e657220746f2063616c6c0000000000000000000081525060200191505060405180910390fd5b612011826149dc565b7f468b360fa155a4c5fdf0cb38ce238407e41508a56023e7536088c21b2cd64139826040518082815260200191505060405180910390a160019050919050565b6000600560009054906101000a900460ff16905090565b6120957f0cc58340b26c619cd4edc70f833d3f4d9d26f3ae7d5ef2965f81fe5495049a4f60001b33613e31565b612107576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f77726f6e6720706175736572000000000000000000000000000000000000000081525060200191505060405180910390fd5b61210f614a15565b565b3373ffffffffffffffffffffffffffffffffffffffff167f219295438b17c92dbc62ee9b1874dc1a25cf55368e13d34d65325217d4acbafe348484604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561219657808201518184015260208101905061217b565b50505050905090810190601f1680156121c35780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156121fc5780820151818401526020810190506121e1565b50505050905090810190601f1680156122295780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a25050565b600061226c7f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060001b33613e31565b6122de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f6e6c7920757365206f776e657220746f2063616c6c0000000000000000000081525060200191505060405180910390fd5b60006122e984614b09565b90507fe41d88711b08bdcd7556c5d2d24e0da6fa1f614cf2055f4d7e10206017cd168060001b811415801561234157507f397bc5b97f629151e68146caedba62f10b47e426b38db589771a288c0861f18260001b8114155b6123b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f77726f6e6720636c61737300000000000000000000000000000000000000000081525060200191505060405180910390fd5b6123bd8184613e31565b61242f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6e6f20737563682061646472657373206578697374000000000000000000000081525060200191505060405180910390fd5b7f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060001b8114156124da5760035461246682614c04565b116124d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f696e7375666669656e636520616464726573736573000000000000000000000081525060200191505060405180910390fd5b5b6000848460405160200180807f64726f7041646472657373000000000000000000000000000000000000000000815250600b0183805190602001908083835b6020831061253c5780518252602082019150602081019050602083039250612519565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1660601b8152601401925050506040516020818303038152906040528051906020012090506125a38133614c27565b6003546125af82614c04565b106126e3576125be8285614daf565b7fb02ddf2800cd4468f7eb14268a7c9f1b6e816aa425ed542d13d8d3a96fa445668585866040518080602001806020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381038352600b8152602001807f64726f7041646472657373000000000000000000000000000000000000000000815250602001838103825286818151815260200191508051906020019080838360005b83811015612692578082015181840152602081019050612677565b50505050905090810190601f1680156126bf5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a16126d8816149dc565b6001925050506126ea565b6000925050505b92915050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b07ed3a96040518163ffffffff1660e01b815260040160206040518083038186803b15801561278457600080fd5b505afa158015612798573d6000803e3d6000fd5b505050506040513d60208110156127ae57600080fd5b8101908080519060200190929190505050905090565b606060006127d183614b09565b90506127dc81614f8f565b915050919050565b6128117f46a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f62260001b33613e31565b612883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f77726f6e67206f70657261746f7200000000000000000000000000000000000081525060200191505060405180910390fd5b6040518060400160405280838152602001821515815250600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000190805190602001906128f59291906158dc565b5060208201518160010160006101000a81548160ff021916908315150217905550905050505050565b6007602052806000526040600020600091509050806000018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129ca5780601f1061299f576101008083540402835291602001916129ca565b820191906000526020600020905b8154815290600101906020018083116129ad57829003601f168201915b5050505050908060010160009054906101000a900460ff16905082565b6000612a167f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060001b33613e31565b612a88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f6e6c7920757365206f776e657220746f2063616c6c0000000000000000000081525060200191505060405180910390fd5b6000612a9384614b09565b90507fe41d88711b08bdcd7556c5d2d24e0da6fa1f614cf2055f4d7e10206017cd168060001b8114158015612aeb57507f397bc5b97f629151e68146caedba62f10b47e426b38db589771a288c0861f18260001b8114155b612b5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f77726f6e6720636c61737300000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000848460405160200180807f6164644164647265737300000000000000000000000000000000000000000000815250600a0183805190602001908083835b60208310612bbf5780518252602082019150602081019050602083039250612b9c565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001209050612c268133614c27565b600354612c3282614c04565b10612d6657612c418285614c27565b7fb02ddf2800cd4468f7eb14268a7c9f1b6e816aa425ed542d13d8d3a96fa445668585866040518080602001806020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381038352600a8152602001807f6164644164647265737300000000000000000000000000000000000000000000815250602001838103825286818151815260200191508051906020019080838360005b83811015612d15578082015181840152602081019050612cfa565b50505050905090810190601f168015612d425780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1612d5b816149dc565b600192505050612d6d565b6000925050505b92915050565b6000612da27f46a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f62260001b33613e31565b612e14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f77726f6e67206f70657261746f7200000000000000000000000000000000000081525060200191505060405180910390fd5b600560009054906101000a900460ff1615612e97576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b8360008111612f0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f76616c7565206e656564203e203000000000000000000000000000000000000081525060200191505060405180910390fd5b84471015612f84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6e6f7420656e6f756768206e617469766520746f6b656e00000000000000000081525060200191505060405180910390fd5b858585604051602001808473ffffffffffffffffffffffffffffffffffffffff1660601b815260140183815260200182805190602001908083835b60208310612fe25780518252602082019150602081019050602083039250612fbf565b6001836020036101000a0380198251168184511680821785525050505050509050019350505050604051602081830303815290604052805190602001208314613093576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f7461736b486173682069732077726f6e6700000000000000000000000000000081525060200191505060405180910390fd5b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ae0fd47f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663478538026040518163ffffffff1660e01b815260040160206040518083038186803b15801561313b57600080fd5b505afa15801561314f573d6000803e3d6000fd5b505050506040513d602081101561316557600080fd5b810190808051906020019092919050505086336004546040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050602060405180830381600087803b1580156131dc57600080fd5b505af11580156131f0573d6000803e3d6000fd5b505050506040513d602081101561320657600080fd5b81019080805190602001909291905050509050600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663afd464f26040518163ffffffff1660e01b815260040160206040518083038186803b15801561328157600080fd5b505afa158015613295573d6000803e3d6000fd5b505050506040513d60208110156132ab57600080fd5b8101908080519060200190929190505050811415613383578673ffffffffffffffffffffffffffffffffffffffff167f85c53e7e269cd44a12210170eb2636cdc0d111b93e101a211305e0144733995587876040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613343578082015181840152602081019050613328565b50505050905090810190601f1680156133705780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2613679565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166310224a986040518163ffffffff1660e01b815260040160206040518083038186803b1580156133eb57600080fd5b505afa1580156133ff573d6000803e3d6000fd5b505050506040513d602081101561341557600080fd5b8101908080519060200190929190505050811415613678578673ffffffffffffffffffffffffffffffffffffffff167f85c53e7e269cd44a12210170eb2636cdc0d111b93e101a211305e0144733995587876040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156134ad578082015181840152602081019050613492565b50505050905090810190601f1680156134da5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a28673ffffffffffffffffffffffffffffffffffffffff167fd8ff38332185c42ca14ded5671b8eb2842095abf024f6900cb42760ccb438f3387876040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561356857808201518184015260208101905061354d565b50505050905090810190601f1680156135955780820380516001836020036101000a031916815260200191505b50935050505060405180910390a28673ffffffffffffffffffffffffffffffffffffffff166108fc879081150290604051600060405180830381858888f193505050501580156135e9573d6000803e3d6000fd5b50600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635035b622856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561365f57600080fd5b505af1158015613673573d6000803e3d6000fd5b505050505b5b600192505050949350505050565b600080613695863387615033565b90508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f63333d9ba80d323ed3a2c486809215e8f1fb8c645691606b862787fad572c1c787878734604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561373a57808201518184015260208101905061371f565b50505050905090810190601f1680156137675780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b838110156137a0578082015181840152602081019050613785565b50505050905090810190601f1680156137cd5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a380915050949350505050565b6000600354905090565b60006138237f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060001b33613e31565b613895576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f6e6c7920757365206f776e657220746f2063616c6c0000000000000000000081525060200191505060405180910390fd5b60006138a084614b09565b90507f46a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f62260001b8114806138f557507f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060001b81145b613967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f77726f6e6720636c61737300000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000848460405160200180807f726573657452657175697265644e756d0000000000000000000000000000000081525060100183805190602001908083835b602083106139c957805182526020820191506020810190506020830392506139a6565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200192505050604051602081830303815290604052805190602001209050613a178133614c27565b600354613a2382614c04565b10613c0157613a31816149dc565b60007f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060001b831415613a6f57600354905084600381905550613b1a565b7f46a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f62260001b831415613aab57600454905084600481905550613b19565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f77726f6e6720636c61737300000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b7fce49fc04234925e87b95750e0e50cac6d4ffcf8a696e3316b3e13bedc84ee7a8868287604051808060200180602001858152602001848152602001838103835260108152602001807f726573657452657175697265644e756d00000000000000000000000000000000815250602001838103825286818151815260200191508051906020019080838360005b83811015613bc2578082015181840152602081019050613ba7565b50505050905090810190601f168015613bef5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505b60019250505092915050565b613c3a7f0cc58340b26c619cd4edc70f833d3f4d9d26f3ae7d5ef2965f81fe5495049a4f60001b33613e31565b613cac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f77726f6e6720706175736572000000000000000000000000000000000000000081525060200191505060405180910390fd5b600083905060008173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613d2457600080fd5b505af1158015613d38573d6000803e3d6000fd5b505050506040513d6020811015613d4e57600080fd5b810190808051906020019092919050505090505050505050565b6006602052806000526040600020600091509050806000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613e145780601f10613de957610100808354040283529160200191613e14565b820191906000526020600020905b815481529060010190602001808311613df757829003601f168201915b5050505050908060010160009054906101000a900460ff16905082565b600080600090505b6001600085815260200190815260200160002060020180549050811015613ef0578273ffffffffffffffffffffffffffffffffffffffff16600160008681526020019081526020016000206002018281548110613e9257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613ee3576001915050613ef6565b8080600101915050613e39565b50600090505b92915050565b6000806000905060606000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180546001816001161561010002031660029004905014156140cf578573ffffffffffffffffffffffffffffffffffffffff168585604051602401808373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061405a5780518252602082019150602081019050602083039250614037565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146140bc576040519150601f19603f3d011682016040523d82523d6000602084013e6140c1565b606091505b508092508193505050614548565b6140d761596a565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806040016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156141ba5780601f1061418f576101008083540402835291602001916141ba565b820191906000526020600020905b81548152906001019060200180831161419d57829003601f168201915b505050505081526020016001820160009054906101000a900460ff161515151581525050905080602001511561439a578673ffffffffffffffffffffffffffffffffffffffff1681600001518688604051602401808381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050604051602081830303815290604052906040518082805190602001908083835b602083106142785780518252602082019150602081019050602083039250614255565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106143255780518252602082019150602081019050602083039250614302565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614387576040519150601f19603f3d011682016040523d82523d6000602084013e61438c565b606091505b508093508194505050614546565b8673ffffffffffffffffffffffffffffffffffffffff1681600001518787604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052906040518082805190602001908083835b602083106144285780518252602082019150602081019050602083039250614405565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106144d557805182526020820191506020810190506020830392506144b2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614537576040519150601f19603f3d011682016040523d82523d6000602084013e61453c565b606091505b5080935081945050505b505b8180156145835750600081511480614582575080806020019051602081101561457057600080fd5b81019080805190602001909291905050505b5b6145f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f7769746864726177206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b6001925050509392505050565b60006146317f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060001b33613e31565b6146a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f6e6c7920757365206f776e657220746f2063616c6c0000000000000000000081525060200191505060405180910390fd5b60006146ae85614b09565b9050600085858560405160200180807f6d6f646966794164647265737300000000000000000000000000000000000000815250600d0184805190602001908083835b6020831061471357805182526020820191506020810190506020830392506146f0565b6001836020036101000a0380198251168184511680821785525050505050509050018373ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1660601b8152601401935050505060405160208183030381529060405280519060200120905061479a8133614c27565b6003546147a682614c04565b106148db576147b6828686615757565b7fb02ddf2800cd4468f7eb14268a7c9f1b6e816aa425ed542d13d8d3a96fa445668686866040518080602001806020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381038352600d8152602001807f6d6f646966794164647265737300000000000000000000000000000000000000815250602001838103825286818151815260200191508051906020019080838360005b8381101561488a57808201518184015260208101905061486f565b50505050905090810190601f1680156148b75780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a16148d0816149dc565b6001925050506148e2565b6000925050505b9392505050565b600560009054906101000a900460ff1661496b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6149af61587e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600160008281526020019081526020016000206000808201600090556001820160009055600282016000614a109190615986565b505050565b600560009054906101000a900460ff1615614a98576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258614adc61587e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600080826040516020018082805190602001908083835b60208310614b435780518252602082019150602081019050602083039250614b20565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001209050614b8981615886565b614bfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f696e76616c696420636c6173730000000000000000000000000000000000000081525060200191505060405180910390fd5b80915050919050565b600060016000838152602001908152602001600020600201805490509050919050565b614c318282613e31565b15614ca4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f647570206164647265737320616464656400000000000000000000000000000081525060200191505060405180910390fd5b600054600160008481526020019081526020016000206002018054905010614d34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f746f6f206d616e7920616464726573736573000000000000000000000000000081525060200191505060405180910390fd5b60016000838152602001908152602001600020600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60005b6001600084815260200190815260200160002060020180549050811015614f89578173ffffffffffffffffffffffffffffffffffffffff16600160008581526020019081526020016000206002018281548110614e0b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415614f7c57600160008481526020019081526020016000206002016001806000868152602001908152602001600020600201805490500381548110614e8e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008581526020019081526020016000206002018281548110614eda57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016000848152602001908152602001600020600201805480614f4157fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550614f8b565b8080600101915050614db2565b505b5050565b60606001600083815260200190815260200160002060020180548060200260200160405190810160405280929190818152602001828054801561502757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311614fdd575b50505050509050919050565b6000806000905060606000600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054600181600116156101000203166002900490501415615224578573ffffffffffffffffffffffffffffffffffffffff16853086604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506040516020818303038152906040527f23b872dd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106151af578051825260208201915060208101905060208303925061518c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114615211576040519150601f19603f3d011682016040523d82523d6000602084013e615216565b606091505b50809250819350505061569d565b61522c61596a565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806040016040529081600082018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561530f5780601f106152e45761010080835404028352916020019161530f565b820191906000526020600020905b8154815290600101906020018083116152f257829003601f168201915b505050505081526020016001820160009054906101000a900460ff16151515158152505090508060200151156154ef578673ffffffffffffffffffffffffffffffffffffffff1681600001518688604051602401808381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050604051602081830303815290604052906040518082805190602001908083835b602083106153cd57805182526020820191506020810190506020830392506153aa565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061547a5780518252602082019150602081019050602083039250615457565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146154dc576040519150601f19603f3d011682016040523d82523d6000602084013e6154e1565b606091505b50809350819450505061569b565b8673ffffffffffffffffffffffffffffffffffffffff1681600001518787604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052906040518082805190602001908083835b6020831061557d578051825260208201915060208101905060208303925061555a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390207bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061562a5780518252602082019150602081019050602083039250615607565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461568c576040519150601f19603f3d011682016040523d82523d6000602084013e615691565b606091505b5080935081945050505b505b8180156156d857506000815114806156d757508080602001905160208110156156c557600080fd5b81019080805190602001909291905050505b5b61574a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f207472616e73666572206661696c65640000000000000000000000000000000081525060200191505060405180910390fd5b6001925050509392505050565b60005b6001600085815260200190815260200160002060020180549050811015615877578273ffffffffffffffffffffffffffffffffffffffff166001600086815260200190815260200160002060020182815481106157b357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561586a578160016000868152602001908152602001600020600201828154811061581c57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050615879565b808060010191505061575a565b505b505050565b600033905090565b600080600090505b6002805490508110156158d15782600282815481106158a957fe5b906000526020600020015414156158c45760019150506158d7565b808060010191505061588e565b50600090505b919050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826159125760008555615959565b82601f1061592b57805160ff1916838001178555615959565b82800160010185558215615959579182015b8281111561595857825182559160200191906001019061593d565b5b50905061596691906159a7565b5090565b6040518060400160405280606081526020016000151581525090565b50805460008255906000526020600020908101906159a491906159a7565b50565b5b808211156159c05760008160009055506001016159a8565b509056fea2646970667358221220175fd30761d46f49bdd013683f3d26a07b057927b3f48644cc55d126254c071864736f6c63430007040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000d2b75596a63728d84d341f2e3ce6ddae66810128
-----Decoded View---------------
Arg [0] : _owners (address[]): 0xD2B75596A63728D84D341f2E3ce6ddaE66810128
Arg [1] : _ownerRequired (uint256): 1
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [3] : 000000000000000000000000d2b75596a63728d84d341f2e3ce6ddae66810128Deployed Bytecode Sourcemap
24936:7214:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29683:185;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27634:931;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25021:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15251:106;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28573:549;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29413:66;;;;;;;;;;;;;:::i;:::-;;18873:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7585:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29343:62;;;;;;;;;;;;;:::i;:::-;;26203:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17305:891;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29128:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29231:104;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14945:190;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29876:187;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30226:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18204:661;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26774:852;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26383:380;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15143:100;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15365:1046;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29489:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30163:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29683:185;25750:43;12805:66;25768:12;;25782:10;25750:17;:43::i;:::-;25742:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29825:35:::1;;;;;;;;29839:6;29825:35;;;;29846:13;29825:35;;;;::::0;29800:15:::1;:22;29816:5;29800:22;;;;;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29683:185:::0;;;:::o;27634:931::-;27820:4;25750:43;12805:66;25768:12;;25782:10;25750:17;:43::i;:::-;25742:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7903:7:::1;;;;;;;;;;;7902:8;7894:37;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;27799:5:::2;26031:1;26022:6;:10;26014:37;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;27890:2:::3;27893:5;27899;27873:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27862:45;;;;;;27850:8;:57;27842:86;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;27939:14;27956:5;;;;;;;;;;;:17;;;27974:5;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;27996:8;28006:10;28018:18;;27956:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;27939:98;;28064:5;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;28054:6;:32;28050:486;;;28128:6;28107:42;;28124:2;28107:42;;;28136:5;28143;28107:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28050:486;;;28180:5;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;28170:6;:26;28166:370;;;28282:8;28293:38;28313:6;28321:2;28325:5;28293:18;:38::i;:::-;28282:49;;28374:6;28353:42;;28370:2;28353:42;;;28382:5;28389;28353:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28437:6;28415:43;;28433:2;28415:43;;;28445:5;28452;28415:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28473:5;;;;;;;;;;;:16;;;28490:8;28473:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;28521:3;28514:10;;;;;;28166:370;28050:486;28553:4;28546:11;;;26062:1;7942::::2;27634:931:::0;;;;;;;:::o;25021:38::-;;;;;;;;;;;;;;;;;;;:::o;15251:106::-;15305:7;15331:18;;15324:25;;15251:106;:::o;28573:549::-;8179:7;;;;;;;;;;;8171:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28721:3:::1;28699:26;;:10;:26;;;;28691:52;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;28754:9;28766:44;28780:5;28787:10;28799;28766:13;:44::i;:::-;28754:56;;28824:4;28821:294;;;28844:17;28891:5;28874:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28864:34;;;;;;28844:54;;13139:66;28929:9;;28916;:22;28913:191;;;28978:10;28958:5;;:31;;;;;;;;;;;;;;;;;;28913:191;;;13028:66;29026:9;;29013;:22;29010:94;;;29055:5;;;;;;;;;;;:21;;;29077:10;29055:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;29010:94;28913:191;28821:294;;8222:1;28573:549:::0;;;:::o;29413:66::-;25881:41;12917:66;25899:10;;25911;25881:17;:41::i;:::-;25873:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29461:10:::1;:8;:10::i;:::-;29413:66::o:0;18873:170::-;18935:4;13909:40;12691:66;13927:9;;13938:10;13909:17;:40::i;:::-;13901:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18951:20:::1;18962:8;18951:10;:20::i;:::-;18987:26;19004:8;18987:26;;;;;;;;;;;;;;;;;;19031:4;19024:11;;18873:170:::0;;;:::o;7585:78::-;7624:4;7648:7;;;;;;;;;;;7641:14;;7585:78;:::o;29343:62::-;25881:41;12917:66;25899:10;;25911;25881:17;:41::i;:::-;25873:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29389:8:::1;:6;:8::i;:::-;29343:62::o:0;26203:172::-;26323:10;26309:58;;;26335:9;26346:14;26361:5;26309:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26203:172;;:::o;17305:891::-;17393:4;13909:40;12691:66;13927:9;;13938:10;13909:17;:40::i;:::-;13901:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17409:17:::1;17429:19;17442:5;17429:12;:19::i;:::-;17409:39;;13028:66;17480:9;;17467;:22;;:48;;;;;13139:66;17506:9;;17493;:22;;17467:48;17459:72;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17550:40;17568:9;17579:10;17550:17;:40::i;:::-;17542:74;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12691:66;17646:9;;17633;:22;17629:123;;;17711:15;;17678:30;17698:9;17678:19;:30::i;:::-;:48;17670:82;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17629:123;17765:16;17826:5;17833:10;17794:50;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17784:61;;;;;;17765:80;;17856:36;17871:8;17881:10;17856:14;:36::i;:::-;17940:15;;17907:29;17927:8;17907:19;:29::i;:::-;:48;17903:263;;17972:43;17993:9;18004:10;17972:20;:43::i;:::-;18035:58;18063:5;18070:10;18082;18035:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18108:20;18119:8;18108:10;:20::i;:::-;18150:4;18143:11;;;;;;17903:263;18183:5;18176:12;;;;13987:1;17305:891:::0;;;;:::o;29128:95::-;29175:7;29209:5;;;;;;;;;;;29194:21;;29128:95;:::o;29231:104::-;29278:7;29304:5;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29297:30;;29231:104;:::o;14945:190::-;15014:16;15043:17;15063:19;15076:5;15063:12;:19::i;:::-;15043:39;;15100:27;15117:9;15100:16;:27::i;:::-;15093:34;;;14945:190;;;:::o;29876:187::-;25750:43;12805:66;25768:12;;25782:10;25750:17;:43::i;:::-;25742:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30020:35:::1;;;;;;;;30034:6;30020:35;;;;30041:13;30020:35;;;;::::0;29994:16:::1;:23;30011:5;29994:23;;;;;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29876:187:::0;;;:::o;30226:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18204:661::-;18291:4;13909:40;12691:66;13927:9;;13938:10;13909:17;:40::i;:::-;13901:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18307:17:::1;18327:19;18340:5;18327:12;:19::i;:::-;18307:39;;13028:66;18378:9;;18365;:22;;:48;;;;;13139:66;18404:9;;18391;:22;;18365:48;18357:72;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;18442:16;18502:5;18509:10;18471:49;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18461:60;;;;;;18442:79;;18532:36;18547:8;18557:10;18532:14;:36::i;:::-;18616:15;;18583:29;18603:8;18583:19;:29::i;:::-;:48;18579:256;;18648:37;18663:9;18674:10;18648:14;:37::i;:::-;18705:57;18732:5;18739:10;18751;18705:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18777:20;18788:8;18777:10;:20::i;:::-;18819:4;18812:11;;;;;;18579:256;18852:5;18845:12;;;;13987:1;18204:661:::0;;;;:::o;26774:852::-;26952:4;25750:43;12805:66;25768:12;;25782:10;25750:17;:43::i;:::-;25742:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7903:7:::1;;;;;;;;;;;7902:8;7894:37;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;26932:5:::2;26031:1;26022:6;:10;26014:37;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;27007:5:::3;26982:21;:30;;26974:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;27099:2;27102:5;27108;27082:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27071:45;;;;;;27059:8;:57;27051:86;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;27148:14;27165:5;;;;;;;;;;;:17;;;27183:5;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;27205:8;27215:10;27227:18;;27165:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;27148:98;;27273:5;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;27263:6;:32;27259:338;;;27334:2;27316:35;;;27338:5;27345;27316:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27259:338;;;27382:5;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;27372:6;:26;27368:229;;;27438:2;27420:35;;;27442:5;27449;27420:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27494:2;27475:36;;;27498:5;27505;27475:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27526:2;:11;;:18;27538:5;27526:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;27559:5;;;;;;;;;;;:16;;;27576:8;27559:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;27368:229;27259:338;27614:4;27607:11;;;7942:1:::2;26774:852:::0;;;;;;:::o;26383:380::-;26508:4;26589:8;26600:45;26618:6;26627:10;26639:5;26600:17;:45::i;:::-;26589:56;;26693:6;26661:73;;26674:10;26661:73;;;26686:5;26701:14;26717:5;26724:9;26661:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26752:3;26745:10;;;26383:380;;;;;;:::o;15143:100::-;15194:7;15220:15;;15213:22;;15143:100;:::o;15365:1046::-;15459:4;13909:40;12691:66;13927:9;;13938:10;13909:17;:40::i;:::-;13901:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15475:17:::1;15495:19;15508:5;15495:12;:19::i;:::-;15475:39;;12805:66;15547:12;;15534:9;:25;15533:55;;;;12691:66;15578:9;;15565;:22;15533:55;15525:79;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;15617:16;15683:5;15690:11;15646:56;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15636:67;;;;;;15617:86;;15714:36;15729:8;15739:10;15714:14;:36::i;:::-;15800:15;;15767:29;15787:8;15767:19;:29::i;:::-;:48;15763:619;;15832:20;15843:8;15832:10;:20::i;:::-;15867:19;12691:66;15922:9;;15909;:22;15905:370;;;15966:15;;15952:29;;16018:11;16000:15;:29;;;;15905:370;;;12805:66;16081:12;;16068:9;:25;16064:211;;;16128:18;;16114:32;;16186:11;16165:18;:32;;;;16064:211;;;16238:21;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;16064:211;15905:370;16294:76;16338:5;16345:11;16358;16294:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15763:619;;16399:4;16392:11;;;;15365:1046:::0;;;;:::o;29489:184::-;25881:41;12917:66;25899:10;;25911;25881:17;:41::i;:::-;25873:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29585:13:::1;29608:5;29585:29;;29625:12;29640:6;:15;;;29656:2;29659:5;29640:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;29625:40;;25950:1;;29489:184:::0;;;:::o;30163:56::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9099:291::-;9182:4;9202:9;9214:1;9202:13;;9198:162;9221:9;:14;9231:3;9221:14;;;;;;;;;;;:24;;:31;;;;9217:1;:35;9198:162;;;9307:11;9276:42;;:9;:14;9286:3;9276:14;;;;;;;;;;;:24;;9301:1;9276:27;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;9273:75;;;9344:4;9337:11;;;;;9273:75;9254:3;;;;;;;9198:162;;;;9377:5;9370:12;;9099:291;;;;;:::o;31249:898::-;31338:4;31354:11;31368:5;31354:19;;31384:25;31472:1;31430:16;:23;31447:5;31430:23;;;;;;;;;;;;;;;:32;;31424:46;;;;;;;;;;;;;;;;:49;31420:586;;;31512:5;:10;;31575:3;31579:6;31523:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31512:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31489:98;;;;;;;;31420:586;;;31628:30;;:::i;:::-;31661:16;:23;31678:5;31661:23;;;;;;;;;;;;;;;31628:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31703:9;:22;;;31699:296;;;31769:5;:10;;31805:9;:18;;;31824:6;31831:3;31780:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31769:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31745:91;;;;;;;;31699:296;;;31913:5;:10;;31948:9;:18;;;31967:3;31971:6;31924:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31913:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31890:89;;;;;;;;31699:296;31420:586;;32026:6;:72;;;;;32060:1;32037:12;:19;:24;:60;;;;32076:12;32065:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32037:60;32026:72;32018:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32135:4;32128:11;;;;31249:898;;;;;:::o;16419:635::-;16531:4;13909:40;12691:66;13927:9;;13938:10;13909:17;:40::i;:::-;13901:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16547:17:::1;16567:19;16580:5;16567:12;:19::i;:::-;16547:39;;16597:16;16660:5;16667:10;16679;16626:64;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16616:75;;;;;;16597:94;;16702:36;16717:8;16727:10;16702:14;:36::i;:::-;16786:15;;16753:29;16773:8;16753:19;:29::i;:::-;:48;16749:275;;16818:53;16837:9;16848:10;16860;16818:18;:53::i;:::-;16891:60;16921:5;16928:10;16940;16891:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16966:20;16977:8;16966:10;:20::i;:::-;17008:4;17001:11;;;;;;16749:275;17041:5;17034:12;;;;13987:1;16419:635:::0;;;;;:::o;8634:120::-;8179:7;;;;;;;;;;;8171:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8703:5:::1;8693:7;;:15;;;;;;;;;;;;;;;;;;8724:22;8733:12;:10;:12::i;:::-;8724:22;;;;;;;;;;;;;;;;;;;;8634:120::o:0;10890:81::-;10949:9;:14;10959:3;10949:14;;;;;;;;;;;;10942:21;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;10890:81;:::o;8375:118::-;7903:7;;;;;;;;;;;7902:8;7894:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8445:4:::1;8435:7;;:14;;;;;;;;;;;;;;;;;;8465:20;8472:12;:10;:12::i;:::-;8465:20;;;;;;;;;;;;;;;;;;;;8375:118::o:0;17062:235::-;17127:7;17146:17;17193:5;17176:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17166:34;;;;;;17146:54;;17219:25;17234:9;17219:14;:25::i;:::-;17211:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17280:9;17273:16;;;17062:235;;;:::o;9729:129::-;9793:7;9819:9;:14;9829:3;9819:14;;;;;;;;;;;:24;;:31;;;;9812:38;;9729:129;;;:::o;10048:296::-;10134:35;10152:3;10157:11;10134:17;:35::i;:::-;10133:36;10125:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10244:16;;10210:9;:14;10220:3;10210:14;;;;;;;;;;;:24;;:31;;;;:50;10202:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10294:9;:14;10304:3;10294:14;;;;;;;;;;;:24;;10324:11;10294:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10048:296;;:::o;10459:423::-;10547:9;10543:332;10566:9;:14;10576:3;10566:14;;;;;;;;;;;:24;;:31;;;;10562:1;:35;10543:332;;;10652:11;10621:42;;:9;:14;10631:3;10621:14;;;;;;;;;;;:24;;10646:1;10621:27;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;10618:246;;;10713:9;:14;10723:3;10713:14;;;;;;;;;;;:24;;10772:1;10738:9;:14;10748:3;10738:14;;;;;;;;;;;:24;;:31;;;;:35;10713:61;;;;;;;;;;;;;;;;;;;;;;;;;10683:9;:14;10693:3;10683:14;;;;;;;;;;;:24;;10708:1;10683:27;;;;;;;;;;;;;;;;:91;;;;;;;;;;;;;;;;;;10793:9;:14;10803:3;10793:14;;;;;;;;;;;:24;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10842:7;;;10618:246;10599:3;;;;;;;10543:332;;;;10459:423;;;:::o;9396:128::-;9457:16;9492:9;:14;9502:3;9492:14;;;;;;;;;;;:24;;9485:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9396:128;;;:::o;30292:949::-;30382:4;30398:11;30412:5;30398:19;;30428:25;30517:1;30474:15;:22;30490:5;30474:22;;;;;;;;;;;;;;;:31;;30468:45;;;;;;;;;;;;;;;;:50;30464:609;;;30557:5;:10;;30632:5;30638:4;30643:6;30568:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30557:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30534:117;;;;;;;;30464:609;;;30692:30;;:::i;:::-;30725:15;:22;30741:5;30725:22;;;;;;;;;;;;;;;30692:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30766:9;:22;;;30762:300;;;30833:5;:10;;30868:9;:18;;;30887:6;30894:5;30844:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30833:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30808:93;;;;;;;;30762:300;;;30978:5;:10;;31013:9;:18;;;31032:5;31038:6;30989:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30978:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30955:91;;;;;;;;30762:300;30464:609;;31105:6;:72;;;;;31139:1;31116:12;:19;:24;:60;;;;31155:12;31144:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31116:60;31105:72;31083:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31229:4;31222:11;;;;30292:949;;;;;:::o;10979:351::-;11090:9;11086:237;11109:9;:14;11119:3;11109:14;;;;;;;;;;;:24;;:31;;;;11105:1;:35;11086:237;;;11195:11;11164:42;;:9;:14;11174:3;11164:14;;;;;;;;;;;:24;;11189:1;11164:27;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;11161:151;;;11256:15;11226:9;:14;11236:3;11226:14;;;;;;;;;;;:24;;11251:1;11226:27;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;11290:7;;;11161:151;11142:3;;;;;;;11086:237;;;;10979:351;;;;:::o;6136:106::-;6189:15;6224:10;6217:17;;6136:106;:::o;14720:217::-;14781:4;14803:9;14815:1;14803:13;;14798:108;14822:14;:21;;;;14818:1;:25;14798:108;;;14888:5;14867:14;14882:1;14867:17;;;;;;;;;;;;;;;;:26;14863:43;;;14902:4;14895:11;;;;;14863:43;14845:3;;;;;;;14798:108;;;;14924:5;14917:12;;14720:217;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o
Swarm Source
ipfs://175fd30761d46f49bdd013683f3d26a07b057927b3f48644cc55d126254c0718
Loading...LoadingLoading...Loading
Loading...Loading
Loading...LoadingLoading...LoadingLoading...LoadingLoading...LoadingLoading...LoadingLoading...LoadingMultichain Portfolio | 30 Chains
Chain Token Portfolio % Price Amount Value ETH Ether (ETH)98.49% $3,336.95 0.8447 $2,818.63 ETH 0.24% $6,961.5 0.001 $6.96 ETH 0.24% $336.72 0.02 $6.73 ETH 0.22% $23.1 0.275 $6.35 ETH 0.17% $80.71 0.06 $4.84 ETH 0.14% $13.78 0.3 $4.13 ETH 0.07% $20.18 0.096 $1.94 ETH 0.04% $0.02476 50.0029 $1.24 ETH 0.04% $1.45 0.7 $1.01 ETH 0.03% $2 0.5 $1 ETH 0.03% $1.01 0.8618 $0.8745 ETH 0.03% $0.000773 1,000 $0.7731 ETH <0.01% $0.843993 0.3 $0.2531 ETH <0.01% $0.000022 8,223 $0.1786 BSC 0.23% $0.705229 9.2177 $6.5 BSC <0.01% $0.023196 10 $0.2319 BSC <0.01% $0.000035 5,000 $0.1733 BSC <0.01% $673.59 0.00000372 $0.002509 FTM <0.01% $0.980477 0.0009 $0.000882 OP <0.01% $3,336.57 0.00000001 $0.000033 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.
Address QR Code
My Address - Private Name Tag or Note
My Name Tag:
Private Name Tags (up to 35 characters) can be used for easy identification of addressesPrivate Note:
A private note (up to 500 characters) can be attached to this address.
Please DO NOT store any passwords or private keys here.Compiler specific version warnings:
The compiled contract might be susceptible to FullInlinerNonExpressionSplitArgumentEvaluationOrder (low-severity), MissingSideEffectsOnSelectorAccess (low-severity), AbiReencodingHeadOverflowWithStaticArrayCleanup (medium-severity), DirtyBytesArrayToStorage (low-severity), DataLocationChangeInInternalOverride (very low-severity), NestedCalldataArrayAbiReencodingSizeValidation (very low-severity), SignedImmutables (very low-severity), ABIDecodeTwoDimensionalArrayMemory (very low-severity) Solidity Compiler Bugs.
Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.SignIn
Address Cards
To use this feature, please login to your Etherscan account and return to this page.Before You Copy
Transaction Private Note
This website uses cookies to improve your experience. By continuing to use this website, you agree to its Terms and Privacy Policy.