Source Code
Latest 25 from a total of 4,197 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Sign Or Claim | 39437312 | 1 hr ago | IN | 0 ETH | 0.0000001 | ||||
| Sign Or Claim | 39436148 | 2 hrs ago | IN | 0 ETH | 0.00000007 | ||||
| Sign Or Claim | 39436125 | 2 hrs ago | IN | 0 ETH | 0.00000011 | ||||
| Sign Or Claim | 39436117 | 2 hrs ago | IN | 0 ETH | 0.00000007 | ||||
| Sign Or Claim | 39436108 | 2 hrs ago | IN | 0 ETH | 0.00000003 | ||||
| Sign Or Claim | 39436098 | 2 hrs ago | IN | 0 ETH | 0.00000006 | ||||
| Sign Or Claim | 39436046 | 2 hrs ago | IN | 0 ETH | 0.00000008 | ||||
| Sign Or Claim | 39436014 | 2 hrs ago | IN | 0 ETH | 0.00000008 | ||||
| Sign Or Claim | 39435997 | 2 hrs ago | IN | 0 ETH | 0.00000009 | ||||
| Sign Or Claim | 39435988 | 2 hrs ago | IN | 0 ETH | 0.00000009 | ||||
| Sign Or Claim | 39435975 | 2 hrs ago | IN | 0 ETH | 0.0000001 | ||||
| Sign Or Claim | 39435966 | 2 hrs ago | IN | 0 ETH | 0.0000001 | ||||
| Sign Or Claim | 39435956 | 2 hrs ago | IN | 0 ETH | 0.0000001 | ||||
| Sign Or Claim | 39435943 | 2 hrs ago | IN | 0 ETH | 0.0000001 | ||||
| Sign Or Claim | 39435933 | 2 hrs ago | IN | 0 ETH | 0.0000001 | ||||
| Sign Or Claim | 39435912 | 2 hrs ago | IN | 0 ETH | 0.00000009 | ||||
| Sign Or Claim | 39435894 | 2 hrs ago | IN | 0 ETH | 0.00000008 | ||||
| Sign Or Claim | 39435872 | 2 hrs ago | IN | 0 ETH | 0.00000009 | ||||
| Sign Or Claim | 39435861 | 2 hrs ago | IN | 0 ETH | 0.0000001 | ||||
| Sign Or Claim | 39435819 | 2 hrs ago | IN | 0 ETH | 0.00000009 | ||||
| Sign Or Claim | 39435810 | 2 hrs ago | IN | 0 ETH | 0.00000008 | ||||
| Sign Or Claim | 39435798 | 2 hrs ago | IN | 0 ETH | 0.00000008 | ||||
| Sign Or Claim | 39435789 | 2 hrs ago | IN | 0 ETH | 0.00000008 | ||||
| Sign Or Claim | 39435780 | 2 hrs ago | IN | 0 ETH | 0.00000008 | ||||
| Sign Or Claim | 39435765 | 2 hrs ago | IN | 0 ETH | 0.0000001 |
Latest 25 internal transactions (View All)
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 39437312 | 1 hr ago | 0.00008187 ETH | ||||
| 39436148 | 2 hrs ago | 0.00008187 ETH | ||||
| 39436125 | 2 hrs ago | 0.00008187 ETH | ||||
| 39436117 | 2 hrs ago | 0.00008187 ETH | ||||
| 39436108 | 2 hrs ago | 0.00008187 ETH | ||||
| 39436098 | 2 hrs ago | 0.00008187 ETH | ||||
| 39436046 | 2 hrs ago | 0.00008187 ETH | ||||
| 39436014 | 2 hrs ago | 0.00008187 ETH | ||||
| 39435997 | 2 hrs ago | 0.00008187 ETH | ||||
| 39435988 | 2 hrs ago | 0.00008187 ETH | ||||
| 39435975 | 2 hrs ago | 0.00008187 ETH | ||||
| 39435966 | 2 hrs ago | 0.00008187 ETH | ||||
| 39435956 | 2 hrs ago | 0.00008187 ETH | ||||
| 39435943 | 2 hrs ago | 0.00008187 ETH | ||||
| 39435933 | 2 hrs ago | 0.00008187 ETH | ||||
| 39435912 | 2 hrs ago | 0.00008187 ETH | ||||
| 39435894 | 2 hrs ago | 0.00008187 ETH | ||||
| 39435872 | 2 hrs ago | 0.00008187 ETH | ||||
| 39435861 | 2 hrs ago | 0.00008187 ETH | ||||
| 39435819 | 2 hrs ago | 0.00008187 ETH | ||||
| 39435810 | 2 hrs ago | 0.00008187 ETH | ||||
| 39435798 | 2 hrs ago | 0.00008187 ETH | ||||
| 39435789 | 2 hrs ago | 0.00008187 ETH | ||||
| 39435780 | 2 hrs ago | 0.00008187 ETH | ||||
| 39435765 | 2 hrs ago | 0.00008187 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
flooordotfun
Compiler Version
v0.8.24+commit.e11b9ed9
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
// 0x4200000000000000000000000000000000000006 BASE WETH!
interface IERC721Like {
function safeTransferFrom(address from, address to, uint256 tokenId) external;
function getApproved(uint256 tokenId) external view returns (address);
function isApprovedForAll(address owner, address operator) external view returns (bool);
function ownerOf(uint256 tokenId) external view returns (address);
function balanceOf(address owner) external view returns (uint256);
}
interface IERC20Minimal {
function transfer(address to, uint256 amount) external returns (bool);
function balanceOf(address account) external view returns (uint256);
}
interface IWETH {
function deposit() external payable;
function transfer(address to, uint256 amount) external returns (bool);
}
contract flooordotfun {
address payable private owner;
bool private locked;
address public immutable WETH;
modifier onlyOwner(){ require(msg.sender==owner,"owner"); _; }
uint256 public constant rBLOCKS = 1440 minutes;
uint256 public constant sDURATION = 960 minutes;
address public constant collectionId = 0xbB56a9359DF63014B3347585565d6F80Ac6305fd;
IERC721Like private constant nft = IERC721Like(collectionId);
uint256 public minbidAM = 10**8;
uint256 public activebidAM;
address public activeBidder;
uint8 public minBidIncrementPercentage = 2;
uint256 public poolAccrued;
uint256 public epochId;
mapping(uint256 => uint256) public epochStartById;
mapping(bytes32 => bool) private _signed; // ("A",epochStart,addr) ve ("T",epochStart,tokenId)
mapping(bytes32 => bool) private _claimed; // ("C",epochStart,addr)
mapping(uint256 => uint256) public partCount; // epochStart => kaç kişi signed
mapping(uint256 => uint256) public poolSnap; // epochStart => bu epoch'ta dağıtılacak havuz
mapping(uint256 => uint256) public claimedCount; // epochStart => kaç kişi claim etti
mapping(bytes32 => uint256) private _signedTokenOf; // ("A",epochStart,addr) -> tokenId
uint256 private lastEpochRoll;
constructor(address _weth) { owner = payable(msg.sender); WETH = _weth; }
event BidPlaced(address indexed bidder, uint256 amount, address indexed refunded, uint256 refundAmount);
event SaleSettled(address indexed seller, address indexed buyer, uint256 indexed tokenId, uint256 amount);
event Staked(address indexed user, uint256 indexed tokenId, uint256 epochStart);
event Claimed(address indexed user, uint256 epochStart, uint256 share);
modifier nonReentrant() {
require(!locked, "Reentrancy");
locked = true;
_;
locked = false;
}
modifier onlyNFTOwnerWrite(uint256 tokenId) {
require(nft.ownerOf(tokenId) == msg.sender, "Not owner of tokenId");
require(nft.balanceOf(msg.sender) == 1, "Must hold exactly 1 NFT");
_;
}
function _safeTransferETHWithFallback(address to, uint256 amount) private {
if (amount == 0 || to == address(0)) return;
(bool success, ) = payable(to).call{value: amount}("");
if (!success) {
IWETH(WETH).deposit{value: amount}();
bool ok = IWETH(WETH).transfer(to, amount);
require(ok, "WETH transfer failed");
}
}
function signOrClaim(uint256 tokenId) external nonReentrant onlyNFTOwnerWrite(tokenId) {
uint256 modTime = block.timestamp % rBLOCKS;
uint256 epochStart = block.timestamp - modTime;
// === epoch rollover + leftover DEVİR ===
// Yeni bir sign fazına ilk girişte: önceki epoch'un dağıtılmayan bakiyesini poolAccrued'a iade et
if (modTime < sDURATION && epochStart > lastEpochRoll) {
if (lastEpochRoll != 0 && poolSnap[lastEpochRoll] > 0 && partCount[lastEpochRoll] > 0) {
uint256 perShare = poolSnap[lastEpochRoll] / partCount[lastEpochRoll];
uint256 distributed = perShare * claimedCount[lastEpochRoll];
uint256 leftover = poolSnap[lastEpochRoll] - distributed;
if (leftover > 0) {
poolAccrued += leftover; // bir sonraki epoch'lara devret
}
}
lastEpochRoll = epochStart; // bu sign fazını işaretle
// >>> Human-readable ID köprüsü
epochStartById[epochId] = epochStart; // id -> start
epochId += 1; // bir sonraki id
}
// === tek mapping ile iki kısıt için anahtarlar ===
bytes32 kAddr = keccak256(abi.encodePacked("A", epochStart, msg.sender));
bytes32 kTok = keccak256(abi.encodePacked("T", epochStart, tokenId));
bytes32 kClm = keccak256(abi.encodePacked("C", epochStart, msg.sender));
if (modTime < sDURATION) {
// -------- SIGN --------
require(!_signed[kAddr], "already signed");
require(!_signed[kTok], "token used");
_signed[kAddr] = true; // adres bu epoch'ta kayitli
_signed[kTok] = true; // token bu epoch'ta kullanildi
_signedTokenOf[kAddr] = tokenId;
unchecked { partCount[epochStart] += 1; }
emit Staked(msg.sender, tokenId, epochStart);
return;
}
// -------- CLAIM --------
// İlk claimer snapshot alır: o anda havuzda ne varsa bu epoch'a kilitlenir
if (poolSnap[epochStart] == 0 && poolAccrued > 0 && partCount[epochStart] > 0) {
poolSnap[epochStart] = poolAccrued;
poolAccrued = 0;
}
require(_signed[kAddr], "not signed");
require(!_claimed[kClm], "already claimed");
require(_signedTokenOf[kAddr] == tokenId, "wrong token for claim");
uint256 n = partCount[epochStart];
require(n > 0, "no participants");
uint256 share = poolSnap[epochStart] / n;
require(share > 0, "zero share");
_claimed[kClm] = true;
claimedCount[epochStart] += 1;
_safeTransferETHWithFallback(msg.sender, share);
emit Claimed(msg.sender, epochStart, share);
}
receive() external payable nonReentrant {
require(msg.sender != owner, "Owner cannot bid");
require(
msg.value >= (
activebidAM == 0
? minbidAM
: activebidAM + (activebidAM * minBidIncrementPercentage) / 100
),
"Bid too low"
);
uint256 prevAmt = activebidAM;
address prevBidder = activeBidder;
activebidAM = msg.value;
activeBidder = msg.sender;
if (prevBidder != address(0) && prevAmt != 0) {
_safeTransferETHWithFallback(prevBidder, prevAmt);
}
emit BidPlaced(msg.sender, msg.value, prevBidder, prevAmt);
}
fallback() external payable { revert("Use receive()"); }
function placeBid() external payable nonReentrant {
require(msg.sender != owner, "Owner cannot bid");
require(
msg.value >= (
activebidAM == 0
? minbidAM
: activebidAM + (activebidAM * minBidIncrementPercentage) / 100
),
"Bid too low"
);
uint256 prevAmt = activebidAM;
address prevBidder = activeBidder;
activebidAM = msg.value;
activeBidder = msg.sender;
if (prevBidder != address(0) && prevAmt != 0) {
_safeTransferETHWithFallback(prevBidder, prevAmt);
}
emit BidPlaced(msg.sender, msg.value, prevBidder, prevAmt);
}
function sellToHighest(uint256 tokenId) external nonReentrant onlyNFTOwnerWrite(tokenId) {
require(activeBidder != address(0) && activebidAM >= minbidAM, "No active bid");
bool approved = (
nft.getApproved(tokenId) == address(this) ||
nft.isApprovedForAll(msg.sender, address(this))
);
require(approved, "Approve token to contract first");
uint256 price = activebidAM;
address buyer = activeBidder;
address seller = msg.sender;
// ---- Fee dağılımı ----
uint256 fee = (price * 500) / 10_000; // %5
uint256 platformCut = fee / 10; // %0.5
uint256 poolCut = fee - platformCut; // %4.5
uint256 sellerPayout = price - fee; // %95
nft.safeTransferFrom(seller, buyer, tokenId);
activebidAM = 0;
activeBidder = address(0);
_safeTransferETHWithFallback(seller, sellerPayout);
if (platformCut > 0) {
_safeTransferETHWithFallback(owner, platformCut);
}
poolAccrued += poolCut;
emit SaleSettled(seller, buyer, tokenId, price);
}
function setMinBidIncrementPercentage(uint8 p) external onlyOwner {
require(p <= 50, "too high");
minBidIncrementPercentage = p;
}
function sweepERC20(address token, uint256 amt) external onlyOwner nonReentrant {
require(token != address(0), "zero token");
require(amt > 0, "zero amount");
uint256 bal = IERC20Minimal(token).balanceOf(address(this));
require(bal >= amt, "insufficient token balance");
(bool ok, bytes memory data) =
token.call(abi.encodeWithSelector(IERC20Minimal.transfer.selector, owner, amt));
require(ok && (data.length == 0 || abi.decode(data, (bool))), "sweep fail");
}
function sweepETH(uint256 amt) external onlyOwner {
(bool ok, ) = owner.call{value: amt}(""); require(ok,"sweep fail");
}
// === Views ===
function currentEpochStart() public view returns (uint256) {
uint256 modTime = block.timestamp % rBLOCKS;
return block.timestamp - modTime;
}
function currentEpochId() public view returns (uint256) {
return currentEpochStart() / rBLOCKS;
}
function nextMinBid() external view returns (uint256) {
return activebidAM == 0 ? minbidAM : activebidAM + (activebidAM * minBidIncrementPercentage) / 100;
}
function isSignPhase() public view returns (bool) {
return (block.timestamp % rBLOCKS) < sDURATION;
}
function epochShare(uint256 epochStart) public view returns (uint256) {
uint256 n = partCount[epochStart];
return n == 0 ? 0 : poolSnap[epochStart] / n;
}
function mySignedToken(uint256 epochStart, address user) public view returns (uint256) {
bytes32 k = keccak256(abi.encodePacked("A", epochStart, user));
return _signedTokenOf[k];
}
function getPhaseInfo() external view returns (
string memory currentPhase,
uint256 eid,
uint256 elapsed,
uint256 remaining
) {
uint256 mod = block.timestamp % rBLOCKS;
eid = epochId; // kontrattaki gerçek epoch sayacı
if (mod < sDURATION) {
currentPhase = "SIGN";
elapsed = mod;
remaining = sDURATION - mod;
} else {
currentPhase = "CLAIM";
elapsed = mod - sDURATION;
remaining = rBLOCKS - mod;
}
}
}{
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"remappings": []
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_weth","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"bidder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"refunded","type":"address"},{"indexed":false,"internalType":"uint256","name":"refundAmount","type":"uint256"}],"name":"BidPlaced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"epochStart","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"share","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SaleSettled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"epochStart","type":"uint256"}],"name":"Staked","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activeBidder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activebidAM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"claimedCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"collectionId","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentEpochId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentEpochStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epochId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"epochStart","type":"uint256"}],"name":"epochShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"epochStartById","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPhaseInfo","outputs":[{"internalType":"string","name":"currentPhase","type":"string"},{"internalType":"uint256","name":"eid","type":"uint256"},{"internalType":"uint256","name":"elapsed","type":"uint256"},{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSignPhase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBidIncrementPercentage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minbidAM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"epochStart","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"mySignedToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextMinBid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"partCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"placeBid","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"poolAccrued","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolSnap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rBLOCKS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sDURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"sellToHighest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"p","type":"uint8"}],"name":"setMinBidIncrementPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"signOrClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"sweepERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"sweepETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60a06040526305f5e1006001556002600360146101000a81548160ff021916908360ff16021790555034801562000034575f80fd5b50604051620039fd380380620039fd83398181016040528101906200005a919062000139565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505062000169565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200010382620000d8565b9050919050565b6200011581620000f7565b811462000120575f80fd5b50565b5f8151905062000133816200010a565b92915050565b5f60208284031215620001515762000150620000d4565b5b5f620001608482850162000123565b91505092915050565b60805161386d620001905f395f8181610a0201528181610a800152611eb2015261386d5ff3fe60806040526004361061019f575f3560e01c8063a6f8e722116100eb578063ca998a2d11610089578063eacdc5ff11610063578063eacdc5ff146108bc578063ecfc7ecc146108e6578063f180e5d5146108f0578063f65357781461092c57610468565b8063ca998a2d1461082e578063d8e849461461086a578063e6d119991461089457610468565b8063b296024d116100c5578063b296024d14610774578063c030b03f1461079e578063c4807a06146107c8578063c996b4cd146107f257610468565b8063a6f8e722146106f3578063aa9bbc0c14610720578063ad5c46481461074a57610468565b8063420649d01161015857806361a8c8c41161013257806361a8c8c41461063b57806373c87a52146106655780637fced2981461068f5780639830ff6a146106cb57610468565b8063420649d01461059b57806343257a4e146105d75780634abd3ac11461061357610468565b80630d489fd4146104a357806314d10d9e146104cb57806316338ce2146104f5578063320e43511461051f57806336ebdb38146105495780633d26bb671461057157610468565b36610468575f60149054906101000a900460ff16156101f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ea906126e4565b60405180910390fd5b60015f60146101000a81548160ff0219169083151502179055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361029a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102919061274c565b60405180910390fd5b5f600254146102e1576064600360149054906101000a900460ff1660ff166002546102c591906127a0565b6102cf919061280e565b6002546102dc919061283e565b6102e5565b6001545b341015610327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031e906128bb565b60405180910390fd5b5f60025490505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050346002819055503360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156103d557505f8214155b156103e5576103e48183610956565b5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f0158f5674dc243762459b88cfc91b10d2d1ef9d40821cca978c2b680aa44468234856040516104449291906128e8565b60405180910390a350505f8060146101000a81548160ff0219169083151502179055005b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049a90612959565b60405180910390fd5b3480156104ae575f80fd5b506104c960048036038101906104c491906129a5565b610b63565b005b3480156104d6575f80fd5b506104df6111e5565b6040516104ec91906129d0565b60405180910390f35b348015610500575f80fd5b506105096111eb565b6040516105169190612a28565b60405180910390f35b34801561052a575f80fd5b50610533611210565b60405161054091906129d0565b60405180910390f35b348015610554575f80fd5b5061056f600480360381019061056a9190612a77565b611216565b005b34801561057c575f80fd5b50610585611308565b6040516105929190612a28565b60405180910390f35b3480156105a6575f80fd5b506105c160048036038101906105bc9190612acc565b611320565b6040516105ce91906129d0565b60405180910390f35b3480156105e2575f80fd5b506105fd60048036038101906105f891906129a5565b611368565b60405161060a91906129d0565b60405180910390f35b34801561061e575f80fd5b50610639600480360381019061063491906129a5565b61137d565b005b348015610646575f80fd5b5061064f611c27565b60405161065c91906129d0565b60405180910390f35b348015610670575f80fd5b50610679611c4c565b6040516106869190612b24565b60405180910390f35b34801561069a575f80fd5b506106b560048036038101906106b091906129a5565b611c65565b6040516106c291906129d0565b60405180910390f35b3480156106d6575f80fd5b506106f160048036038101906106ec91906129a5565b611c7a565b005b3480156106fe575f80fd5b50610707611dd3565b6040516107179493929190612bb7565b60405180910390f35b34801561072b575f80fd5b50610734611eaa565b60405161074191906129d0565b60405180910390f35b348015610755575f80fd5b5061075e611eb0565b60405161076b9190612a28565b60405180910390f35b34801561077f575f80fd5b50610788611ed4565b6040516107959190612c10565b60405180910390f35b3480156107a9575f80fd5b506107b2611ee7565b6040516107bf91906129d0565b60405180910390f35b3480156107d3575f80fd5b506107dc611f38565b6040516107e991906129d0565b60405180910390f35b3480156107fd575f80fd5b50610818600480360381019061081391906129a5565b611f3f565b60405161082591906129d0565b60405180910390f35b348015610839575f80fd5b50610854600480360381019061084f91906129a5565b611f88565b60405161086191906129d0565b60405180910390f35b348015610875575f80fd5b5061087e611f9d565b60405161088b91906129d0565b60405180910390f35b34801561089f575f80fd5b506108ba60048036038101906108b59190612c29565b611fa3565b005b3480156108c7575f80fd5b506108d061238e565b6040516108dd91906129d0565b60405180910390f35b6108ee6123aa565b005b3480156108fb575f80fd5b50610916600480360381019061091191906129a5565b61266f565b60405161092391906129d0565b60405180910390f35b348015610937575f80fd5b50610940612684565b60405161094d91906129d0565b60405180910390f35b5f81148061098f57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610b5f575f8273ffffffffffffffffffffffffffffffffffffffff16826040516109b890612c94565b5f6040518083038185875af1925050503d805f81146109f2576040519150601f19603f3d011682016040523d82523d5f602084013e6109f7565b606091505b5050905080610b5d577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004015f604051808303818588803b158015610a66575f80fd5b505af1158015610a78573d5f803e3d5ffd5b50505050505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401610ad9929190612ca8565b6020604051808303815f875af1158015610af5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b199190612cf9565b905080610b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5290612d6e565b60405180910390fd5b505b505b5050565b5f60149054906101000a900460ff1615610bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba9906126e4565b60405180910390fd5b60015f60146101000a81548160ff021916908315150217905550803373ffffffffffffffffffffffffffffffffffffffff1673bb56a9359df63014b3347585565d6f80ac6305fd73ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401610c3191906129d0565b602060405180830381865afa158015610c4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c709190612da0565b73ffffffffffffffffffffffffffffffffffffffff1614610cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbd90612e15565b60405180910390fd5b600173bb56a9359df63014b3347585565d6f80ac6305fd73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610d159190612a28565b602060405180830381865afa158015610d30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d549190612e47565b14610d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8b90612ebc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015610df5575060015460025410155b610e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2b90612f24565b60405180910390fd5b5f3073ffffffffffffffffffffffffffffffffffffffff1673bb56a9359df63014b3347585565d6f80ac6305fd73ffffffffffffffffffffffffffffffffffffffff1663081812fc856040518263ffffffff1660e01b8152600401610e9991906129d0565b602060405180830381865afa158015610eb4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed89190612da0565b73ffffffffffffffffffffffffffffffffffffffff161480610f84575073bb56a9359df63014b3347585565d6f80ac6305fd73ffffffffffffffffffffffffffffffffffffffff1663e985e9c533306040518363ffffffff1660e01b8152600401610f44929190612f42565b602060405180830381865afa158015610f5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f839190612cf9565b5b905080610fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbd90612fb3565b60405180910390fd5b5f60025490505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f3390505f6127106101f48561100791906127a0565b611011919061280e565b90505f600a82611021919061280e565b90505f81836110309190612fd1565b90505f838761103f9190612fd1565b905073bb56a9359df63014b3347585565d6f80ac6305fd73ffffffffffffffffffffffffffffffffffffffff166342842e0e86888d6040518463ffffffff1660e01b815260040161109293929190613004565b5f604051808303815f87803b1580156110a9575f80fd5b505af11580156110bb573d5f803e3d5ffd5b505050505f6002819055505f60035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111108582610956565b5f831115611142576111415f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610956565b5b8160045f828254611153919061283e565b92505081905550898673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb4879833faff071928ed3497873ded202ac16c839904d57bc0290cd9a4206b168a6040516111b891906129d0565b60405180910390a45050505050505050505f8060146101000a81548160ff02191690831515021790555050565b61e10081565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129a90613083565b60405180910390fd5b60328160ff1611156112ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e1906130eb565b60405180910390fd5b80600360146101000a81548160ff021916908360ff16021790555050565b73bb56a9359df63014b3347585565d6f80ac6305fd81565b5f8083836040516020016113359291906131c2565b604051602081830303815290604052805190602001209050600c5f8281526020019081526020015f205491505092915050565b600a602052805f5260405f205f915090505481565b5f60149054906101000a900460ff16156113cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c3906126e4565b60405180910390fd5b60015f60146101000a81548160ff021916908315150217905550803373ffffffffffffffffffffffffffffffffffffffff1673bb56a9359df63014b3347585565d6f80ac6305fd73ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161144b91906129d0565b602060405180830381865afa158015611466573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061148a9190612da0565b73ffffffffffffffffffffffffffffffffffffffff16146114e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d790612e15565b60405180910390fd5b600173bb56a9359df63014b3347585565d6f80ac6305fd73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161152f9190612a28565b602060405180830381865afa15801561154a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156e9190612e47565b146115ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a590612ebc565b60405180910390fd5b5f62015180426115be91906131f8565b90505f81426115cd9190612fd1565b905061e100821080156115e15750600d5481115b15611704575f600d541415801561160a57505f600a5f600d5481526020019081526020015f2054115b801561162857505f60095f600d5481526020019081526020015f2054115b156116cb575f60095f600d5481526020019081526020015f2054600a5f600d5481526020019081526020015f2054611660919061280e565b90505f600b5f600d5481526020019081526020015f20548261168291906127a0565b90505f81600a5f600d5481526020019081526020015f20546116a49190612fd1565b90505f8111156116c7578060045f8282546116bf919061283e565b925050819055505b5050505b80600d819055508060065f60055481526020019081526020015f2081905550600160055f8282546116fc919061283e565b925050819055505b5f81336040516020016117189291906131c2565b6040516020818303038152906040528051906020012090505f8286604051602001611744929190613272565b6040516020818303038152906040528051906020012090505f83336040516020016117709291906132f2565b60405160208183030381529060405280519060200120905061e10085101561192e5760075f8481526020019081526020015f205f9054906101000a900460ff16156117f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e790613372565b60405180910390fd5b60075f8381526020019081526020015f205f9054906101000a900460ff161561184e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611845906133da565b60405180910390fd5b600160075f8581526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f8481526020019081526020015f205f6101000a81548160ff02191690831515021790555086600c5f8581526020019081526020015f2081905550600160095f8681526020019081526020015f205f8282540192505081905550863373ffffffffffffffffffffffffffffffffffffffff167f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee908660405161191c91906129d0565b60405180910390a35050505050611c0a565b5f600a5f8681526020019081526020015f205414801561194f57505f600454115b801561196b57505f60095f8681526020019081526020015f2054115b1561199057600454600a5f8681526020019081526020015f20819055505f6004819055505b60075f8481526020019081526020015f205f9054906101000a900460ff166119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490613442565b60405180910390fd5b60085f8281526020019081526020015f205f9054906101000a900460ff1615611a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a42906134aa565b60405180910390fd5b86600c5f8581526020019081526020015f205414611a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9590613512565b60405180910390fd5b5f60095f8681526020019081526020015f205490505f8111611af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aec9061357a565b60405180910390fd5b5f81600a5f8881526020019081526020015f2054611b13919061280e565b90505f8111611b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4e906135e2565b60405180910390fd5b600160085f8581526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f8881526020019081526020015f205f828254611ba1919061283e565b92505081905550611bb23382610956565b3373ffffffffffffffffffffffffffffffffffffffff167f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a8783604051611bfa9291906128e8565b60405180910390a2505050505050505b505f8060146101000a81548160ff02191690831515021790555050565b5f806201518042611c3891906131f8565b90508042611c469190612fd1565b91505090565b5f61e1006201518042611c5f91906131f8565b10905090565b6009602052805f5260405f205f915090505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfe90613083565b60405180910390fd5b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611d4c90612c94565b5f6040518083038185875af1925050503d805f8114611d86576040519150601f19603f3d011682016040523d82523d5f602084013e611d8b565b606091505b5050905080611dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc69061364a565b60405180910390fd5b5050565b60605f805f806201518042611de891906131f8565b9050600554935061e100811015611e49576040518060400160405280600481526020017f5349474e0000000000000000000000000000000000000000000000000000000081525094508092508061e100611e429190612fd1565b9150611ea3565b6040518060400160405280600581526020017f434c41494d000000000000000000000000000000000000000000000000000000815250945061e10081611e8f9190612fd1565b92508062015180611ea09190612fd1565b91505b5090919293565b60055481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600360149054906101000a900460ff1681565b5f8060025414611f2f576064600360149054906101000a900460ff1660ff16600254611f1391906127a0565b611f1d919061280e565b600254611f2a919061283e565b611f33565b6001545b905090565b6201518081565b5f8060095f8481526020019081526020015f205490505f8114611f7e5780600a5f8581526020019081526020015f2054611f79919061280e565b611f80565b5f5b915050919050565b600b602052805f5260405f205f915090505481565b60045481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202790613083565b60405180910390fd5b5f60149054906101000a900460ff161561207f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612076906126e4565b60405180910390fd5b60015f60146101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fe906136b2565b60405180910390fd5b5f8111612149576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121409061371a565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016121839190612a28565b602060405180830381865afa15801561219e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121c29190612e47565b905081811015612207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fe90613782565b60405180910390fd5b5f808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168660405160240161225a9291906137c0565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516122c49190613821565b5f604051808303815f865af19150503d805f81146122fd576040519150601f19603f3d011682016040523d82523d5f602084013e612302565b606091505b509150915081801561232f57505f8151148061232e57508080602001905181019061232d9190612cf9565b5b5b61236e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123659061364a565b60405180910390fd5b5050505f8060146101000a81548160ff0219169083151502179055505050565b5f6201518061239b611c27565b6123a5919061280e565b905090565b5f60149054906101000a900460ff16156123f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f0906126e4565b60405180910390fd5b60015f60146101000a81548160ff0219169083151502179055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036124a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124979061274c565b60405180910390fd5b5f600254146124e7576064600360149054906101000a900460ff1660ff166002546124cb91906127a0565b6124d5919061280e565b6002546124e2919061283e565b6124eb565b6001545b34101561252d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612524906128bb565b60405180910390fd5b5f60025490505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050346002819055503360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156125db57505f8214155b156125eb576125ea8183610956565b5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f0158f5674dc243762459b88cfc91b10d2d1ef9d40821cca978c2b680aa444682348560405161264a9291906128e8565b60405180910390a350505f8060146101000a81548160ff021916908315150217905550565b6006602052805f5260405f205f915090505481565b60025481565b5f82825260208201905092915050565b7f5265656e7472616e6379000000000000000000000000000000000000000000005f82015250565b5f6126ce600a8361268a565b91506126d98261269a565b602082019050919050565b5f6020820190508181035f8301526126fb816126c2565b9050919050565b7f4f776e65722063616e6e6f7420626964000000000000000000000000000000005f82015250565b5f61273660108361268a565b915061274182612702565b602082019050919050565b5f6020820190508181035f8301526127638161272a565b9050919050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6127aa8261276a565b91506127b58361276a565b92508282026127c38161276a565b915082820484148315176127da576127d9612773565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6128188261276a565b91506128238361276a565b925082612833576128326127e1565b5b828204905092915050565b5f6128488261276a565b91506128538361276a565b925082820190508082111561286b5761286a612773565b5b92915050565b7f42696420746f6f206c6f770000000000000000000000000000000000000000005f82015250565b5f6128a5600b8361268a565b91506128b082612871565b602082019050919050565b5f6020820190508181035f8301526128d281612899565b9050919050565b6128e28161276a565b82525050565b5f6040820190506128fb5f8301856128d9565b61290860208301846128d9565b9392505050565b7f55736520726563656976652829000000000000000000000000000000000000005f82015250565b5f612943600d8361268a565b915061294e8261290f565b602082019050919050565b5f6020820190508181035f83015261297081612937565b9050919050565b5f80fd5b6129848161276a565b811461298e575f80fd5b50565b5f8135905061299f8161297b565b92915050565b5f602082840312156129ba576129b9612977565b5b5f6129c784828501612991565b91505092915050565b5f6020820190506129e35f8301846128d9565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a12826129e9565b9050919050565b612a2281612a08565b82525050565b5f602082019050612a3b5f830184612a19565b92915050565b5f60ff82169050919050565b612a5681612a41565b8114612a60575f80fd5b50565b5f81359050612a7181612a4d565b92915050565b5f60208284031215612a8c57612a8b612977565b5b5f612a9984828501612a63565b91505092915050565b612aab81612a08565b8114612ab5575f80fd5b50565b5f81359050612ac681612aa2565b92915050565b5f8060408385031215612ae257612ae1612977565b5b5f612aef85828601612991565b9250506020612b0085828601612ab8565b9150509250929050565b5f8115159050919050565b612b1e81612b0a565b82525050565b5f602082019050612b375f830184612b15565b92915050565b5f81519050919050565b5f5b83811015612b64578082015181840152602081019050612b49565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612b8982612b3d565b612b93818561268a565b9350612ba3818560208601612b47565b612bac81612b6f565b840191505092915050565b5f6080820190508181035f830152612bcf8187612b7f565b9050612bde60208301866128d9565b612beb60408301856128d9565b612bf860608301846128d9565b95945050505050565b612c0a81612a41565b82525050565b5f602082019050612c235f830184612c01565b92915050565b5f8060408385031215612c3f57612c3e612977565b5b5f612c4c85828601612ab8565b9250506020612c5d85828601612991565b9150509250929050565b5f81905092915050565b50565b5f612c7f5f83612c67565b9150612c8a82612c71565b5f82019050919050565b5f612c9e82612c74565b9150819050919050565b5f604082019050612cbb5f830185612a19565b612cc860208301846128d9565b9392505050565b612cd881612b0a565b8114612ce2575f80fd5b50565b5f81519050612cf381612ccf565b92915050565b5f60208284031215612d0e57612d0d612977565b5b5f612d1b84828501612ce5565b91505092915050565b7f57455448207472616e73666572206661696c65640000000000000000000000005f82015250565b5f612d5860148361268a565b9150612d6382612d24565b602082019050919050565b5f6020820190508181035f830152612d8581612d4c565b9050919050565b5f81519050612d9a81612aa2565b92915050565b5f60208284031215612db557612db4612977565b5b5f612dc284828501612d8c565b91505092915050565b7f4e6f74206f776e6572206f6620746f6b656e49640000000000000000000000005f82015250565b5f612dff60148361268a565b9150612e0a82612dcb565b602082019050919050565b5f6020820190508181035f830152612e2c81612df3565b9050919050565b5f81519050612e418161297b565b92915050565b5f60208284031215612e5c57612e5b612977565b5b5f612e6984828501612e33565b91505092915050565b7f4d75737420686f6c642065786163746c792031204e46540000000000000000005f82015250565b5f612ea660178361268a565b9150612eb182612e72565b602082019050919050565b5f6020820190508181035f830152612ed381612e9a565b9050919050565b7f4e6f2061637469766520626964000000000000000000000000000000000000005f82015250565b5f612f0e600d8361268a565b9150612f1982612eda565b602082019050919050565b5f6020820190508181035f830152612f3b81612f02565b9050919050565b5f604082019050612f555f830185612a19565b612f626020830184612a19565b9392505050565b7f417070726f766520746f6b656e20746f20636f6e7472616374206669727374005f82015250565b5f612f9d601f8361268a565b9150612fa882612f69565b602082019050919050565b5f6020820190508181035f830152612fca81612f91565b9050919050565b5f612fdb8261276a565b9150612fe68361276a565b9250828203905081811115612ffe57612ffd612773565b5b92915050565b5f6060820190506130175f830186612a19565b6130246020830185612a19565b61303160408301846128d9565b949350505050565b7f6f776e65720000000000000000000000000000000000000000000000000000005f82015250565b5f61306d60058361268a565b915061307882613039565b602082019050919050565b5f6020820190508181035f83015261309a81613061565b9050919050565b7f746f6f20686967680000000000000000000000000000000000000000000000005f82015250565b5f6130d560088361268a565b91506130e0826130a1565b602082019050919050565b5f6020820190508181035f830152613102816130c9565b9050919050565b5f81905092915050565b7f41000000000000000000000000000000000000000000000000000000000000005f82015250565b5f613147600183613109565b915061315282613113565b600182019050919050565b5f819050919050565b6131776131728261276a565b61315d565b82525050565b5f8160601b9050919050565b5f6131938261317d565b9050919050565b5f6131a482613189565b9050919050565b6131bc6131b782612a08565b61319a565b82525050565b5f6131cc8261313b565b91506131d88285613166565b6020820191506131e882846131ab565b6014820191508190509392505050565b5f6132028261276a565b915061320d8361276a565b92508261321d5761321c6127e1565b5b828206905092915050565b7f54000000000000000000000000000000000000000000000000000000000000005f82015250565b5f61325c600183613109565b915061326782613228565b600182019050919050565b5f61327c82613250565b91506132888285613166565b6020820191506132988284613166565b6020820191508190509392505050565b7f43000000000000000000000000000000000000000000000000000000000000005f82015250565b5f6132dc600183613109565b91506132e7826132a8565b600182019050919050565b5f6132fc826132d0565b91506133088285613166565b60208201915061331882846131ab565b6014820191508190509392505050565b7f616c7265616479207369676e65640000000000000000000000000000000000005f82015250565b5f61335c600e8361268a565b915061336782613328565b602082019050919050565b5f6020820190508181035f83015261338981613350565b9050919050565b7f746f6b656e2075736564000000000000000000000000000000000000000000005f82015250565b5f6133c4600a8361268a565b91506133cf82613390565b602082019050919050565b5f6020820190508181035f8301526133f1816133b8565b9050919050565b7f6e6f74207369676e6564000000000000000000000000000000000000000000005f82015250565b5f61342c600a8361268a565b9150613437826133f8565b602082019050919050565b5f6020820190508181035f83015261345981613420565b9050919050565b7f616c726561647920636c61696d656400000000000000000000000000000000005f82015250565b5f613494600f8361268a565b915061349f82613460565b602082019050919050565b5f6020820190508181035f8301526134c181613488565b9050919050565b7f77726f6e6720746f6b656e20666f7220636c61696d00000000000000000000005f82015250565b5f6134fc60158361268a565b9150613507826134c8565b602082019050919050565b5f6020820190508181035f830152613529816134f0565b9050919050565b7f6e6f207061727469636970616e747300000000000000000000000000000000005f82015250565b5f613564600f8361268a565b915061356f82613530565b602082019050919050565b5f6020820190508181035f83015261359181613558565b9050919050565b7f7a65726f207368617265000000000000000000000000000000000000000000005f82015250565b5f6135cc600a8361268a565b91506135d782613598565b602082019050919050565b5f6020820190508181035f8301526135f9816135c0565b9050919050565b7f7377656570206661696c000000000000000000000000000000000000000000005f82015250565b5f613634600a8361268a565b915061363f82613600565b602082019050919050565b5f6020820190508181035f83015261366181613628565b9050919050565b7f7a65726f20746f6b656e000000000000000000000000000000000000000000005f82015250565b5f61369c600a8361268a565b91506136a782613668565b602082019050919050565b5f6020820190508181035f8301526136c981613690565b9050919050565b7f7a65726f20616d6f756e740000000000000000000000000000000000000000005f82015250565b5f613704600b8361268a565b915061370f826136d0565b602082019050919050565b5f6020820190508181035f830152613731816136f8565b9050919050565b7f696e73756666696369656e7420746f6b656e2062616c616e63650000000000005f82015250565b5f61376c601a8361268a565b915061377782613738565b602082019050919050565b5f6020820190508181035f83015261379981613760565b9050919050565b5f6137aa826129e9565b9050919050565b6137ba816137a0565b82525050565b5f6040820190506137d35f8301856137b1565b6137e060208301846128d9565b9392505050565b5f81519050919050565b5f6137fb826137e7565b6138058185612c67565b9350613815818560208601612b47565b80840191505092915050565b5f61382c82846137f1565b91508190509291505056fea2646970667358221220cf3bae81d96745d1efe7e5a47f7853aa5a4ffc10a11398833d6628bfcc59111a64736f6c634300081800330000000000000000000000004200000000000000000000000000000000000006
Deployed Bytecode
0x60806040526004361061019f575f3560e01c8063a6f8e722116100eb578063ca998a2d11610089578063eacdc5ff11610063578063eacdc5ff146108bc578063ecfc7ecc146108e6578063f180e5d5146108f0578063f65357781461092c57610468565b8063ca998a2d1461082e578063d8e849461461086a578063e6d119991461089457610468565b8063b296024d116100c5578063b296024d14610774578063c030b03f1461079e578063c4807a06146107c8578063c996b4cd146107f257610468565b8063a6f8e722146106f3578063aa9bbc0c14610720578063ad5c46481461074a57610468565b8063420649d01161015857806361a8c8c41161013257806361a8c8c41461063b57806373c87a52146106655780637fced2981461068f5780639830ff6a146106cb57610468565b8063420649d01461059b57806343257a4e146105d75780634abd3ac11461061357610468565b80630d489fd4146104a357806314d10d9e146104cb57806316338ce2146104f5578063320e43511461051f57806336ebdb38146105495780633d26bb671461057157610468565b36610468575f60149054906101000a900460ff16156101f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ea906126e4565b60405180910390fd5b60015f60146101000a81548160ff0219169083151502179055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361029a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102919061274c565b60405180910390fd5b5f600254146102e1576064600360149054906101000a900460ff1660ff166002546102c591906127a0565b6102cf919061280e565b6002546102dc919061283e565b6102e5565b6001545b341015610327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031e906128bb565b60405180910390fd5b5f60025490505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050346002819055503360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156103d557505f8214155b156103e5576103e48183610956565b5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f0158f5674dc243762459b88cfc91b10d2d1ef9d40821cca978c2b680aa44468234856040516104449291906128e8565b60405180910390a350505f8060146101000a81548160ff0219169083151502179055005b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049a90612959565b60405180910390fd5b3480156104ae575f80fd5b506104c960048036038101906104c491906129a5565b610b63565b005b3480156104d6575f80fd5b506104df6111e5565b6040516104ec91906129d0565b60405180910390f35b348015610500575f80fd5b506105096111eb565b6040516105169190612a28565b60405180910390f35b34801561052a575f80fd5b50610533611210565b60405161054091906129d0565b60405180910390f35b348015610554575f80fd5b5061056f600480360381019061056a9190612a77565b611216565b005b34801561057c575f80fd5b50610585611308565b6040516105929190612a28565b60405180910390f35b3480156105a6575f80fd5b506105c160048036038101906105bc9190612acc565b611320565b6040516105ce91906129d0565b60405180910390f35b3480156105e2575f80fd5b506105fd60048036038101906105f891906129a5565b611368565b60405161060a91906129d0565b60405180910390f35b34801561061e575f80fd5b50610639600480360381019061063491906129a5565b61137d565b005b348015610646575f80fd5b5061064f611c27565b60405161065c91906129d0565b60405180910390f35b348015610670575f80fd5b50610679611c4c565b6040516106869190612b24565b60405180910390f35b34801561069a575f80fd5b506106b560048036038101906106b091906129a5565b611c65565b6040516106c291906129d0565b60405180910390f35b3480156106d6575f80fd5b506106f160048036038101906106ec91906129a5565b611c7a565b005b3480156106fe575f80fd5b50610707611dd3565b6040516107179493929190612bb7565b60405180910390f35b34801561072b575f80fd5b50610734611eaa565b60405161074191906129d0565b60405180910390f35b348015610755575f80fd5b5061075e611eb0565b60405161076b9190612a28565b60405180910390f35b34801561077f575f80fd5b50610788611ed4565b6040516107959190612c10565b60405180910390f35b3480156107a9575f80fd5b506107b2611ee7565b6040516107bf91906129d0565b60405180910390f35b3480156107d3575f80fd5b506107dc611f38565b6040516107e991906129d0565b60405180910390f35b3480156107fd575f80fd5b50610818600480360381019061081391906129a5565b611f3f565b60405161082591906129d0565b60405180910390f35b348015610839575f80fd5b50610854600480360381019061084f91906129a5565b611f88565b60405161086191906129d0565b60405180910390f35b348015610875575f80fd5b5061087e611f9d565b60405161088b91906129d0565b60405180910390f35b34801561089f575f80fd5b506108ba60048036038101906108b59190612c29565b611fa3565b005b3480156108c7575f80fd5b506108d061238e565b6040516108dd91906129d0565b60405180910390f35b6108ee6123aa565b005b3480156108fb575f80fd5b50610916600480360381019061091191906129a5565b61266f565b60405161092391906129d0565b60405180910390f35b348015610937575f80fd5b50610940612684565b60405161094d91906129d0565b60405180910390f35b5f81148061098f57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610b5f575f8273ffffffffffffffffffffffffffffffffffffffff16826040516109b890612c94565b5f6040518083038185875af1925050503d805f81146109f2576040519150601f19603f3d011682016040523d82523d5f602084013e6109f7565b606091505b5050905080610b5d577f000000000000000000000000420000000000000000000000000000000000000673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004015f604051808303818588803b158015610a66575f80fd5b505af1158015610a78573d5f803e3d5ffd5b50505050505f7f000000000000000000000000420000000000000000000000000000000000000673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401610ad9929190612ca8565b6020604051808303815f875af1158015610af5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b199190612cf9565b905080610b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5290612d6e565b60405180910390fd5b505b505b5050565b5f60149054906101000a900460ff1615610bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba9906126e4565b60405180910390fd5b60015f60146101000a81548160ff021916908315150217905550803373ffffffffffffffffffffffffffffffffffffffff1673bb56a9359df63014b3347585565d6f80ac6305fd73ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401610c3191906129d0565b602060405180830381865afa158015610c4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c709190612da0565b73ffffffffffffffffffffffffffffffffffffffff1614610cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbd90612e15565b60405180910390fd5b600173bb56a9359df63014b3347585565d6f80ac6305fd73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610d159190612a28565b602060405180830381865afa158015610d30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d549190612e47565b14610d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8b90612ebc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015610df5575060015460025410155b610e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2b90612f24565b60405180910390fd5b5f3073ffffffffffffffffffffffffffffffffffffffff1673bb56a9359df63014b3347585565d6f80ac6305fd73ffffffffffffffffffffffffffffffffffffffff1663081812fc856040518263ffffffff1660e01b8152600401610e9991906129d0565b602060405180830381865afa158015610eb4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed89190612da0565b73ffffffffffffffffffffffffffffffffffffffff161480610f84575073bb56a9359df63014b3347585565d6f80ac6305fd73ffffffffffffffffffffffffffffffffffffffff1663e985e9c533306040518363ffffffff1660e01b8152600401610f44929190612f42565b602060405180830381865afa158015610f5f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f839190612cf9565b5b905080610fc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbd90612fb3565b60405180910390fd5b5f60025490505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f3390505f6127106101f48561100791906127a0565b611011919061280e565b90505f600a82611021919061280e565b90505f81836110309190612fd1565b90505f838761103f9190612fd1565b905073bb56a9359df63014b3347585565d6f80ac6305fd73ffffffffffffffffffffffffffffffffffffffff166342842e0e86888d6040518463ffffffff1660e01b815260040161109293929190613004565b5f604051808303815f87803b1580156110a9575f80fd5b505af11580156110bb573d5f803e3d5ffd5b505050505f6002819055505f60035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111108582610956565b5f831115611142576111415f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610956565b5b8160045f828254611153919061283e565b92505081905550898673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb4879833faff071928ed3497873ded202ac16c839904d57bc0290cd9a4206b168a6040516111b891906129d0565b60405180910390a45050505050505050505f8060146101000a81548160ff02191690831515021790555050565b61e10081565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129a90613083565b60405180910390fd5b60328160ff1611156112ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e1906130eb565b60405180910390fd5b80600360146101000a81548160ff021916908360ff16021790555050565b73bb56a9359df63014b3347585565d6f80ac6305fd81565b5f8083836040516020016113359291906131c2565b604051602081830303815290604052805190602001209050600c5f8281526020019081526020015f205491505092915050565b600a602052805f5260405f205f915090505481565b5f60149054906101000a900460ff16156113cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c3906126e4565b60405180910390fd5b60015f60146101000a81548160ff021916908315150217905550803373ffffffffffffffffffffffffffffffffffffffff1673bb56a9359df63014b3347585565d6f80ac6305fd73ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161144b91906129d0565b602060405180830381865afa158015611466573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061148a9190612da0565b73ffffffffffffffffffffffffffffffffffffffff16146114e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d790612e15565b60405180910390fd5b600173bb56a9359df63014b3347585565d6f80ac6305fd73ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161152f9190612a28565b602060405180830381865afa15801561154a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156e9190612e47565b146115ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a590612ebc565b60405180910390fd5b5f62015180426115be91906131f8565b90505f81426115cd9190612fd1565b905061e100821080156115e15750600d5481115b15611704575f600d541415801561160a57505f600a5f600d5481526020019081526020015f2054115b801561162857505f60095f600d5481526020019081526020015f2054115b156116cb575f60095f600d5481526020019081526020015f2054600a5f600d5481526020019081526020015f2054611660919061280e565b90505f600b5f600d5481526020019081526020015f20548261168291906127a0565b90505f81600a5f600d5481526020019081526020015f20546116a49190612fd1565b90505f8111156116c7578060045f8282546116bf919061283e565b925050819055505b5050505b80600d819055508060065f60055481526020019081526020015f2081905550600160055f8282546116fc919061283e565b925050819055505b5f81336040516020016117189291906131c2565b6040516020818303038152906040528051906020012090505f8286604051602001611744929190613272565b6040516020818303038152906040528051906020012090505f83336040516020016117709291906132f2565b60405160208183030381529060405280519060200120905061e10085101561192e5760075f8481526020019081526020015f205f9054906101000a900460ff16156117f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e790613372565b60405180910390fd5b60075f8381526020019081526020015f205f9054906101000a900460ff161561184e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611845906133da565b60405180910390fd5b600160075f8581526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f8481526020019081526020015f205f6101000a81548160ff02191690831515021790555086600c5f8581526020019081526020015f2081905550600160095f8681526020019081526020015f205f8282540192505081905550863373ffffffffffffffffffffffffffffffffffffffff167f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee908660405161191c91906129d0565b60405180910390a35050505050611c0a565b5f600a5f8681526020019081526020015f205414801561194f57505f600454115b801561196b57505f60095f8681526020019081526020015f2054115b1561199057600454600a5f8681526020019081526020015f20819055505f6004819055505b60075f8481526020019081526020015f205f9054906101000a900460ff166119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490613442565b60405180910390fd5b60085f8281526020019081526020015f205f9054906101000a900460ff1615611a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a42906134aa565b60405180910390fd5b86600c5f8581526020019081526020015f205414611a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9590613512565b60405180910390fd5b5f60095f8681526020019081526020015f205490505f8111611af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aec9061357a565b60405180910390fd5b5f81600a5f8881526020019081526020015f2054611b13919061280e565b90505f8111611b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4e906135e2565b60405180910390fd5b600160085f8581526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f8881526020019081526020015f205f828254611ba1919061283e565b92505081905550611bb23382610956565b3373ffffffffffffffffffffffffffffffffffffffff167f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a8783604051611bfa9291906128e8565b60405180910390a2505050505050505b505f8060146101000a81548160ff02191690831515021790555050565b5f806201518042611c3891906131f8565b90508042611c469190612fd1565b91505090565b5f61e1006201518042611c5f91906131f8565b10905090565b6009602052805f5260405f205f915090505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfe90613083565b60405180910390fd5b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611d4c90612c94565b5f6040518083038185875af1925050503d805f8114611d86576040519150601f19603f3d011682016040523d82523d5f602084013e611d8b565b606091505b5050905080611dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc69061364a565b60405180910390fd5b5050565b60605f805f806201518042611de891906131f8565b9050600554935061e100811015611e49576040518060400160405280600481526020017f5349474e0000000000000000000000000000000000000000000000000000000081525094508092508061e100611e429190612fd1565b9150611ea3565b6040518060400160405280600581526020017f434c41494d000000000000000000000000000000000000000000000000000000815250945061e10081611e8f9190612fd1565b92508062015180611ea09190612fd1565b91505b5090919293565b60055481565b7f000000000000000000000000420000000000000000000000000000000000000681565b600360149054906101000a900460ff1681565b5f8060025414611f2f576064600360149054906101000a900460ff1660ff16600254611f1391906127a0565b611f1d919061280e565b600254611f2a919061283e565b611f33565b6001545b905090565b6201518081565b5f8060095f8481526020019081526020015f205490505f8114611f7e5780600a5f8581526020019081526020015f2054611f79919061280e565b611f80565b5f5b915050919050565b600b602052805f5260405f205f915090505481565b60045481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612030576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202790613083565b60405180910390fd5b5f60149054906101000a900460ff161561207f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612076906126e4565b60405180910390fd5b60015f60146101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fe906136b2565b60405180910390fd5b5f8111612149576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121409061371a565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016121839190612a28565b602060405180830381865afa15801561219e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121c29190612e47565b905081811015612207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fe90613782565b60405180910390fd5b5f808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168660405160240161225a9291906137c0565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516122c49190613821565b5f604051808303815f865af19150503d805f81146122fd576040519150601f19603f3d011682016040523d82523d5f602084013e612302565b606091505b509150915081801561232f57505f8151148061232e57508080602001905181019061232d9190612cf9565b5b5b61236e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123659061364a565b60405180910390fd5b5050505f8060146101000a81548160ff0219169083151502179055505050565b5f6201518061239b611c27565b6123a5919061280e565b905090565b5f60149054906101000a900460ff16156123f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f0906126e4565b60405180910390fd5b60015f60146101000a81548160ff0219169083151502179055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036124a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124979061274c565b60405180910390fd5b5f600254146124e7576064600360149054906101000a900460ff1660ff166002546124cb91906127a0565b6124d5919061280e565b6002546124e2919061283e565b6124eb565b6001545b34101561252d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612524906128bb565b60405180910390fd5b5f60025490505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050346002819055503360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156125db57505f8214155b156125eb576125ea8183610956565b5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f0158f5674dc243762459b88cfc91b10d2d1ef9d40821cca978c2b680aa444682348560405161264a9291906128e8565b60405180910390a350505f8060146101000a81548160ff021916908315150217905550565b6006602052805f5260405f205f915090505481565b60025481565b5f82825260208201905092915050565b7f5265656e7472616e6379000000000000000000000000000000000000000000005f82015250565b5f6126ce600a8361268a565b91506126d98261269a565b602082019050919050565b5f6020820190508181035f8301526126fb816126c2565b9050919050565b7f4f776e65722063616e6e6f7420626964000000000000000000000000000000005f82015250565b5f61273660108361268a565b915061274182612702565b602082019050919050565b5f6020820190508181035f8301526127638161272a565b9050919050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6127aa8261276a565b91506127b58361276a565b92508282026127c38161276a565b915082820484148315176127da576127d9612773565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6128188261276a565b91506128238361276a565b925082612833576128326127e1565b5b828204905092915050565b5f6128488261276a565b91506128538361276a565b925082820190508082111561286b5761286a612773565b5b92915050565b7f42696420746f6f206c6f770000000000000000000000000000000000000000005f82015250565b5f6128a5600b8361268a565b91506128b082612871565b602082019050919050565b5f6020820190508181035f8301526128d281612899565b9050919050565b6128e28161276a565b82525050565b5f6040820190506128fb5f8301856128d9565b61290860208301846128d9565b9392505050565b7f55736520726563656976652829000000000000000000000000000000000000005f82015250565b5f612943600d8361268a565b915061294e8261290f565b602082019050919050565b5f6020820190508181035f83015261297081612937565b9050919050565b5f80fd5b6129848161276a565b811461298e575f80fd5b50565b5f8135905061299f8161297b565b92915050565b5f602082840312156129ba576129b9612977565b5b5f6129c784828501612991565b91505092915050565b5f6020820190506129e35f8301846128d9565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a12826129e9565b9050919050565b612a2281612a08565b82525050565b5f602082019050612a3b5f830184612a19565b92915050565b5f60ff82169050919050565b612a5681612a41565b8114612a60575f80fd5b50565b5f81359050612a7181612a4d565b92915050565b5f60208284031215612a8c57612a8b612977565b5b5f612a9984828501612a63565b91505092915050565b612aab81612a08565b8114612ab5575f80fd5b50565b5f81359050612ac681612aa2565b92915050565b5f8060408385031215612ae257612ae1612977565b5b5f612aef85828601612991565b9250506020612b0085828601612ab8565b9150509250929050565b5f8115159050919050565b612b1e81612b0a565b82525050565b5f602082019050612b375f830184612b15565b92915050565b5f81519050919050565b5f5b83811015612b64578082015181840152602081019050612b49565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612b8982612b3d565b612b93818561268a565b9350612ba3818560208601612b47565b612bac81612b6f565b840191505092915050565b5f6080820190508181035f830152612bcf8187612b7f565b9050612bde60208301866128d9565b612beb60408301856128d9565b612bf860608301846128d9565b95945050505050565b612c0a81612a41565b82525050565b5f602082019050612c235f830184612c01565b92915050565b5f8060408385031215612c3f57612c3e612977565b5b5f612c4c85828601612ab8565b9250506020612c5d85828601612991565b9150509250929050565b5f81905092915050565b50565b5f612c7f5f83612c67565b9150612c8a82612c71565b5f82019050919050565b5f612c9e82612c74565b9150819050919050565b5f604082019050612cbb5f830185612a19565b612cc860208301846128d9565b9392505050565b612cd881612b0a565b8114612ce2575f80fd5b50565b5f81519050612cf381612ccf565b92915050565b5f60208284031215612d0e57612d0d612977565b5b5f612d1b84828501612ce5565b91505092915050565b7f57455448207472616e73666572206661696c65640000000000000000000000005f82015250565b5f612d5860148361268a565b9150612d6382612d24565b602082019050919050565b5f6020820190508181035f830152612d8581612d4c565b9050919050565b5f81519050612d9a81612aa2565b92915050565b5f60208284031215612db557612db4612977565b5b5f612dc284828501612d8c565b91505092915050565b7f4e6f74206f776e6572206f6620746f6b656e49640000000000000000000000005f82015250565b5f612dff60148361268a565b9150612e0a82612dcb565b602082019050919050565b5f6020820190508181035f830152612e2c81612df3565b9050919050565b5f81519050612e418161297b565b92915050565b5f60208284031215612e5c57612e5b612977565b5b5f612e6984828501612e33565b91505092915050565b7f4d75737420686f6c642065786163746c792031204e46540000000000000000005f82015250565b5f612ea660178361268a565b9150612eb182612e72565b602082019050919050565b5f6020820190508181035f830152612ed381612e9a565b9050919050565b7f4e6f2061637469766520626964000000000000000000000000000000000000005f82015250565b5f612f0e600d8361268a565b9150612f1982612eda565b602082019050919050565b5f6020820190508181035f830152612f3b81612f02565b9050919050565b5f604082019050612f555f830185612a19565b612f626020830184612a19565b9392505050565b7f417070726f766520746f6b656e20746f20636f6e7472616374206669727374005f82015250565b5f612f9d601f8361268a565b9150612fa882612f69565b602082019050919050565b5f6020820190508181035f830152612fca81612f91565b9050919050565b5f612fdb8261276a565b9150612fe68361276a565b9250828203905081811115612ffe57612ffd612773565b5b92915050565b5f6060820190506130175f830186612a19565b6130246020830185612a19565b61303160408301846128d9565b949350505050565b7f6f776e65720000000000000000000000000000000000000000000000000000005f82015250565b5f61306d60058361268a565b915061307882613039565b602082019050919050565b5f6020820190508181035f83015261309a81613061565b9050919050565b7f746f6f20686967680000000000000000000000000000000000000000000000005f82015250565b5f6130d560088361268a565b91506130e0826130a1565b602082019050919050565b5f6020820190508181035f830152613102816130c9565b9050919050565b5f81905092915050565b7f41000000000000000000000000000000000000000000000000000000000000005f82015250565b5f613147600183613109565b915061315282613113565b600182019050919050565b5f819050919050565b6131776131728261276a565b61315d565b82525050565b5f8160601b9050919050565b5f6131938261317d565b9050919050565b5f6131a482613189565b9050919050565b6131bc6131b782612a08565b61319a565b82525050565b5f6131cc8261313b565b91506131d88285613166565b6020820191506131e882846131ab565b6014820191508190509392505050565b5f6132028261276a565b915061320d8361276a565b92508261321d5761321c6127e1565b5b828206905092915050565b7f54000000000000000000000000000000000000000000000000000000000000005f82015250565b5f61325c600183613109565b915061326782613228565b600182019050919050565b5f61327c82613250565b91506132888285613166565b6020820191506132988284613166565b6020820191508190509392505050565b7f43000000000000000000000000000000000000000000000000000000000000005f82015250565b5f6132dc600183613109565b91506132e7826132a8565b600182019050919050565b5f6132fc826132d0565b91506133088285613166565b60208201915061331882846131ab565b6014820191508190509392505050565b7f616c7265616479207369676e65640000000000000000000000000000000000005f82015250565b5f61335c600e8361268a565b915061336782613328565b602082019050919050565b5f6020820190508181035f83015261338981613350565b9050919050565b7f746f6b656e2075736564000000000000000000000000000000000000000000005f82015250565b5f6133c4600a8361268a565b91506133cf82613390565b602082019050919050565b5f6020820190508181035f8301526133f1816133b8565b9050919050565b7f6e6f74207369676e6564000000000000000000000000000000000000000000005f82015250565b5f61342c600a8361268a565b9150613437826133f8565b602082019050919050565b5f6020820190508181035f83015261345981613420565b9050919050565b7f616c726561647920636c61696d656400000000000000000000000000000000005f82015250565b5f613494600f8361268a565b915061349f82613460565b602082019050919050565b5f6020820190508181035f8301526134c181613488565b9050919050565b7f77726f6e6720746f6b656e20666f7220636c61696d00000000000000000000005f82015250565b5f6134fc60158361268a565b9150613507826134c8565b602082019050919050565b5f6020820190508181035f830152613529816134f0565b9050919050565b7f6e6f207061727469636970616e747300000000000000000000000000000000005f82015250565b5f613564600f8361268a565b915061356f82613530565b602082019050919050565b5f6020820190508181035f83015261359181613558565b9050919050565b7f7a65726f207368617265000000000000000000000000000000000000000000005f82015250565b5f6135cc600a8361268a565b91506135d782613598565b602082019050919050565b5f6020820190508181035f8301526135f9816135c0565b9050919050565b7f7377656570206661696c000000000000000000000000000000000000000000005f82015250565b5f613634600a8361268a565b915061363f82613600565b602082019050919050565b5f6020820190508181035f83015261366181613628565b9050919050565b7f7a65726f20746f6b656e000000000000000000000000000000000000000000005f82015250565b5f61369c600a8361268a565b91506136a782613668565b602082019050919050565b5f6020820190508181035f8301526136c981613690565b9050919050565b7f7a65726f20616d6f756e740000000000000000000000000000000000000000005f82015250565b5f613704600b8361268a565b915061370f826136d0565b602082019050919050565b5f6020820190508181035f830152613731816136f8565b9050919050565b7f696e73756666696369656e7420746f6b656e2062616c616e63650000000000005f82015250565b5f61376c601a8361268a565b915061377782613738565b602082019050919050565b5f6020820190508181035f83015261379981613760565b9050919050565b5f6137aa826129e9565b9050919050565b6137ba816137a0565b82525050565b5f6040820190506137d35f8301856137b1565b6137e060208301846128d9565b9392505050565b5f81519050919050565b5f6137fb826137e7565b6138058185612c67565b9350613815818560208601612b47565b80840191505092915050565b5f61382c82846137f1565b91508190509291505056fea2646970667358221220cf3bae81d96745d1efe7e5a47f7853aa5a4ffc10a11398833d6628bfcc59111a64736f6c63430008180033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004200000000000000000000000000000000000006
-----Decoded View---------------
Arg [0] : _weth (address): 0x4200000000000000000000000000000000000006
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000004200000000000000000000000000000000000006
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.