ETH Price: $2,049.50 (-3.78%)
 

Overview

Max Total Supply

0 $REVL...

Holders

19

Transfers

5

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
UI Multiplier changes (based on UIMultiplierUpdated event). Displayed token amounts are scaled by the active multiplier.
Transaction Hash Block
Age
Multiplier Status
Source Code Verified Exact Match

Contract Name

REVLoans

Compiler Version
v0.8.23+commit.f704f362
Optimization Enabled
Yes with 550 runs
Other Settings
shanghai EvmVersion
License
-NA-
Contract Source Code (Solidity Standard Json-Input format)
Contract Security Audit
No Contract Security Audit SubmittedSubmit Audit Here

Contract Security Audit

Contract ABI
API
[{"inputs":[{"internalType":"contract IREVDeployer","name":"revnets","type":"address"},{"internalType":"uint256","name":"revId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"contract IPermit2","name":"permit2","type":"address"},{"internalType":"address","name":"trustedForwarder","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"PRBMath_MulDiv_Overflow","type":"error"},{"inputs":[{"internalType":"uint256","name":"collateralToReturn","type":"uint256"},{"internalType":"uint256","name":"loanCollateral","type":"uint256"}],"name":"REVLoans_CollateralExceedsLoan","type":"error"},{"inputs":[{"internalType":"uint256","name":"prepaidFeePercent","type":"uint256"},{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"REVLoans_InvalidPrepaidFeePercent","type":"error"},{"inputs":[{"internalType":"uint256","name":"timeSinceLoanCreated","type":"uint256"},{"internalType":"uint256","name":"loanLiquidationDuration","type":"uint256"}],"name":"REVLoans_LoanExpired","type":"error"},{"inputs":[{"internalType":"uint256","name":"newBorrowAmount","type":"uint256"},{"internalType":"uint256","name":"loanAmount","type":"uint256"}],"name":"REVLoans_NewBorrowAmountGreaterThanLoanAmount","type":"error"},{"inputs":[],"name":"REVLoans_NoMsgValueAllowed","type":"error"},{"inputs":[],"name":"REVLoans_NotEnoughCollateral","type":"error"},{"inputs":[{"internalType":"uint256","name":"maxRepayBorrowAmount","type":"uint256"},{"internalType":"uint256","name":"repayBorrowAmount","type":"uint256"}],"name":"REVLoans_OverMaxRepayBorrowAmount","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"REVLoans_OverflowAlert","type":"error"},{"inputs":[{"internalType":"uint256","name":"allowanceAmount","type":"uint256"},{"internalType":"uint256","name":"requiredAmount","type":"uint256"}],"name":"REVLoans_PermitAllowanceNotEnough","type":"error"},{"inputs":[{"internalType":"uint256","name":"newBorrowAmount","type":"uint256"},{"internalType":"uint256","name":"loanAmount","type":"uint256"}],"name":"REVLoans_ReallocatingMoreCollateralThanBorrowedAmountAllows","type":"error"},{"inputs":[{"internalType":"address","name":"revnetOwner","type":"address"},{"internalType":"address","name":"revnets","type":"address"}],"name":"REVLoans_RevnetsMismatch","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"REVLoans_Unauthorized","type":"error"},{"inputs":[{"internalType":"uint256","name":"minBorrowAmount","type":"uint256"},{"internalType":"uint256","name":"borrowAmount","type":"uint256"}],"name":"REVLoans_UnderMinBorrowAmount","type":"error"},{"inputs":[],"name":"REVLoans_ZeroCollateralLoanIsInvalid","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"loanId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"revnetId","type":"uint256"},{"components":[{"internalType":"uint112","name":"amount","type":"uint112"},{"internalType":"uint112","name":"collateral","type":"uint112"},{"internalType":"uint48","name":"createdAt","type":"uint48"},{"internalType":"uint16","name":"prepaidFeePercent","type":"uint16"},{"internalType":"uint32","name":"prepaidDuration","type":"uint32"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"contract IJBPayoutTerminal","name":"terminal","type":"address"}],"internalType":"struct REVLoanSource","name":"source","type":"tuple"}],"indexed":false,"internalType":"struct REVLoan","name":"loan","type":"tuple"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"contract IJBPayoutTerminal","name":"terminal","type":"address"}],"indexed":false,"internalType":"struct REVLoanSource","name":"source","type":"tuple"},{"indexed":false,"internalType":"uint256","name":"borrowAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"collateralCount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sourceFeeAmount","type":"uint256"},{"indexed":false,"internalType":"address payable","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"Borrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"loanId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"revnetId","type":"uint256"},{"components":[{"internalType":"uint112","name":"amount","type":"uint112"},{"internalType":"uint112","name":"collateral","type":"uint112"},{"internalType":"uint48","name":"createdAt","type":"uint48"},{"internalType":"uint16","name":"prepaidFeePercent","type":"uint16"},{"internalType":"uint32","name":"prepaidDuration","type":"uint32"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"contract IJBPayoutTerminal","name":"terminal","type":"address"}],"internalType":"struct REVLoanSource","name":"source","type":"tuple"}],"indexed":false,"internalType":"struct REVLoan","name":"loan","type":"tuple"},{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"Liquidate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"loanId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"revnetId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"reallocatedLoanId","type":"uint256"},{"components":[{"internalType":"uint112","name":"amount","type":"uint112"},{"internalType":"uint112","name":"collateral","type":"uint112"},{"internalType":"uint48","name":"createdAt","type":"uint48"},{"internalType":"uint16","name":"prepaidFeePercent","type":"uint16"},{"internalType":"uint32","name":"prepaidDuration","type":"uint32"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"contract IJBPayoutTerminal","name":"terminal","type":"address"}],"internalType":"struct REVLoanSource","name":"source","type":"tuple"}],"indexed":false,"internalType":"struct REVLoan","name":"reallocatedLoan","type":"tuple"},{"indexed":false,"internalType":"uint256","name":"removedcollateralCount","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"ReallocateCollateral","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"loanId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"revnetId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"paidOffLoanId","type":"uint256"},{"components":[{"internalType":"uint112","name":"amount","type":"uint112"},{"internalType":"uint112","name":"collateral","type":"uint112"},{"internalType":"uint48","name":"createdAt","type":"uint48"},{"internalType":"uint16","name":"prepaidFeePercent","type":"uint16"},{"internalType":"uint32","name":"prepaidDuration","type":"uint32"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"contract IJBPayoutTerminal","name":"terminal","type":"address"}],"internalType":"struct REVLoanSource","name":"source","type":"tuple"}],"indexed":false,"internalType":"struct REVLoan","name":"loan","type":"tuple"},{"components":[{"internalType":"uint112","name":"amount","type":"uint112"},{"internalType":"uint112","name":"collateral","type":"uint112"},{"internalType":"uint48","name":"createdAt","type":"uint48"},{"internalType":"uint16","name":"prepaidFeePercent","type":"uint16"},{"internalType":"uint32","name":"prepaidDuration","type":"uint32"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"contract IJBPayoutTerminal","name":"terminal","type":"address"}],"internalType":"struct REVLoanSource","name":"source","type":"tuple"}],"indexed":false,"internalType":"struct REVLoan","name":"paidOffLoan","type":"tuple"},{"indexed":false,"internalType":"uint256","name":"repayBorrowAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sourceFeeAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"collateralCountToReturn","type":"uint256"},{"indexed":false,"internalType":"address payable","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"RepayLoan","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IJBTokenUriResolver","name":"resolver","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"SetTokenUriResolver","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"CONTROLLER","outputs":[{"internalType":"contract IJBController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DIRECTORY","outputs":[{"internalType":"contract IJBDirectory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOAN_LIQUIDATION_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PREPAID_FEE_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_PREPAID_FEE_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT2","outputs":[{"internalType":"contract IPermit2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICES","outputs":[{"internalType":"contract IJBPrices","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROJECTS","outputs":[{"internalType":"contract IJBProjects","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REVNETS","outputs":[{"internalType":"contract IREVDeployer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REV_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REV_PREPAID_FEE_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"revnetId","type":"uint256"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"contract IJBPayoutTerminal","name":"terminal","type":"address"}],"internalType":"struct REVLoanSource","name":"source","type":"tuple"},{"internalType":"uint256","name":"minBorrowAmount","type":"uint256"},{"internalType":"uint256","name":"collateralCount","type":"uint256"},{"internalType":"address payable","name":"beneficiary","type":"address"},{"internalType":"uint256","name":"prepaidFeePercent","type":"uint256"}],"name":"borrowFrom","outputs":[{"internalType":"uint256","name":"loanId","type":"uint256"},{"components":[{"internalType":"uint112","name":"amount","type":"uint112"},{"internalType":"uint112","name":"collateral","type":"uint112"},{"internalType":"uint48","name":"createdAt","type":"uint48"},{"internalType":"uint16","name":"prepaidFeePercent","type":"uint16"},{"internalType":"uint32","name":"prepaidDuration","type":"uint32"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"contract IJBPayoutTerminal","name":"terminal","type":"address"}],"internalType":"struct REVLoanSource","name":"source","type":"tuple"}],"internalType":"struct REVLoan","name":"","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"revnetId","type":"uint256"},{"internalType":"uint256","name":"collateralCount","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"uint256","name":"currency","type":"uint256"}],"name":"borrowableAmountFrom","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint112","name":"amount","type":"uint112"},{"internalType":"uint112","name":"collateral","type":"uint112"},{"internalType":"uint48","name":"createdAt","type":"uint48"},{"internalType":"uint16","name":"prepaidFeePercent","type":"uint16"},{"internalType":"uint32","name":"prepaidDuration","type":"uint32"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"contract IJBPayoutTerminal","name":"terminal","type":"address"}],"internalType":"struct REVLoanSource","name":"source","type":"tuple"}],"internalType":"struct REVLoan","name":"loan","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"determineSourceFeeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"revnetId","type":"uint256"},{"internalType":"contract IJBPayoutTerminal","name":"terminal","type":"address"},{"internalType":"address","name":"token","type":"address"}],"name":"isLoanSourceOf","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"revnetId","type":"uint256"},{"internalType":"uint256","name":"startingLoanId","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"liquidateExpiredLoansFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"loanId","type":"uint256"}],"name":"loanOf","outputs":[{"components":[{"internalType":"uint112","name":"amount","type":"uint112"},{"internalType":"uint112","name":"collateral","type":"uint112"},{"internalType":"uint48","name":"createdAt","type":"uint48"},{"internalType":"uint16","name":"prepaidFeePercent","type":"uint16"},{"internalType":"uint32","name":"prepaidDuration","type":"uint32"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"contract IJBPayoutTerminal","name":"terminal","type":"address"}],"internalType":"struct REVLoanSource","name":"source","type":"tuple"}],"internalType":"struct REVLoan","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"revnetId","type":"uint256"}],"name":"loanSourcesOf","outputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"contract IJBPayoutTerminal","name":"terminal","type":"address"}],"internalType":"struct REVLoanSource[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"revnetId","type":"uint256"}],"name":"numberOfLoansFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"loanId","type":"uint256"},{"internalType":"uint256","name":"collateralCountToTransfer","type":"uint256"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"contract IJBPayoutTerminal","name":"terminal","type":"address"}],"internalType":"struct REVLoanSource","name":"source","type":"tuple"},{"internalType":"uint256","name":"minBorrowAmount","type":"uint256"},{"internalType":"uint256","name":"collateralCountToAdd","type":"uint256"},{"internalType":"address payable","name":"beneficiary","type":"address"},{"internalType":"uint256","name":"prepaidFeePercent","type":"uint256"}],"name":"reallocateCollateralFromLoan","outputs":[{"internalType":"uint256","name":"reallocatedLoanId","type":"uint256"},{"internalType":"uint256","name":"newLoanId","type":"uint256"},{"components":[{"internalType":"uint112","name":"amount","type":"uint112"},{"internalType":"uint112","name":"collateral","type":"uint112"},{"internalType":"uint48","name":"createdAt","type":"uint48"},{"internalType":"uint16","name":"prepaidFeePercent","type":"uint16"},{"internalType":"uint32","name":"prepaidDuration","type":"uint32"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"contract IJBPayoutTerminal","name":"terminal","type":"address"}],"internalType":"struct REVLoanSource","name":"source","type":"tuple"}],"internalType":"struct REVLoan","name":"reallocatedLoan","type":"tuple"},{"components":[{"internalType":"uint112","name":"amount","type":"uint112"},{"internalType":"uint112","name":"collateral","type":"uint112"},{"internalType":"uint48","name":"createdAt","type":"uint48"},{"internalType":"uint16","name":"prepaidFeePercent","type":"uint16"},{"internalType":"uint32","name":"prepaidDuration","type":"uint32"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"contract IJBPayoutTerminal","name":"terminal","type":"address"}],"internalType":"struct REVLoanSource","name":"source","type":"tuple"}],"internalType":"struct REVLoan","name":"newLoan","type":"tuple"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"loanId","type":"uint256"},{"internalType":"uint256","name":"maxRepayBorrowAmount","type":"uint256"},{"internalType":"uint256","name":"collateralCountToReturn","type":"uint256"},{"internalType":"address payable","name":"beneficiary","type":"address"},{"components":[{"internalType":"uint256","name":"sigDeadline","type":"uint256"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct JBSingleAllowance","name":"allowance","type":"tuple"}],"name":"repayLoan","outputs":[{"internalType":"uint256","name":"paidOffLoanId","type":"uint256"},{"components":[{"internalType":"uint112","name":"amount","type":"uint112"},{"internalType":"uint112","name":"collateral","type":"uint112"},{"internalType":"uint48","name":"createdAt","type":"uint48"},{"internalType":"uint16","name":"prepaidFeePercent","type":"uint16"},{"internalType":"uint32","name":"prepaidDuration","type":"uint32"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"contract IJBPayoutTerminal","name":"terminal","type":"address"}],"internalType":"struct REVLoanSource","name":"source","type":"tuple"}],"internalType":"struct REVLoan","name":"paidOffloan","type":"tuple"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"loanId","type":"uint256"}],"name":"revnetIdOfLoanWith","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IJBTokenUriResolver","name":"resolver","type":"address"}],"name":"setTokenUriResolver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"loanId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenUriResolver","outputs":[{"internalType":"contract IJBTokenUriResolver","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"revnetId","type":"uint256"},{"internalType":"contract IJBPayoutTerminal","name":"terminal","type":"address"},{"internalType":"address","name":"token","type":"address"}],"name":"totalBorrowedFrom","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"revnetId","type":"uint256"}],"name":"totalCollateralOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
61018060405234801562000011575f80fd5b5060405162005b4038038062005b408339810160408190526200003491620003b1565b828160405180604001604052806009815260200168524556204c6f616e7360b81b81525060405180604001604052806008815260200167122922ab2627a0a760c11b815250815f9081620000899190620004bf565b506001620000988282620004bf565b5050506001600160a01b039081166080528116620000cf57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b620000da8162000348565b506001600160a01b03851660e08190526040805163ee0fc12160e01b8152905163ee0fc121916004808201926020929091908290030181865afa15801562000124573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200014a91906200058b565b6001600160a01b031660c0816001600160a01b031681525050846001600160a01b03166388bc2ef36040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001c691906200058b565b6001600160a01b0316610100816001600160a01b031681525050846001600160a01b031663ee0fc1216040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200021d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200024391906200058b565b6001600160a01b0316631eabcd346040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200027f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a591906200058b565b6001600160a01b0316610120816001600160a01b031681525050846001600160a01b031663293c49996040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200032291906200058b565b6001600160a01b0390811661014052610160949094525090911660a05250620005b09050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0381168114620003ae575f80fd5b50565b5f805f805f60a08688031215620003c6575f80fd5b8551620003d38162000399565b602087015160408801519196509450620003ed8162000399565b6060870151909350620004008162000399565b6080870151909250620004138162000399565b809150509295509295909350565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200044a57607f821691505b6020821081036200046957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620004ba57805f5260205f20601f840160051c81016020851015620004965750805b601f840160051c820191505b81811015620004b7575f8155600101620004a2565b50505b505050565b81516001600160401b03811115620004db57620004db62000421565b620004f381620004ec845462000435565b846200046f565b602080601f83116001811462000529575f8415620005115750858301515b5f19600386901b1c1916600185901b17855562000583565b5f85815260208120601f198616915b82811015620005595788860151825594840194600190910190840162000538565b50858210156200057757878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f602082840312156200059c575f80fd5b8151620005a98162000399565b9392505050565b60805160a05160c05160e051610100516101205161014051610160516154af620006915f395f81816104750152818161296201528181612c25015281816137ab015261394901525f818161042d01526111ec01525f81816103bc0152613e1001525f818161068f0152818161181301528181611b95015261299a01525f81816109270152818161126101526112b701525f81816108b601528181612e6601528181612f5c015281816139fe0152613b4601525f81816105d801528181611e0201526123ea01525f81816105390152818161063b015261314601526154af5ff3fe608060405260043610610286575f3560e01c806370a0823111610151578063b88d4fde116100bc578063e4ba13c711610083578063f2fde38b11610060578063f2fde38b146108d8578063f8231e39146108f7578063fe91edd61461091657005b8063e4ba13c714610832578063e985e9c51461085e578063ee0fc121146108a557005b8063b88d4fde1461076b578063c4d8ea3c1461078a578063c87b56dd146107b5578063ddad5271146107d4578063e131fc0c1461081357005b80638da5cb5b11610118578063a22cb465116100f5578063a22cb4651461070e578063a33853d11461072d578063a4a0481a1461074c57005b80638da5cb5b146106b157806395d89b41146106ce578063a21cd6f8146106e257005b806370a08231146105fa578063715018a6146106195780637da0a8771461062d57806383b4cf2f1461065f57806388bc2ef31461067e57005b80632cc2cb63116101f157806350115869116101b8578063667079891161019557806366707989146105885780636a57728f146105b35780636afdd850146105c757005b806350115869146104e1578063572b6c051461051d5780636352211e1461056957005b80632cc2cb631461044f57806331011c5414610464578063325eefd9146104975780633e73ec33146104ab57806342842e0e146104c257005b806309c586211161024d57806323b872dd1161022a57806323b872dd146103de5780632407497e146103fd578063293c49991461041c57005b806309c58621146103675780630ba8827d146103885780631eabcd34146103ab57005b806301ffc9a71461028f5780630582928e146102c357806306fdde03146102f0578063081812fc14610311578063095ea7b31461034857005b3661028d57005b005b34801561029a575f80fd5b506102ae6102a93660046141ee565b610949565b60405190151581526020015b60405180910390f35b3480156102ce575f80fd5b506102e26102dd366004614209565b61099a565b6040519081526020016102ba565b3480156102fb575f80fd5b506103046109aa565b6040516102ba919061426d565b34801561031c575f80fd5b5061033061032b366004614209565b610a39565b6040516001600160a01b0390911681526020016102ba565b348015610353575f80fd5b5061028d610362366004614293565b610a60565b61037a6103753660046142bd565b610a76565b6040516102ba92919061439e565b61039b6103963660046143c9565b610d8f565b6040516102ba949392919061442d565b3480156103b6575f80fd5b506103307f000000000000000000000000000000000000000000000000000000000000000081565b3480156103e9575f80fd5b5061028d6103f8366004614457565b611011565b348015610408575f80fd5b5061028d610417366004614495565b6110a1565b348015610427575f80fd5b506103307f000000000000000000000000000000000000000000000000000000000000000081565b34801561045a575f80fd5b506102e26101f481565b34801561046f575f80fd5b506102e27f000000000000000000000000000000000000000000000000000000000000000081565b3480156104a2575f80fd5b506102e2601981565b3480156104b6575f80fd5b506102e26312cc030081565b3480156104cd575f80fd5b5061028d6104dc366004614457565b61110e565b3480156104ec575f80fd5b506102e26104fb3660046144b0565b600a60209081525f938452604080852082529284528284209052825290205481565b348015610528575f80fd5b506102ae610537366004614495565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b348015610574575f80fd5b50610330610583366004614209565b61112d565b348015610593575f80fd5b506102e26105a2366004614209565b600b6020525f908152604090205481565b3480156105be575f80fd5b506102e2600a81565b3480156105d2575f80fd5b506103307f000000000000000000000000000000000000000000000000000000000000000081565b348015610605575f80fd5b506102e2610614366004614495565b611137565b348015610624575f80fd5b5061028d61117c565b348015610638575f80fd5b507f0000000000000000000000000000000000000000000000000000000000000000610330565b34801561066a575f80fd5b5061037a6106793660046144ef565b61118f565b348015610689575f80fd5b506103307f000000000000000000000000000000000000000000000000000000000000000081565b3480156106bc575f80fd5b506006546001600160a01b0316610330565b3480156106d9575f80fd5b5061030461153b565b3480156106ed575f80fd5b506107016106fc366004614209565b61154a565b6040516102ba9190614548565b348015610719575f80fd5b5061028d6107283660046145b7565b6115d1565b348015610738575f80fd5b5061028d6107473660046145ee565b6115e3565b348015610757575f80fd5b506102e2610766366004614617565b611809565b348015610776575f80fd5b5061028d610785366004614798565b6118b0565b348015610795575f80fd5b506102e26107a4366004614209565b60086020525f908152604090205481565b3480156107c0575f80fd5b506103046107cf366004614209565b6118cf565b3480156107df575f80fd5b506102ae6107ee3660046144b0565b600760209081525f938452604080852082529284528284209052825290205460ff1681565b34801561081e575f80fd5b50600954610330906001600160a01b031681565b34801561083d575f80fd5b5061085161084c366004614209565b611968565b6040516102ba9190614800565b348015610869575f80fd5b506102ae61087836600461480e565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b3480156108b0575f80fd5b506103307f000000000000000000000000000000000000000000000000000000000000000081565b3480156108e3575f80fd5b5061028d6108f2366004614495565b611a4b565b348015610902575f80fd5b506102e2610911366004614881565b611a88565b348015610921575f80fd5b506103307f000000000000000000000000000000000000000000000000000000000000000081565b5f6001600160e01b031982166380ac58cd60e01b148061097957506001600160e01b03198216635b5e139f60e01b145b8061099457506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f61099464e8d4a510008361497e565b60605f80546109b89061499d565b80601f01602080910402602001604051908101604052809291908181526020018280546109e49061499d565b8015610a2f5780601f10610a0657610100808354040283529160200191610a2f565b820191905f5260205f20905b815481529060010190602001808311610a1257829003601f168201915b5050505050905090565b5f610a4382611a93565b505f828152600460205260409020546001600160a01b0316610994565b610a728282610a6d611acb565b611ad9565b5050565b5f610abb6040805160c0810182525f8082526020808301829052828401829052606083018290526080830182905283518085019094528184528301529060a082015290565b610ac3611acb565b6001600160a01b0316610aea885f908152600260205260409020546001600160a01b031690565b6001600160a01b031614610b4957610b00611acb565b5f888152600260205260409020546001600160a01b03165b6040516318d514bd60e21b81526001600160a01b039283166004820152911660248201526044015b60405180910390fd5b5f878152600d602052604090208054600160701b90046001600160701b0316861115610ba357805460405163b9c5041760e01b815260048101889052600160701b9091046001600160701b03166024820152604401610b40565b5f610bad8961099a565b82549091505f90610bdc9084908490610bd7908c90600160701b90046001600160701b03166149cf565b611ae6565b83549091506001600160701b0316811115610c1f5782546040516395e361d560e01b8152600481018390526001600160701b039091166024820152604401610b40565b82545f90610c379083906001600160701b03166149cf565b6040805160c08101825286546001600160701b038082168352600160701b90910416602080830191909152600188015465ffffffffffff811683850152600160301b810461ffff166060840152600160401b900463ffffffff166080830152825180840190935260028801546001600160a01b0390811684526003890154169083015260a08101919091529091505f90610cd19083611c2a565b9050610cdd81836149e2565b6002860154909250610d01906001600160a01b03168c610cfc8b6149f5565b611d12565b9a508a821115610d2e5760405163c4d4ea0d60e01b8152600481018c905260248101839052604401610b40565b610d3d8c868685858f8f611eee565b9097509550818b1115610d8057610d8030610d56611acb565b876002015f015f9054906101000a90046001600160a01b0316858f610d7b91906149cf565b6122aa565b50505050509550959350505050565b5f80610dd56040805160c0810182525f8082526020808301829052828401829052606083018290526080830182905283518085019094528184528301529060a082015290565b610e196040805160c0810182525f8082526020808301829052828401829052606083018290526080830182905283518085019094528184528301529060a082015290565b610e21611acb565b6001600160a01b0316610e488c5f908152600260205260409020546001600160a01b031690565b6001600160a01b031614610e7a57610e5e611acb565b5f8c8152600260205260409020546001600160a01b0316610b18565b5f610e848c61099a565b9050610e918c828d612447565b806040518060c00160405290815f82015f9054906101000a90046001600160701b03166001600160701b03166001600160701b031681526020015f8201600e9054906101000a90046001600160701b03166001600160701b03166001600160701b03168152602001600182015f9054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020016001820160069054906101000a900461ffff1661ffff1661ffff1681526020016001820160089054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600282016040518060400160405290815f82015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600182015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508152505090508094508196505050610ffb818b8b8b8f610ff491906149e2565b8b8b61118f565b959d909c50929a50939850909650505050505050565b6001600160a01b03821661103a57604051633250574960e11b81525f6004820152602401610b40565b5f61104d8383611048611acb565b6126a3565b9050836001600160a01b0316816001600160a01b03161461109b576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610b40565b50505050565b6110a9612795565b600980546001600160a01b0319166001600160a01b0383169081179091557fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c166110f0611acb565b6040516001600160a01b03909116815260200160405180910390a250565b61112883838360405180602001604052805f8152506118b0565b505050565b5f61099482611a93565b5f6001600160a01b038216611161576040516322718ad960e21b81525f6004820152602401610b40565b506001600160a01b03165f9081526003602052604090205490565b611184612795565b61118d5f6127f3565b565b5f6111d46040805160c0810182525f8082526020808301829052828401829052606083018290526080830182905283518085019094528184528301529060a082015290565b6040516331a9108f60e11b8152600481018990525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611239573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125d9190614aaf565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316146112e457604051630128886560e71b81526001600160a01b0380831660048301527f0000000000000000000000000000000000000000000000000000000000000000166024820152604401610b40565b855f0361130457604051631a39845d60e21b815260040160405180910390fd5b601984108061131457506101f484115b1561134457604051633a54873960e21b815260048101859052601960248201526101f46044820152606401610b40565b5f898152600860205260408120805461136d928c929161136390614aca565b9182905550612844565b5f818152600d60205260409020909350886002820161138c8282614ae2565b505060018101805461ffff8716600160301b0267ffffffffffffffff1990911664ffffffffff4216171790556113c9856312cc03006101f461285f565b8160010160086101000a81548163ffffffff021916908363ffffffff1602179055505f6113f7828c8a611ae6565b905088811015611424576040516304aefef560e51b8152600481018a905260248101829052604401610b40565b5f61142f828861292e565b905061143f838d848c858d61293c565b61145061144a611acb565b87612d0d565b8b867f90ac858b09db4f44113a984e09c297b5c0529be26c65a23a1b8967d4124ca5e4858e868e878f611481611acb565b6040516114949796959493929190614ba8565b60405180910390a350506040805160c08101825282546001600160701b038082168352600160701b90910416602080830191909152600184015465ffffffffffff81168385015261ffff600160301b820416606084015263ffffffff600160401b909104166080830152825180840190935260028401546001600160a01b0390811684526003909401549093169282019290925260a0820152915050965096945050505050565b6060600180546109b89061499d565b6060600c5f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b828210156115c6575f848152602090819020604080518082019091526002850290910180546001600160a01b0390811683526001918201541682840152908352909201910161157c565b505050509050919050565b610a726115dc611acb565b8383612d6e565b5f5b8181101561109b575f611601856115fc84876149e2565b612844565b5f818152600d60209081526040808320815160c08101835281546001600160701b038082168352600160701b9091041681850152600182015465ffffffffffff808216838601908152600160301b830461ffff166060850152600160401b90920463ffffffff166080840152845180860190955260028401546001600160a01b0390811686526003909401549093169484019490945260a08101929092529151939450921690036116b357505061109b565b5f828152600260205260409020546001600160a01b03168015806116f257506312cc0300826040015165ffffffffffff166116ee91906149e2565b4211155b156116ff57505050611801565b61170883612e0c565b60208201516001600160701b03161561174e5781602001516001600160701b0316600b5f8981526020019081526020015f205f82825461174891906149cf565b90915550505b81516001600160701b0316156117bb5781515f888152600a6020908152604080832060a0870180518401516001600160a01b0390811686529184528285209051519091168452909152812080546001600160701b03909316929091906117b59084906149cf565b90915550505b86837f2710408375e429523d39f7c37d7d73c1b816756d511f9cb07cd54215ead59f80846117e7611acb565b6040516117f5929190614c1f565b60405180910390a35050505b6001016115e5565b5f6118a5858585857f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d17541538b6040518263ffffffff1660e01b815260040161185f91815260200190565b5f60405180830381865afa158015611879573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526118a09190810190614c44565b612e44565b90505b949350505050565b6118bb848484611011565b61109b6118c6611acb565b8585858561300f565b6009546060906001600160a01b0316806118f857505060408051602081019091525f8152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa906024015f60405180830381865afa15801561193a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119619190810190614cf1565b9392505050565b6119ac6040805160c0810182525f8082526020808301829052828401829052606083018290526080830182905283518085019094528184528301529060a082015290565b505f908152600d6020908152604091829020825160c08101845281546001600160701b038082168352600160701b9091041681840152600182015465ffffffffffff811682860152600160301b810461ffff166060830152600160401b900463ffffffff166080820152835180850190945260028201546001600160a01b0390811685526003909201549091169183019190915260a081019190915290565b611a53612795565b6001600160a01b038116611a7c57604051631e4fbdf760e01b81525f6004820152602401610b40565b611a85816127f3565b50565b5f6119618383611c2a565b5f818152600260205260408120546001600160a01b03168061099457604051637e27328960e01b815260048101849052602401610b40565b5f611ad4613137565b905090565b61112883838360016131aa565b5f815f03611af557505f611961565b60038401546002850154604051633a01714f60e01b8152600481018690526001600160a01b0391821660248201525f929190911690633a01714f90604401606060405180830381865afa158015611b4e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b729190614d65565b60405163d175415360e01b8152600481018690529091505f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d1754153906024015f60405180830381865afa158015611bd9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c009190810190614c44565b9050611c208585846020015160ff16856040015163ffffffff1685612e44565b9695505050505050565b5f80836040015165ffffffffffff1642611c4491906149cf565b9050836080015163ffffffff16811115611d0b576312cc0300811115611c8a5760405163045be49160e01b8152600481018290526312cc03006024820152604401610b40565b5f611ca9855f01516001600160701b0316866060015161ffff1661292e565b90505f611cdd82875f01516001600160701b0316611cc791906149cf565b611cd8856103e86312cc030061285f565b61292e565b90505f81875f01516001600160701b0316611cf891906149e2565b9050611d0582878361285f565b94505050505b5092915050565b5f61eeed196001600160a01b03851601611d2d575034611961565b3415611d4c576040516314ac44cf60e21b815260040160405180910390fd5b60208201516001600160a01b031615611eb2578282602001516001600160a01b03161015611da55760208201516040516335c2b2a360e21b81526001600160a01b03909116600482015260248101849052604401610b40565b6040805160e0810182526001600160a01b038087166060808401918252602087810151841660808601528786015165ffffffffffff90811660a08701529188015190911660c08501529083523090830152845192820192909252907f000000000000000000000000000000000000000000000000000000000000000016632b67b570611e2f611acb565b8386608001516040518463ffffffff1660e01b8152600401611e5393929190614dda565b5f604051808303815f87803b158015611e6a575f80fd5b505af1925050508015611e7b575060015b611eb0573d808015611ea8576040519150601f19603f3d011682016040523d82523d5f602084013e611ead565b606091505b50505b505b5f611ebc856132cc565b9050611ed1611ec9611acb565b3087876122aa565b80611edb866132cc565b611ee591906149cf565b95945050505050565b5f611f336040805160c0810182525f8082526020808301829052828401829052606083018290526080830182905283518085019094528184528301529060a082015290565b611f3c89612e0c565b8754600160701b90046001600160701b0316840361204357611f6288885f80898861293c565b88878a7f791f716b9ed5747949be0a1d9657c61802806973871cbd7ffb8dbaff12b8b2c68b8c8b8b8b8b611f94611acb565b604051611fa79796959493929190614e4e565b60405180910390a450506040805160c08101825287546001600160701b038082168352600160701b90910416602080830191909152600189015465ffffffffffff811683850152600160301b810461ffff166060840152600160401b900463ffffffff166080830152825180840190935260028901546001600160a01b03908116845260038a0154169083015260a0810191909152879061229e565b5f8781526008602052604081208054612063918a91849061136390614aca565b5f818152600d602052604090208a5481546001600160701b039182166dffffffffffffffffffffffffffff198216811784558d546001600160e01b031990921617600160701b91829004909216021781556001808c018054918301805465ffffffffffff90931665ffffffffffff19841681178255825467ffffffffffffffff1990941617600160301b9384900461ffff169093029290921780835590546bffffffff000000000000000019909116600160401b9182900463ffffffff169091021790556002808c015490820180546001600160a01b039283166001600160a01b0319918216179091556003808e015490840180549190931691161790559091506121ac818a6121738a8c6149cf565b845461218891906001600160701b03166149cf565b84546121a5908b90600160701b90046001600160701b03166149cf565b8b8a61293c565b6121bd6121b7611acb565b83612d0d565b81898c7f791f716b9ed5747949be0a1d9657c61802806973871cbd7ffb8dbaff12b8b2c68d858d8d8d8d6121ef611acb565b6040516122029796959493929190614e4e565b60405180910390a46040805160c08101825282546001600160701b038082168352600160701b90910416602080830191909152600184015465ffffffffffff811683850152600160301b810461ffff166060840152600160401b900463ffffffff166080830152825180840190935260028401546001600160a01b0390811684526003909401549093169282019290925260a082015290925090505b97509795505050505050565b306001600160a01b038516036122f05761eeed196001600160a01b038316016122dc576122d78382613351565b61109b565b6122d76001600160a01b03831684836133dd565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa15801561233d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123619190614ea4565b1061237b576122d76001600160a01b03831685858461343c565b6001600160a01b038111156123b357604051633459303960e01b8152600481018290526001600160a01b036024820152604401610b40565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000000000000000000000000000000000016906336c78516906084015f604051808303815f87803b15801561242b575f80fd5b505af115801561243d573d5f803e3d5ffd5b5050505050505050565b5f8061245285612e0c565b5f858152600d602052604090208054600160701b90046001600160701b03168411156124915760405163c459ec8360e01b815260040160405180910390fd5b80545f906124b0908690600160701b90046001600160701b03166149cf565b90505f6124be838884611ae6565b83549091506001600160701b0316811015612501578254604051631b5de0b760e31b8152600481018390526001600160701b039091166024820152604401610b40565b5f8781526008602052604081208054612520928a929161136390614aca565b5f818152600d60205260408120855481546dffffffffffffffffffffffffffff1981166001600160701b0392831690811784558854600160701b908190048416026001600160e01b0319909216171780835560018089018054918501805465ffffffffffff19811665ffffffffffff9094169384178255825461ffff600160301b91829004160267ffffffffffffffff1990911690931792909217808355905463ffffffff600160401b9182900416026bffffffff00000000000000001990911617905560028089015490840180546001600160a01b03199081166001600160a01b03938416179091556003808b0154908601805490921692169190911790559398509096506126429287928b929190911690869061263d611acb565b61293c565b61265361264d611acb565b86612d0d565b8487897f7d3a0daefe69f98b6718ad00d0a9cf2dd50902a8db1b484d4238a86fea6be7c6878a612681611acb565b60405161269093929190614ebb565b60405180910390a4505050935093915050565b5f828152600260205260408120546001600160a01b03908116908316156126cf576126cf818486613475565b6001600160a01b03811615612709576126ea5f855f806131aa565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615612737576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b61279d611acb565b6001600160a01b03166127b86006546001600160a01b031690565b6001600160a01b03161461118d576127ce611acb565b60405163118cdaa760e01b81526001600160a01b039091166004820152602401610b40565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f8161285564e8d4a5100085614ee8565b61196191906149e2565b5f80805f19858709858702925082811083820303915050805f036128965783828161288c5761288c614956565b0492505050611961565b8381106128c757604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610b40565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f61196183836103e861285f565b85546001600160701b0316841115612ab1576002860154604051630862026560e41b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b0391821660248201525f917f00000000000000000000000000000000000000000000000000000000000000001690638620265090604401602060405180830381865afa1580156129df573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a039190614aaf565b6040805160c08101825289546001600160701b03808216808452600160701b9092041660208084019190915260018c015465ffffffffffff811684860152600160301b810461ffff166060850152600160401b900463ffffffff166080840152835180850190945260028c01546001600160a01b03908116855260038d0154169084015260a0820192909252919250612aab91908890612aa390896149cf565b8685876134d9565b50612b65565b85546001600160701b0316841015612b65576040805160c08101825287546001600160701b03808216808452600160701b9092041660208084019190915260018a015465ffffffffffff811684860152600160301b810461ffff166060850152600160401b900463ffffffff166080840152835180850190945260028a01546001600160a01b03908116855260038b0154169084015260a0820192909252612b65918790612b609088906149cf565b6138bc565b8554600160701b90046001600160701b0316831115612baa578554612ba5908690612ba090600160701b90046001600160701b0316866149cf565b6139d2565b612bec565b8554600160701b90046001600160701b0316831015612bec578554612bec908690612be6908690600160701b90046001600160701b03166149cf565b83613abd565b8115612ce057600386015460028701545f91612c15916001600160a01b03918216911685613bb0565b60038801546002890154604080517f000000000000000000000000000000000000000000000000000000000000000060208201529394506001600160a01b039283169363fef432579386938c93911691899189915f91016040516020818303038152906040526040518863ffffffff1660e01b8152600401612c9c96959493929190614eff565b60206040518083038185885af1158015612cb8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612cdd9190614ea4565b50505b505083546001600160701b03918216600160701b026001600160e01b031990911691909216171790915550565b6001600160a01b038216612d3657604051633250574960e11b81525f6004820152602401610b40565b5f612d4283835f6126a3565b90506001600160a01b03811615611128576040516339e3563760e11b81525f6004820152602401610b40565b6001600160a01b038216612da057604051630b61174360e31b81526001600160a01b0383166004820152602401610b40565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b5f612e185f835f6126a3565b90506001600160a01b038116610a7257604051637e27328960e01b815260048101839052602401610b40565b6040516320c94b1360e11b8152600481018690525f9081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063419296269060240161038060405180830381865afa158015612eac573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ed09190615114565b5090505f612f2b888583604051908082528060200260200182016040528015612f2357816020015b604080516060810182525f80825260208083018290529282015282525f19909201910181612ef85790505b508989613be8565b90505f612f39898888613c9f565b604051634da781a960e01b8152600481018b90529091505f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634da781a990602401602060405180830381865afa158015612fa1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fc59190614ea4565b5f8b8152600b6020526040902054909150613000612fe384866149e2565b8b612fee84866149e2565b61010089015160141c61ffff16613f05565b9b9a5050505050505050505050565b6001600160a01b0383163b1561313057604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906130519088908890879087906004016151e8565b6020604051808303815f875af192505050801561308b575060408051601f3d908101601f1916820190925261308891810190615219565b60015b6130f2573d8080156130b8576040519150601f19603f3d011682016040523d82523d5f602084013e6130bd565b606091505b5080515f036130ea57604051633250574960e11b81526001600160a01b0385166004820152602401610b40565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461312e57604051633250574960e11b81526001600160a01b0385166004820152602401610b40565b505b5050505050565b5f366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156131735750808210155b156131a2575f3661318483856149cf565b61318f928290615234565b6131989161525b565b60601c9250505090565b339250505090565b80806131be57506001600160a01b03821615155b1561329d575f6131cd84611a93565b90506001600160a01b038316158015906131f95750826001600160a01b0316816001600160a01b031614155b801561322a57506001600160a01b038082165f9081526005602090815260408083209387168352929052205460ff16155b156132535760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610b40565b811561329b5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b5f6001600160a01b03821661eeee1461334a576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613321573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133459190614ea4565b610994565b4792915050565b8047101561337b5760405163cf47918160e01b815247600482015260248101829052604401610b40565b5f80836001600160a01b0316836040515f6040518083038185875af1925050503d805f81146133c5576040519150601f19603f3d011682016040523d82523d5f602084013e6133ca565b606091505b50915091508161109b5761109b81613f6e565b6040516001600160a01b0383811660248301526044820183905261112891859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613f97565b6040516001600160a01b03848116602483015283811660448301526064820183905261109b9186918216906323b872dd9060840161340a565b613480838383614003565b611128576001600160a01b0383166134ae57604051637e27328960e01b815260048101829052602401610b40565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610b40565b5f85815260076020908152604080832060a08a0180518401516001600160a01b039081168652918452828520905151909116845290915290205460ff166135c4575f85815260076020908152604080832060a08a0180518401516001600160a01b039081168652918452828520815151831686528452828520805460ff191660019081179091558a8652600c85528386208451808601909552825151841685529151850151831684860190815282548083018455928752949095209251600290910290920180549282166001600160a01b031993841617815592519290930180549290931691161790555b5f858152600a6020908152604080832060a08a0180518401516001600160a01b03908116865291845282852090515190911684529091528120805486929061360d9084906149e2565b909155505060a086015160208101519051604051633a01714f60e01b8152600481018890526001600160a01b0391821660248201525f9283921690633a01714f90604401606060405180830381865afa15801561366c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136909190614d65565b60a0890151602081015190516040838101519051631d23a08760e21b8152600481018c90526001600160a01b039283166024820152604481018b905263ffffffff90911660648201525f60848201523060a482015286821660c482015261010060e482015260196101048201527f4c656e64696e67206f757420746f206120626f72726f77657200000000000000610124820152929350169063748e821c90610144016020604051808303815f875af115801561374f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137739190614ea4565b9150505f61378286600a61292e565b90505f613797858a60a001515f015184613bb0565b9050846001600160a01b031663fef43257827f00000000000000000000000000000000000000000000000000000000000000008c60a001515f015186895f8f6040516020016137e891815260200190565b6040516020818303038152906040526040518863ffffffff1660e01b815260040161381896959493929190614eff565b60206040518083038185885af193505050508015613853575060408051601f3d908101601f1916820190925261385091810190614ea4565b60015b61388c573d808015613880576040519150601f19603f3d011682016040523d82523d5f602084013e613885565b606091505b505061388e565b505b60a0890151516138b19030908690896138a787896149cf565b610d7b91906149cf565b505050505050505050565b5f828152600a6020908152604080832060a0870180518401516001600160a01b0390811686529184528285209051519091168452909152812080548392906139059084906149cf565b909155505060a0830151602081015190515f916139229184613bb0565b90508360a00151602001516001600160a01b0316639e6eec0582858760a001515f0151865f7f000000000000000000000000000000000000000000000000000000000000000060405160200161397a91815260200190565b6040516020818303038152906040526040518763ffffffff1660e01b81526004016139a9959493929190615290565b5f604051808303818588803b1580156139c0575f80fd5b505af11580156138b1573d5f803e3d5ffd5b5f828152600b6020526040812080548392906139ef9084906149e2565b90915550506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a2d532e6613a2b611acb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044810184905260806064820152601960848201527f416464696e6720636f6c6c61746572616c20746f206c6f616e0000000000000060a482015260c4015f604051808303815f87803b158015613aab575f80fd5b505af115801561312e573d5f803e3d5ffd5b5f838152600b602052604081208054849290613ada9084906149cf565b90915550506040516363fdc96f60e11b815260048101849052602481018390526001600160a01b03828116604483015260a06064830152601d60a48301527f52656d6f76696e6720636f6c6c61746572616c2066726f6d206c6f616e00000060c48301525f60848301527f0000000000000000000000000000000000000000000000000000000000000000169063c7fb92de9060e4016020604051808303815f875af1158015613b8c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109b9190614ea4565b5f61eeed196001600160a01b03841601613bcb575080611961565b613bdf6001600160a01b0384168584614083565b505f9392505050565b83515f90815b81811015613c9457868181518110613c0857613c086152fa565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b8152600401613c41949392919061530e565b602060405180830381865afa158015613c5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c809190614ea4565b613c8a90846149e2565b9250600101613bee565b505095945050505050565b5f838152600c6020908152604080832080548251818502810185019093528083528493849084015b82821015613d11575f848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101613cc7565b5050505090505f5b8151811015613efc575f828281518110613d3557613d356152fa565b602002602001015190505f81602001516001600160a01b0316633a01714f89845f01516040518363ffffffff1660e01b8152600401613d879291909182526001600160a01b0316602082015260400190565b606060405180830381865afa158015613da2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613dc69190614d65565b90505f86826040015163ffffffff1614613e86576040828101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101889052606481018990527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633be273fa90608401602060405180830381865afa158015613e5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e819190614ea4565b613e91565b613e9188600a61546e565b5f8a8152600a60208181526040808420888301516001600160a01b0390811686529083528185208951909116855290915290912054919250613ee0908290613eda908c9061546e565b8461285f565b613eea90886149e2565b96505060019093019250613d19915050565b50509392505050565b5f61270f198201613f1757505f6118a8565b828410613f255750836118a8565b5f613f3186868661285f565b9050825f03613f415790506118a8565b611c2081613f5085888861285f565b613f5c866127106149cf565b613f6691906149e2565b61271061285f565b805115613f7e5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f8060205f8451602086015f885af180613fb6576040513d5f823e3d81fd5b50505f513d91508115613fcd578060011415613fda565b6001600160a01b0384163b155b1561109b57604051635274afe760e01b81526001600160a01b0385166004820152602401610b40565b5f6001600160a01b038316158015906118a85750826001600160a01b0316846001600160a01b0316148061405b57506001600160a01b038085165f9081526005602090815260408083209387168352929052205460ff165b806118a85750505f908152600460205260409020546001600160a01b03908116911614919050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa1580156140d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140f49190614ea4565b905061109b848461410585856149e2565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526141568482614194565b61109b576040516001600160a01b0384811660248301525f604483015261418a91869182169063095ea7b39060640161340a565b61109b8482613f97565b5f805f8060205f8651602088015f8a5af192503d91505f519050828015611c20575081156141c55780600114611c20565b50505050506001600160a01b03163b151590565b6001600160e01b031981168114611a85575f80fd5b5f602082840312156141fe575f80fd5b8135611961816141d9565b5f60208284031215614219575f80fd5b5035919050565b5f5b8381101561423a578181015183820152602001614222565b50505f910152565b5f8151808452614259816020860160208601614220565b601f01601f19169290920160200192915050565b602081525f6119616020830184614242565b6001600160a01b0381168114611a85575f80fd5b5f80604083850312156142a4575f80fd5b82356142af8161427f565b946020939093013593505050565b5f805f805f60a086880312156142d1575f80fd5b85359450602086013593506040860135925060608601356142f18161427f565b9150608086013567ffffffffffffffff81111561430c575f80fd5b860160a0818903121561431d575f80fd5b809150509295509295909350565b6001600160701b038082511683528060208301511660208401525065ffffffffffff604082015116604083015261ffff606082015116606083015263ffffffff608082015116608083015260a081015161112860a084018280516001600160a01b03908116835260209182015116910152565b8281526101008101611961602083018461432b565b5f604082840312156143c3575f80fd5b50919050565b5f805f805f805f610100888a0312156143e0575f80fd5b87359650602088013595506143f88960408a016143b3565b94506080880135935060a0880135925060c08801356144168161427f565b8092505060e0880135905092959891949750929550565b848152602081018490526102008101614449604083018561432b565b611ee561012083018461432b565b5f805f60608486031215614469575f80fd5b83356144748161427f565b925060208401356144848161427f565b929592945050506040919091013590565b5f602082840312156144a5575f80fd5b81356119618161427f565b5f805f606084860312156144c2575f80fd5b8335925060208401356144d48161427f565b915060408401356144e48161427f565b809150509250925092565b5f805f805f8060e08789031215614504575f80fd5b8635955061451588602089016143b3565b9450606087013593506080870135925060a08701356145338161427f565b8092505060c087013590509295509295509295565b602080825282518282018190525f919060409081850190868401855b8281101561459d5761458d84835180516001600160a01b03908116835260209182015116910152565b9284019290850190600101614564565b5091979650505050505050565b8015158114611a85575f80fd5b5f80604083850312156145c8575f80fd5b82356145d38161427f565b915060208301356145e3816145aa565b809150509250929050565b5f805f60608486031215614600575f80fd5b505081359360208301359350604090920135919050565b5f805f806080858703121561462a575f80fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52604160045260245ffd5b60405160c0810167ffffffffffffffff8111828210171561467d5761467d614646565b60405290565b6040805190810167ffffffffffffffff8111828210171561467d5761467d614646565b604051610260810167ffffffffffffffff8111828210171561467d5761467d614646565b604051610120810167ffffffffffffffff8111828210171561467d5761467d614646565b604051601f8201601f1916810167ffffffffffffffff8111828210171561471757614717614646565b604052919050565b5f67ffffffffffffffff82111561473857614738614646565b50601f01601f191660200190565b5f82601f830112614755575f80fd5b81356147686147638261471f565b6146ee565b81815284602083860101111561477c575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80608085870312156147ab575f80fd5b84356147b68161427f565b935060208501356147c68161427f565b925060408501359150606085013567ffffffffffffffff8111156147e8575f80fd5b6147f487828801614746565b91505092959194509250565b60e08101610994828461432b565b5f806040838503121561481f575f80fd5b823561482a8161427f565b915060208301356145e38161427f565b6001600160701b0381168114611a85575f80fd5b65ffffffffffff81168114611a85575f80fd5b61ffff81168114611a85575f80fd5b63ffffffff81168114611a85575f80fd5b5f80828403610100811215614894575f80fd5b60e08112156148a1575f80fd5b6148a961465a565b84356148b48161483a565b815260208501356148c48161483a565b602082015260408501356148d78161484e565b604082015260608501356148ea81614861565b606082015260808501356148fd81614870565b60808201526040609f1983011215614913575f80fd5b61491b614683565b915060a085013561492b8161427f565b825260c085013561493b8161427f565b602083015260a08101919091529460e0939093013593505050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261499857634e487b7160e01b5f52601260045260245ffd5b500490565b600181811c908216806149b157607f821691505b6020821081036143c357634e487b7160e01b5f52602260045260245ffd5b818103818111156109945761099461496a565b808201808211156109945761099461496a565b5f60a08236031215614a05575f80fd5b60405160a0810167ffffffffffffffff8282108183111715614a2957614a29614646565b816040528435835260208501359150614a418261427f565b81602084015260408501359150614a578261484e565b81604084015260608501359150614a6d8261484e565b8160608401526080850135915080821115614a86575f80fd5b50614a9336828601614746565b60808301525092915050565b8051614aaa8161427f565b919050565b5f60208284031215614abf575f80fd5b81516119618161427f565b5f60018201614adb57614adb61496a565b5060010190565b8135614aed8161427f565b81546001600160a01b0319166001600160a01b038216178255506020820135614b158161427f565b6001820180546001600160a01b0319166001600160a01b038316179055505050565b80546001600160701b038082168452808260701c1660208501525050600181015465ffffffffffff8116604084015261ffff8160301c16606084015263ffffffff8160401c166080840152506001600160a01b038060028301541660a08401528060038301541660c0840152505050565b6101c08101614bb7828a614b37565b8735614bc28161427f565b6001600160a01b0390811660e0840152602089013590614be18261427f565b8082166101008501528861012085015287610140850152866101608501528086166101808501528085166101a0850152505098975050505050505050565b6101008101614c2e828561432b565b6001600160a01b03831660e08301529392505050565b5f6020808385031215614c55575f80fd5b825167ffffffffffffffff80821115614c6c575f80fd5b818501915085601f830112614c7f575f80fd5b815181811115614c9157614c91614646565b8060051b9150614ca28483016146ee565b8181529183018401918481019088841115614cbb575f80fd5b938501935b83851015614ce55784519250614cd58361427f565b8282529385019390850190614cc0565b98975050505050505050565b5f60208284031215614d01575f80fd5b815167ffffffffffffffff811115614d17575f80fd5b8201601f81018413614d27575f80fd5b8051614d356147638261471f565b818152856020838501011115614d49575f80fd5b611ee5826020830160208601614220565b8051614aaa81614870565b5f60608284031215614d75575f80fd5b6040516060810181811067ffffffffffffffff82111715614d9857614d98614646565b6040528251614da68161427f565b8152602083015160ff81168114614dbb575f80fd5b60208201526040830151614dce81614870565b60408201529392505050565b5f6101006001600160a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e0840152611c2081840185614242565b6102608101614e5d828a614b37565b614e6a60e0830189614b37565b6101c08201969096526101e08101949094526102008401929092526001600160a01b03908116610220840152166102409091015292915050565b5f60208284031215614eb4575f80fd5b5051919050565b6101208101614eca8286614b37565b8360e08301526001600160a01b038316610100830152949350505050565b80820281158282048414176109945761099461496a565b8681525f6001600160a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600d60e08301527f4665652066726f6d206c6f616e000000000000000000000000000000000000006101008301526101208060c0840152614f7281840185614242565b9998505050505050505050565b8051614aaa8161484e565b8051614aaa8161483a565b8051614aaa81614861565b8051614aaa816145aa565b5f6102608284031215614fbc575f80fd5b614fc46146a6565b9050614fcf82614f95565b8152614fdd60208301614f95565b6020820152614fee60408301614d5a565b6040820152614fff60608301614fa0565b606082015261501060808301614fa0565b608082015261502160a08301614fa0565b60a082015261503260c08301614fa0565b60c082015261504360e08301614fa0565b60e0820152610100615056818401614fa0565b90820152610120615068838201614fa0565b9082015261014061507a838201614fa0565b9082015261016061508c838201614fa0565b9082015261018061509e838201614fa0565b908201526101a06150b0838201614fa0565b908201526101c06150c2838201614fa0565b908201526101e06150d4838201614fa0565b908201526102006150e6838201614fa0565b908201526102206150f8838201614a9f565b9082015261024061510a838201614f95565b9082015292915050565b5f80828403610380811215615127575f80fd5b61012080821215615136575f80fd5b61513e6146ca565b915061514985614f7f565b825261515760208601614f7f565b602083015261516860408601614f7f565b604083015261517960608601614f7f565b606083015261518a60808601614d5a565b608083015261519b60a08601614f8a565b60a08301526151ac60c08601614d5a565b60c08301526151bd60e08601614a9f565b60e08301526101008086015181840152508193506151dd86828701614fab565b925050509250929050565b5f6001600160a01b03808716835280861660208401525083604083015260806060830152611c206080830184614242565b5f60208284031215615229575f80fd5b8151611961816141d9565b5f8085851115615242575f80fd5b8386111561524e575f80fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156152885780818660140360031b1b83161692505b505092915050565b8581526001600160a01b0385166020820152836040820152821515606082015260c06080820152600f60c08201527f506179696e67206f6666206c6f616e000000000000000000000000000000000060e08201525f6101008060a0840152614ce581840185614242565b634e487b7160e01b5f52603260045260245ffd5b5f6080820186835260206080602085015281875180845260a0860191506020890193505f5b8181101561537757845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff169084015293830193606090920191600101615333565b505060408501969096525050506060015292915050565b600181815b808511156153c857815f19048211156153ae576153ae61496a565b808516156153bb57918102915b93841c9390800290615393565b509250929050565b5f826153de57506001610994565b816153ea57505f610994565b8160018114615400576002811461540a57615426565b6001915050610994565b60ff84111561541b5761541b61496a565b50506001821b610994565b5060208310610133831016604e8410600b8410161715615449575081810a610994565b615453838361538e565b805f19048211156154665761546661496a565b029392505050565b5f61196183836153d056fea2646970667358221220e145ee1192a76a4f7b508484f382df6004b5f8b563b102bd4069d7a00406d12964736f6c63430008170033000000000000000000000000027f1684c6d31066c3f2468117f2508e8134fdfc00000000000000000000000000000000000000000000000000000000000000030000000000000000000000006b92c73682f0e1fac35a18ab17efa5e77dde9fe1000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba30000000000000000000000008a5ba591ed2bed5691a378c65611ed492500f887
Deployed Bytecode
0x608060405260043610610286575f3560e01c806370a0823111610151578063b88d4fde116100bc578063e4ba13c711610083578063f2fde38b11610060578063f2fde38b146108d8578063f8231e39146108f7578063fe91edd61461091657005b8063e4ba13c714610832578063e985e9c51461085e578063ee0fc121146108a557005b8063b88d4fde1461076b578063c4d8ea3c1461078a578063c87b56dd146107b5578063ddad5271146107d4578063e131fc0c1461081357005b80638da5cb5b11610118578063a22cb465116100f5578063a22cb4651461070e578063a33853d11461072d578063a4a0481a1461074c57005b80638da5cb5b146106b157806395d89b41146106ce578063a21cd6f8146106e257005b806370a08231146105fa578063715018a6146106195780637da0a8771461062d57806383b4cf2f1461065f57806388bc2ef31461067e57005b80632cc2cb63116101f157806350115869116101b8578063667079891161019557806366707989146105885780636a57728f146105b35780636afdd850146105c757005b806350115869146104e1578063572b6c051461051d5780636352211e1461056957005b80632cc2cb631461044f57806331011c5414610464578063325eefd9146104975780633e73ec33146104ab57806342842e0e146104c257005b806309c586211161024d57806323b872dd1161022a57806323b872dd146103de5780632407497e146103fd578063293c49991461041c57005b806309c58621146103675780630ba8827d146103885780631eabcd34146103ab57005b806301ffc9a71461028f5780630582928e146102c357806306fdde03146102f0578063081812fc14610311578063095ea7b31461034857005b3661028d57005b005b34801561029a575f80fd5b506102ae6102a93660046141ee565b610949565b60405190151581526020015b60405180910390f35b3480156102ce575f80fd5b506102e26102dd366004614209565b61099a565b6040519081526020016102ba565b3480156102fb575f80fd5b506103046109aa565b6040516102ba919061426d565b34801561031c575f80fd5b5061033061032b366004614209565b610a39565b6040516001600160a01b0390911681526020016102ba565b348015610353575f80fd5b5061028d610362366004614293565b610a60565b61037a6103753660046142bd565b610a76565b6040516102ba92919061439e565b61039b6103963660046143c9565b610d8f565b6040516102ba949392919061442d565b3480156103b6575f80fd5b506103307f000000000000000000000000e712d14b04f1a1fe464be930e3ea72b9b0a141d781565b3480156103e9575f80fd5b5061028d6103f8366004614457565b611011565b348015610408575f80fd5b5061028d610417366004614495565b6110a1565b348015610427575f80fd5b506103307f0000000000000000000000000b538a02610d7d3cc91ce2870f423e0a34d646ad81565b34801561045a575f80fd5b506102e26101f481565b34801561046f575f80fd5b506102e27f000000000000000000000000000000000000000000000000000000000000000381565b3480156104a2575f80fd5b506102e2601981565b3480156104b6575f80fd5b506102e26312cc030081565b3480156104cd575f80fd5b5061028d6104dc366004614457565b61110e565b3480156104ec575f80fd5b506102e26104fb3660046144b0565b600a60209081525f938452604080852082529284528284209052825290205481565b348015610528575f80fd5b506102ae610537366004614495565b7f0000000000000000000000008a5ba591ed2bed5691a378c65611ed492500f8876001600160a01b0390811691161490565b348015610574575f80fd5b50610330610583366004614209565b61112d565b348015610593575f80fd5b506102e26105a2366004614209565b600b6020525f908152604090205481565b3480156105be575f80fd5b506102e2600a81565b3480156105d2575f80fd5b506103307f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba381565b348015610605575f80fd5b506102e2610614366004614495565b611137565b348015610624575f80fd5b5061028d61117c565b348015610638575f80fd5b507f0000000000000000000000008a5ba591ed2bed5691a378c65611ed492500f887610330565b34801561066a575f80fd5b5061037a6106793660046144ef565b61118f565b348015610689575f80fd5b506103307f0000000000000000000000000bc9f153dee4d3d474ce0903775b9b2aaae9aa4181565b3480156106bc575f80fd5b506006546001600160a01b0316610330565b3480156106d9575f80fd5b5061030461153b565b3480156106ed575f80fd5b506107016106fc366004614209565b61154a565b6040516102ba9190614548565b348015610719575f80fd5b5061028d6107283660046145b7565b6115d1565b348015610738575f80fd5b5061028d6107473660046145ee565b6115e3565b348015610757575f80fd5b506102e2610766366004614617565b611809565b348015610776575f80fd5b5061028d610785366004614798565b6118b0565b348015610795575f80fd5b506102e26107a4366004614209565b60086020525f908152604090205481565b3480156107c0575f80fd5b506103046107cf366004614209565b6118cf565b3480156107df575f80fd5b506102ae6107ee3660046144b0565b600760209081525f938452604080852082529284528284209052825290205460ff1681565b34801561081e575f80fd5b50600954610330906001600160a01b031681565b34801561083d575f80fd5b5061085161084c366004614209565b611968565b6040516102ba9190614800565b348015610869575f80fd5b506102ae61087836600461480e565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b3480156108b0575f80fd5b506103307f000000000000000000000000b291844f213047eb9e1621ae555b1eae6700d55381565b3480156108e3575f80fd5b5061028d6108f2366004614495565b611a4b565b348015610902575f80fd5b506102e2610911366004614881565b611a88565b348015610921575f80fd5b506103307f000000000000000000000000027f1684c6d31066c3f2468117f2508e8134fdfc81565b5f6001600160e01b031982166380ac58cd60e01b148061097957506001600160e01b03198216635b5e139f60e01b145b8061099457506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f61099464e8d4a510008361497e565b60605f80546109b89061499d565b80601f01602080910402602001604051908101604052809291908181526020018280546109e49061499d565b8015610a2f5780601f10610a0657610100808354040283529160200191610a2f565b820191905f5260205f20905b815481529060010190602001808311610a1257829003601f168201915b5050505050905090565b5f610a4382611a93565b505f828152600460205260409020546001600160a01b0316610994565b610a728282610a6d611acb565b611ad9565b5050565b5f610abb6040805160c0810182525f8082526020808301829052828401829052606083018290526080830182905283518085019094528184528301529060a082015290565b610ac3611acb565b6001600160a01b0316610aea885f908152600260205260409020546001600160a01b031690565b6001600160a01b031614610b4957610b00611acb565b5f888152600260205260409020546001600160a01b03165b6040516318d514bd60e21b81526001600160a01b039283166004820152911660248201526044015b60405180910390fd5b5f878152600d602052604090208054600160701b90046001600160701b0316861115610ba357805460405163b9c5041760e01b815260048101889052600160701b9091046001600160701b03166024820152604401610b40565b5f610bad8961099a565b82549091505f90610bdc9084908490610bd7908c90600160701b90046001600160701b03166149cf565b611ae6565b83549091506001600160701b0316811115610c1f5782546040516395e361d560e01b8152600481018390526001600160701b039091166024820152604401610b40565b82545f90610c379083906001600160701b03166149cf565b6040805160c08101825286546001600160701b038082168352600160701b90910416602080830191909152600188015465ffffffffffff811683850152600160301b810461ffff166060840152600160401b900463ffffffff166080830152825180840190935260028801546001600160a01b0390811684526003890154169083015260a08101919091529091505f90610cd19083611c2a565b9050610cdd81836149e2565b6002860154909250610d01906001600160a01b03168c610cfc8b6149f5565b611d12565b9a508a821115610d2e5760405163c4d4ea0d60e01b8152600481018c905260248101839052604401610b40565b610d3d8c868685858f8f611eee565b9097509550818b1115610d8057610d8030610d56611acb565b876002015f015f9054906101000a90046001600160a01b0316858f610d7b91906149cf565b6122aa565b50505050509550959350505050565b5f80610dd56040805160c0810182525f8082526020808301829052828401829052606083018290526080830182905283518085019094528184528301529060a082015290565b610e196040805160c0810182525f8082526020808301829052828401829052606083018290526080830182905283518085019094528184528301529060a082015290565b610e21611acb565b6001600160a01b0316610e488c5f908152600260205260409020546001600160a01b031690565b6001600160a01b031614610e7a57610e5e611acb565b5f8c8152600260205260409020546001600160a01b0316610b18565b5f610e848c61099a565b9050610e918c828d612447565b806040518060c00160405290815f82015f9054906101000a90046001600160701b03166001600160701b03166001600160701b031681526020015f8201600e9054906101000a90046001600160701b03166001600160701b03166001600160701b03168152602001600182015f9054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020016001820160069054906101000a900461ffff1661ffff1661ffff1681526020016001820160089054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600282016040518060400160405290815f82015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600182015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815250508152505090508094508196505050610ffb818b8b8b8f610ff491906149e2565b8b8b61118f565b959d909c50929a50939850909650505050505050565b6001600160a01b03821661103a57604051633250574960e11b81525f6004820152602401610b40565b5f61104d8383611048611acb565b6126a3565b9050836001600160a01b0316816001600160a01b03161461109b576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610b40565b50505050565b6110a9612795565b600980546001600160a01b0319166001600160a01b0383169081179091557fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c166110f0611acb565b6040516001600160a01b03909116815260200160405180910390a250565b61112883838360405180602001604052805f8152506118b0565b505050565b5f61099482611a93565b5f6001600160a01b038216611161576040516322718ad960e21b81525f6004820152602401610b40565b506001600160a01b03165f9081526003602052604090205490565b611184612795565b61118d5f6127f3565b565b5f6111d46040805160c0810182525f8082526020808301829052828401829052606083018290526080830182905283518085019094528184528301529060a082015290565b6040516331a9108f60e11b8152600481018990525f907f0000000000000000000000000b538a02610d7d3cc91ce2870f423e0a34d646ad6001600160a01b031690636352211e90602401602060405180830381865afa158015611239573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125d9190614aaf565b90507f000000000000000000000000027f1684c6d31066c3f2468117f2508e8134fdfc6001600160a01b0316816001600160a01b0316146112e457604051630128886560e71b81526001600160a01b0380831660048301527f000000000000000000000000027f1684c6d31066c3f2468117f2508e8134fdfc166024820152604401610b40565b855f0361130457604051631a39845d60e21b815260040160405180910390fd5b601984108061131457506101f484115b1561134457604051633a54873960e21b815260048101859052601960248201526101f46044820152606401610b40565b5f898152600860205260408120805461136d928c929161136390614aca565b9182905550612844565b5f818152600d60205260409020909350886002820161138c8282614ae2565b505060018101805461ffff8716600160301b0267ffffffffffffffff1990911664ffffffffff4216171790556113c9856312cc03006101f461285f565b8160010160086101000a81548163ffffffff021916908363ffffffff1602179055505f6113f7828c8a611ae6565b905088811015611424576040516304aefef560e51b8152600481018a905260248101829052604401610b40565b5f61142f828861292e565b905061143f838d848c858d61293c565b61145061144a611acb565b87612d0d565b8b867f90ac858b09db4f44113a984e09c297b5c0529be26c65a23a1b8967d4124ca5e4858e868e878f611481611acb565b6040516114949796959493929190614ba8565b60405180910390a350506040805160c08101825282546001600160701b038082168352600160701b90910416602080830191909152600184015465ffffffffffff81168385015261ffff600160301b820416606084015263ffffffff600160401b909104166080830152825180840190935260028401546001600160a01b0390811684526003909401549093169282019290925260a0820152915050965096945050505050565b6060600180546109b89061499d565b6060600c5f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b828210156115c6575f848152602090819020604080518082019091526002850290910180546001600160a01b0390811683526001918201541682840152908352909201910161157c565b505050509050919050565b610a726115dc611acb565b8383612d6e565b5f5b8181101561109b575f611601856115fc84876149e2565b612844565b5f818152600d60209081526040808320815160c08101835281546001600160701b038082168352600160701b9091041681850152600182015465ffffffffffff808216838601908152600160301b830461ffff166060850152600160401b90920463ffffffff166080840152845180860190955260028401546001600160a01b0390811686526003909401549093169484019490945260a08101929092529151939450921690036116b357505061109b565b5f828152600260205260409020546001600160a01b03168015806116f257506312cc0300826040015165ffffffffffff166116ee91906149e2565b4211155b156116ff57505050611801565b61170883612e0c565b60208201516001600160701b03161561174e5781602001516001600160701b0316600b5f8981526020019081526020015f205f82825461174891906149cf565b90915550505b81516001600160701b0316156117bb5781515f888152600a6020908152604080832060a0870180518401516001600160a01b0390811686529184528285209051519091168452909152812080546001600160701b03909316929091906117b59084906149cf565b90915550505b86837f2710408375e429523d39f7c37d7d73c1b816756d511f9cb07cd54215ead59f80846117e7611acb565b6040516117f5929190614c1f565b60405180910390a35050505b6001016115e5565b5f6118a5858585857f0000000000000000000000000bc9f153dee4d3d474ce0903775b9b2aaae9aa416001600160a01b031663d17541538b6040518263ffffffff1660e01b815260040161185f91815260200190565b5f60405180830381865afa158015611879573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526118a09190810190614c44565b612e44565b90505b949350505050565b6118bb848484611011565b61109b6118c6611acb565b8585858561300f565b6009546060906001600160a01b0316806118f857505060408051602081019091525f8152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa906024015f60405180830381865afa15801561193a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119619190810190614cf1565b9392505050565b6119ac6040805160c0810182525f8082526020808301829052828401829052606083018290526080830182905283518085019094528184528301529060a082015290565b505f908152600d6020908152604091829020825160c08101845281546001600160701b038082168352600160701b9091041681840152600182015465ffffffffffff811682860152600160301b810461ffff166060830152600160401b900463ffffffff166080820152835180850190945260028201546001600160a01b0390811685526003909201549091169183019190915260a081019190915290565b611a53612795565b6001600160a01b038116611a7c57604051631e4fbdf760e01b81525f6004820152602401610b40565b611a85816127f3565b50565b5f6119618383611c2a565b5f818152600260205260408120546001600160a01b03168061099457604051637e27328960e01b815260048101849052602401610b40565b5f611ad4613137565b905090565b61112883838360016131aa565b5f815f03611af557505f611961565b60038401546002850154604051633a01714f60e01b8152600481018690526001600160a01b0391821660248201525f929190911690633a01714f90604401606060405180830381865afa158015611b4e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b729190614d65565b60405163d175415360e01b8152600481018690529091505f906001600160a01b037f0000000000000000000000000bc9f153dee4d3d474ce0903775b9b2aaae9aa41169063d1754153906024015f60405180830381865afa158015611bd9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611c009190810190614c44565b9050611c208585846020015160ff16856040015163ffffffff1685612e44565b9695505050505050565b5f80836040015165ffffffffffff1642611c4491906149cf565b9050836080015163ffffffff16811115611d0b576312cc0300811115611c8a5760405163045be49160e01b8152600481018290526312cc03006024820152604401610b40565b5f611ca9855f01516001600160701b0316866060015161ffff1661292e565b90505f611cdd82875f01516001600160701b0316611cc791906149cf565b611cd8856103e86312cc030061285f565b61292e565b90505f81875f01516001600160701b0316611cf891906149e2565b9050611d0582878361285f565b94505050505b5092915050565b5f61eeed196001600160a01b03851601611d2d575034611961565b3415611d4c576040516314ac44cf60e21b815260040160405180910390fd5b60208201516001600160a01b031615611eb2578282602001516001600160a01b03161015611da55760208201516040516335c2b2a360e21b81526001600160a01b03909116600482015260248101849052604401610b40565b6040805160e0810182526001600160a01b038087166060808401918252602087810151841660808601528786015165ffffffffffff90811660a08701529188015190911660c08501529083523090830152845192820192909252907f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316632b67b570611e2f611acb565b8386608001516040518463ffffffff1660e01b8152600401611e5393929190614dda565b5f604051808303815f87803b158015611e6a575f80fd5b505af1925050508015611e7b575060015b611eb0573d808015611ea8576040519150601f19603f3d011682016040523d82523d5f602084013e611ead565b606091505b50505b505b5f611ebc856132cc565b9050611ed1611ec9611acb565b3087876122aa565b80611edb866132cc565b611ee591906149cf565b95945050505050565b5f611f336040805160c0810182525f8082526020808301829052828401829052606083018290526080830182905283518085019094528184528301529060a082015290565b611f3c89612e0c565b8754600160701b90046001600160701b0316840361204357611f6288885f80898861293c565b88878a7f791f716b9ed5747949be0a1d9657c61802806973871cbd7ffb8dbaff12b8b2c68b8c8b8b8b8b611f94611acb565b604051611fa79796959493929190614e4e565b60405180910390a450506040805160c08101825287546001600160701b038082168352600160701b90910416602080830191909152600189015465ffffffffffff811683850152600160301b810461ffff166060840152600160401b900463ffffffff166080830152825180840190935260028901546001600160a01b03908116845260038a0154169083015260a0810191909152879061229e565b5f8781526008602052604081208054612063918a91849061136390614aca565b5f818152600d602052604090208a5481546001600160701b039182166dffffffffffffffffffffffffffff198216811784558d546001600160e01b031990921617600160701b91829004909216021781556001808c018054918301805465ffffffffffff90931665ffffffffffff19841681178255825467ffffffffffffffff1990941617600160301b9384900461ffff169093029290921780835590546bffffffff000000000000000019909116600160401b9182900463ffffffff169091021790556002808c015490820180546001600160a01b039283166001600160a01b0319918216179091556003808e015490840180549190931691161790559091506121ac818a6121738a8c6149cf565b845461218891906001600160701b03166149cf565b84546121a5908b90600160701b90046001600160701b03166149cf565b8b8a61293c565b6121bd6121b7611acb565b83612d0d565b81898c7f791f716b9ed5747949be0a1d9657c61802806973871cbd7ffb8dbaff12b8b2c68d858d8d8d8d6121ef611acb565b6040516122029796959493929190614e4e565b60405180910390a46040805160c08101825282546001600160701b038082168352600160701b90910416602080830191909152600184015465ffffffffffff811683850152600160301b810461ffff166060840152600160401b900463ffffffff166080830152825180840190935260028401546001600160a01b0390811684526003909401549093169282019290925260a082015290925090505b97509795505050505050565b306001600160a01b038516036122f05761eeed196001600160a01b038316016122dc576122d78382613351565b61109b565b6122d76001600160a01b03831684836133dd565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa15801561233d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123619190614ea4565b1061237b576122d76001600160a01b03831685858461343c565b6001600160a01b038111156123b357604051633459303960e01b8152600481018290526001600160a01b036024820152604401610b40565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316906336c78516906084015f604051808303815f87803b15801561242b575f80fd5b505af115801561243d573d5f803e3d5ffd5b5050505050505050565b5f8061245285612e0c565b5f858152600d602052604090208054600160701b90046001600160701b03168411156124915760405163c459ec8360e01b815260040160405180910390fd5b80545f906124b0908690600160701b90046001600160701b03166149cf565b90505f6124be838884611ae6565b83549091506001600160701b0316811015612501578254604051631b5de0b760e31b8152600481018390526001600160701b039091166024820152604401610b40565b5f8781526008602052604081208054612520928a929161136390614aca565b5f818152600d60205260408120855481546dffffffffffffffffffffffffffff1981166001600160701b0392831690811784558854600160701b908190048416026001600160e01b0319909216171780835560018089018054918501805465ffffffffffff19811665ffffffffffff9094169384178255825461ffff600160301b91829004160267ffffffffffffffff1990911690931792909217808355905463ffffffff600160401b9182900416026bffffffff00000000000000001990911617905560028089015490840180546001600160a01b03199081166001600160a01b03938416179091556003808b0154908601805490921692169190911790559398509096506126429287928b929190911690869061263d611acb565b61293c565b61265361264d611acb565b86612d0d565b8487897f7d3a0daefe69f98b6718ad00d0a9cf2dd50902a8db1b484d4238a86fea6be7c6878a612681611acb565b60405161269093929190614ebb565b60405180910390a4505050935093915050565b5f828152600260205260408120546001600160a01b03908116908316156126cf576126cf818486613475565b6001600160a01b03811615612709576126ea5f855f806131aa565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615612737576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b61279d611acb565b6001600160a01b03166127b86006546001600160a01b031690565b6001600160a01b03161461118d576127ce611acb565b60405163118cdaa760e01b81526001600160a01b039091166004820152602401610b40565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f8161285564e8d4a5100085614ee8565b61196191906149e2565b5f80805f19858709858702925082811083820303915050805f036128965783828161288c5761288c614956565b0492505050611961565b8381106128c757604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610b40565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f61196183836103e861285f565b85546001600160701b0316841115612ab1576002860154604051630862026560e41b81527f000000000000000000000000000000000000000000000000000000000000000360048201526001600160a01b0391821660248201525f917f0000000000000000000000000bc9f153dee4d3d474ce0903775b9b2aaae9aa411690638620265090604401602060405180830381865afa1580156129df573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a039190614aaf565b6040805160c08101825289546001600160701b03808216808452600160701b9092041660208084019190915260018c015465ffffffffffff811684860152600160301b810461ffff166060850152600160401b900463ffffffff166080840152835180850190945260028c01546001600160a01b03908116855260038d0154169084015260a0820192909252919250612aab91908890612aa390896149cf565b8685876134d9565b50612b65565b85546001600160701b0316841015612b65576040805160c08101825287546001600160701b03808216808452600160701b9092041660208084019190915260018a015465ffffffffffff811684860152600160301b810461ffff166060850152600160401b900463ffffffff166080840152835180850190945260028a01546001600160a01b03908116855260038b0154169084015260a0820192909252612b65918790612b609088906149cf565b6138bc565b8554600160701b90046001600160701b0316831115612baa578554612ba5908690612ba090600160701b90046001600160701b0316866149cf565b6139d2565b612bec565b8554600160701b90046001600160701b0316831015612bec578554612bec908690612be6908690600160701b90046001600160701b03166149cf565b83613abd565b8115612ce057600386015460028701545f91612c15916001600160a01b03918216911685613bb0565b60038801546002890154604080517f000000000000000000000000000000000000000000000000000000000000000360208201529394506001600160a01b039283169363fef432579386938c93911691899189915f91016040516020818303038152906040526040518863ffffffff1660e01b8152600401612c9c96959493929190614eff565b60206040518083038185885af1158015612cb8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612cdd9190614ea4565b50505b505083546001600160701b03918216600160701b026001600160e01b031990911691909216171790915550565b6001600160a01b038216612d3657604051633250574960e11b81525f6004820152602401610b40565b5f612d4283835f6126a3565b90506001600160a01b03811615611128576040516339e3563760e11b81525f6004820152602401610b40565b6001600160a01b038216612da057604051630b61174360e31b81526001600160a01b0383166004820152602401610b40565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b5f612e185f835f6126a3565b90506001600160a01b038116610a7257604051637e27328960e01b815260048101839052602401610b40565b6040516320c94b1360e11b8152600481018690525f9081906001600160a01b037f000000000000000000000000b291844f213047eb9e1621ae555b1eae6700d553169063419296269060240161038060405180830381865afa158015612eac573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ed09190615114565b5090505f612f2b888583604051908082528060200260200182016040528015612f2357816020015b604080516060810182525f80825260208083018290529282015282525f19909201910181612ef85790505b508989613be8565b90505f612f39898888613c9f565b604051634da781a960e01b8152600481018b90529091505f906001600160a01b037f000000000000000000000000b291844f213047eb9e1621ae555b1eae6700d5531690634da781a990602401602060405180830381865afa158015612fa1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fc59190614ea4565b5f8b8152600b6020526040902054909150613000612fe384866149e2565b8b612fee84866149e2565b61010089015160141c61ffff16613f05565b9b9a5050505050505050505050565b6001600160a01b0383163b1561313057604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906130519088908890879087906004016151e8565b6020604051808303815f875af192505050801561308b575060408051601f3d908101601f1916820190925261308891810190615219565b60015b6130f2573d8080156130b8576040519150601f19603f3d011682016040523d82523d5f602084013e6130bd565b606091505b5080515f036130ea57604051633250574960e11b81526001600160a01b0385166004820152602401610b40565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461312e57604051633250574960e11b81526001600160a01b0385166004820152602401610b40565b505b5050505050565b5f366014336001600160a01b037f0000000000000000000000008a5ba591ed2bed5691a378c65611ed492500f887161480156131735750808210155b156131a2575f3661318483856149cf565b61318f928290615234565b6131989161525b565b60601c9250505090565b339250505090565b80806131be57506001600160a01b03821615155b1561329d575f6131cd84611a93565b90506001600160a01b038316158015906131f95750826001600160a01b0316816001600160a01b031614155b801561322a57506001600160a01b038082165f9081526005602090815260408083209387168352929052205460ff16155b156132535760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610b40565b811561329b5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b5f6001600160a01b03821661eeee1461334a576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613321573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133459190614ea4565b610994565b4792915050565b8047101561337b5760405163cf47918160e01b815247600482015260248101829052604401610b40565b5f80836001600160a01b0316836040515f6040518083038185875af1925050503d805f81146133c5576040519150601f19603f3d011682016040523d82523d5f602084013e6133ca565b606091505b50915091508161109b5761109b81613f6e565b6040516001600160a01b0383811660248301526044820183905261112891859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613f97565b6040516001600160a01b03848116602483015283811660448301526064820183905261109b9186918216906323b872dd9060840161340a565b613480838383614003565b611128576001600160a01b0383166134ae57604051637e27328960e01b815260048101829052602401610b40565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610b40565b5f85815260076020908152604080832060a08a0180518401516001600160a01b039081168652918452828520905151909116845290915290205460ff166135c4575f85815260076020908152604080832060a08a0180518401516001600160a01b039081168652918452828520815151831686528452828520805460ff191660019081179091558a8652600c85528386208451808601909552825151841685529151850151831684860190815282548083018455928752949095209251600290910290920180549282166001600160a01b031993841617815592519290930180549290931691161790555b5f858152600a6020908152604080832060a08a0180518401516001600160a01b03908116865291845282852090515190911684529091528120805486929061360d9084906149e2565b909155505060a086015160208101519051604051633a01714f60e01b8152600481018890526001600160a01b0391821660248201525f9283921690633a01714f90604401606060405180830381865afa15801561366c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136909190614d65565b60a0890151602081015190516040838101519051631d23a08760e21b8152600481018c90526001600160a01b039283166024820152604481018b905263ffffffff90911660648201525f60848201523060a482015286821660c482015261010060e482015260196101048201527f4c656e64696e67206f757420746f206120626f72726f77657200000000000000610124820152929350169063748e821c90610144016020604051808303815f875af115801561374f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137739190614ea4565b9150505f61378286600a61292e565b90505f613797858a60a001515f015184613bb0565b9050846001600160a01b031663fef43257827f00000000000000000000000000000000000000000000000000000000000000038c60a001515f015186895f8f6040516020016137e891815260200190565b6040516020818303038152906040526040518863ffffffff1660e01b815260040161381896959493929190614eff565b60206040518083038185885af193505050508015613853575060408051601f3d908101601f1916820190925261385091810190614ea4565b60015b61388c573d808015613880576040519150601f19603f3d011682016040523d82523d5f602084013e613885565b606091505b505061388e565b505b60a0890151516138b19030908690896138a787896149cf565b610d7b91906149cf565b505050505050505050565b5f828152600a6020908152604080832060a0870180518401516001600160a01b0390811686529184528285209051519091168452909152812080548392906139059084906149cf565b909155505060a0830151602081015190515f916139229184613bb0565b90508360a00151602001516001600160a01b0316639e6eec0582858760a001515f0151865f7f000000000000000000000000000000000000000000000000000000000000000360405160200161397a91815260200190565b6040516020818303038152906040526040518763ffffffff1660e01b81526004016139a9959493929190615290565b5f604051808303818588803b1580156139c0575f80fd5b505af11580156138b1573d5f803e3d5ffd5b5f828152600b6020526040812080548392906139ef9084906149e2565b90915550506001600160a01b037f000000000000000000000000b291844f213047eb9e1621ae555b1eae6700d5531663a2d532e6613a2b611acb565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044810184905260806064820152601960848201527f416464696e6720636f6c6c61746572616c20746f206c6f616e0000000000000060a482015260c4015f604051808303815f87803b158015613aab575f80fd5b505af115801561312e573d5f803e3d5ffd5b5f838152600b602052604081208054849290613ada9084906149cf565b90915550506040516363fdc96f60e11b815260048101849052602481018390526001600160a01b03828116604483015260a06064830152601d60a48301527f52656d6f76696e6720636f6c6c61746572616c2066726f6d206c6f616e00000060c48301525f60848301527f000000000000000000000000b291844f213047eb9e1621ae555b1eae6700d553169063c7fb92de9060e4016020604051808303815f875af1158015613b8c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109b9190614ea4565b5f61eeed196001600160a01b03841601613bcb575080611961565b613bdf6001600160a01b0384168584614083565b505f9392505050565b83515f90815b81811015613c9457868181518110613c0857613c086152fa565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b8152600401613c41949392919061530e565b602060405180830381865afa158015613c5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c809190614ea4565b613c8a90846149e2565b9250600101613bee565b505095945050505050565b5f838152600c6020908152604080832080548251818502810185019093528083528493849084015b82821015613d11575f848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101613cc7565b5050505090505f5b8151811015613efc575f828281518110613d3557613d356152fa565b602002602001015190505f81602001516001600160a01b0316633a01714f89845f01516040518363ffffffff1660e01b8152600401613d879291909182526001600160a01b0316602082015260400190565b606060405180830381865afa158015613da2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613dc69190614d65565b90505f86826040015163ffffffff1614613e86576040828101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101889052606481018990527f000000000000000000000000e712d14b04f1a1fe464be930e3ea72b9b0a141d76001600160a01b031690633be273fa90608401602060405180830381865afa158015613e5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e819190614ea4565b613e91565b613e9188600a61546e565b5f8a8152600a60208181526040808420888301516001600160a01b0390811686529083528185208951909116855290915290912054919250613ee0908290613eda908c9061546e565b8461285f565b613eea90886149e2565b96505060019093019250613d19915050565b50509392505050565b5f61270f198201613f1757505f6118a8565b828410613f255750836118a8565b5f613f3186868661285f565b9050825f03613f415790506118a8565b611c2081613f5085888861285f565b613f5c866127106149cf565b613f6691906149e2565b61271061285f565b805115613f7e5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f8060205f8451602086015f885af180613fb6576040513d5f823e3d81fd5b50505f513d91508115613fcd578060011415613fda565b6001600160a01b0384163b155b1561109b57604051635274afe760e01b81526001600160a01b0385166004820152602401610b40565b5f6001600160a01b038316158015906118a85750826001600160a01b0316846001600160a01b0316148061405b57506001600160a01b038085165f9081526005602090815260408083209387168352929052205460ff165b806118a85750505f908152600460205260409020546001600160a01b03908116911614919050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa1580156140d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140f49190614ea4565b905061109b848461410585856149e2565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526141568482614194565b61109b576040516001600160a01b0384811660248301525f604483015261418a91869182169063095ea7b39060640161340a565b61109b8482613f97565b5f805f8060205f8651602088015f8a5af192503d91505f519050828015611c20575081156141c55780600114611c20565b50505050506001600160a01b03163b151590565b6001600160e01b031981168114611a85575f80fd5b5f602082840312156141fe575f80fd5b8135611961816141d9565b5f60208284031215614219575f80fd5b5035919050565b5f5b8381101561423a578181015183820152602001614222565b50505f910152565b5f8151808452614259816020860160208601614220565b601f01601f19169290920160200192915050565b602081525f6119616020830184614242565b6001600160a01b0381168114611a85575f80fd5b5f80604083850312156142a4575f80fd5b82356142af8161427f565b946020939093013593505050565b5f805f805f60a086880312156142d1575f80fd5b85359450602086013593506040860135925060608601356142f18161427f565b9150608086013567ffffffffffffffff81111561430c575f80fd5b860160a0818903121561431d575f80fd5b809150509295509295909350565b6001600160701b038082511683528060208301511660208401525065ffffffffffff604082015116604083015261ffff606082015116606083015263ffffffff608082015116608083015260a081015161112860a084018280516001600160a01b03908116835260209182015116910152565b8281526101008101611961602083018461432b565b5f604082840312156143c3575f80fd5b50919050565b5f805f805f805f610100888a0312156143e0575f80fd5b87359650602088013595506143f88960408a016143b3565b94506080880135935060a0880135925060c08801356144168161427f565b8092505060e0880135905092959891949750929550565b848152602081018490526102008101614449604083018561432b565b611ee561012083018461432b565b5f805f60608486031215614469575f80fd5b83356144748161427f565b925060208401356144848161427f565b929592945050506040919091013590565b5f602082840312156144a5575f80fd5b81356119618161427f565b5f805f606084860312156144c2575f80fd5b8335925060208401356144d48161427f565b915060408401356144e48161427f565b809150509250925092565b5f805f805f8060e08789031215614504575f80fd5b8635955061451588602089016143b3565b9450606087013593506080870135925060a08701356145338161427f565b8092505060c087013590509295509295509295565b602080825282518282018190525f919060409081850190868401855b8281101561459d5761458d84835180516001600160a01b03908116835260209182015116910152565b9284019290850190600101614564565b5091979650505050505050565b8015158114611a85575f80fd5b5f80604083850312156145c8575f80fd5b82356145d38161427f565b915060208301356145e3816145aa565b809150509250929050565b5f805f60608486031215614600575f80fd5b505081359360208301359350604090920135919050565b5f805f806080858703121561462a575f80fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52604160045260245ffd5b60405160c0810167ffffffffffffffff8111828210171561467d5761467d614646565b60405290565b6040805190810167ffffffffffffffff8111828210171561467d5761467d614646565b604051610260810167ffffffffffffffff8111828210171561467d5761467d614646565b604051610120810167ffffffffffffffff8111828210171561467d5761467d614646565b604051601f8201601f1916810167ffffffffffffffff8111828210171561471757614717614646565b604052919050565b5f67ffffffffffffffff82111561473857614738614646565b50601f01601f191660200190565b5f82601f830112614755575f80fd5b81356147686147638261471f565b6146ee565b81815284602083860101111561477c575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80608085870312156147ab575f80fd5b84356147b68161427f565b935060208501356147c68161427f565b925060408501359150606085013567ffffffffffffffff8111156147e8575f80fd5b6147f487828801614746565b91505092959194509250565b60e08101610994828461432b565b5f806040838503121561481f575f80fd5b823561482a8161427f565b915060208301356145e38161427f565b6001600160701b0381168114611a85575f80fd5b65ffffffffffff81168114611a85575f80fd5b61ffff81168114611a85575f80fd5b63ffffffff81168114611a85575f80fd5b5f80828403610100811215614894575f80fd5b60e08112156148a1575f80fd5b6148a961465a565b84356148b48161483a565b815260208501356148c48161483a565b602082015260408501356148d78161484e565b604082015260608501356148ea81614861565b606082015260808501356148fd81614870565b60808201526040609f1983011215614913575f80fd5b61491b614683565b915060a085013561492b8161427f565b825260c085013561493b8161427f565b602083015260a08101919091529460e0939093013593505050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261499857634e487b7160e01b5f52601260045260245ffd5b500490565b600181811c908216806149b157607f821691505b6020821081036143c357634e487b7160e01b5f52602260045260245ffd5b818103818111156109945761099461496a565b808201808211156109945761099461496a565b5f60a08236031215614a05575f80fd5b60405160a0810167ffffffffffffffff8282108183111715614a2957614a29614646565b816040528435835260208501359150614a418261427f565b81602084015260408501359150614a578261484e565b81604084015260608501359150614a6d8261484e565b8160608401526080850135915080821115614a86575f80fd5b50614a9336828601614746565b60808301525092915050565b8051614aaa8161427f565b919050565b5f60208284031215614abf575f80fd5b81516119618161427f565b5f60018201614adb57614adb61496a565b5060010190565b8135614aed8161427f565b81546001600160a01b0319166001600160a01b038216178255506020820135614b158161427f565b6001820180546001600160a01b0319166001600160a01b038316179055505050565b80546001600160701b038082168452808260701c1660208501525050600181015465ffffffffffff8116604084015261ffff8160301c16606084015263ffffffff8160401c166080840152506001600160a01b038060028301541660a08401528060038301541660c0840152505050565b6101c08101614bb7828a614b37565b8735614bc28161427f565b6001600160a01b0390811660e0840152602089013590614be18261427f565b8082166101008501528861012085015287610140850152866101608501528086166101808501528085166101a0850152505098975050505050505050565b6101008101614c2e828561432b565b6001600160a01b03831660e08301529392505050565b5f6020808385031215614c55575f80fd5b825167ffffffffffffffff80821115614c6c575f80fd5b818501915085601f830112614c7f575f80fd5b815181811115614c9157614c91614646565b8060051b9150614ca28483016146ee565b8181529183018401918481019088841115614cbb575f80fd5b938501935b83851015614ce55784519250614cd58361427f565b8282529385019390850190614cc0565b98975050505050505050565b5f60208284031215614d01575f80fd5b815167ffffffffffffffff811115614d17575f80fd5b8201601f81018413614d27575f80fd5b8051614d356147638261471f565b818152856020838501011115614d49575f80fd5b611ee5826020830160208601614220565b8051614aaa81614870565b5f60608284031215614d75575f80fd5b6040516060810181811067ffffffffffffffff82111715614d9857614d98614646565b6040528251614da68161427f565b8152602083015160ff81168114614dbb575f80fd5b60208201526040830151614dce81614870565b60408201529392505050565b5f6101006001600160a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e0840152611c2081840185614242565b6102608101614e5d828a614b37565b614e6a60e0830189614b37565b6101c08201969096526101e08101949094526102008401929092526001600160a01b03908116610220840152166102409091015292915050565b5f60208284031215614eb4575f80fd5b5051919050565b6101208101614eca8286614b37565b8360e08301526001600160a01b038316610100830152949350505050565b80820281158282048414176109945761099461496a565b8681525f6001600160a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600d60e08301527f4665652066726f6d206c6f616e000000000000000000000000000000000000006101008301526101208060c0840152614f7281840185614242565b9998505050505050505050565b8051614aaa8161484e565b8051614aaa8161483a565b8051614aaa81614861565b8051614aaa816145aa565b5f6102608284031215614fbc575f80fd5b614fc46146a6565b9050614fcf82614f95565b8152614fdd60208301614f95565b6020820152614fee60408301614d5a565b6040820152614fff60608301614fa0565b606082015261501060808301614fa0565b608082015261502160a08301614fa0565b60a082015261503260c08301614fa0565b60c082015261504360e08301614fa0565b60e0820152610100615056818401614fa0565b90820152610120615068838201614fa0565b9082015261014061507a838201614fa0565b9082015261016061508c838201614fa0565b9082015261018061509e838201614fa0565b908201526101a06150b0838201614fa0565b908201526101c06150c2838201614fa0565b908201526101e06150d4838201614fa0565b908201526102006150e6838201614fa0565b908201526102206150f8838201614a9f565b9082015261024061510a838201614f95565b9082015292915050565b5f80828403610380811215615127575f80fd5b61012080821215615136575f80fd5b61513e6146ca565b915061514985614f7f565b825261515760208601614f7f565b602083015261516860408601614f7f565b604083015261517960608601614f7f565b606083015261518a60808601614d5a565b608083015261519b60a08601614f8a565b60a08301526151ac60c08601614d5a565b60c08301526151bd60e08601614a9f565b60e08301526101008086015181840152508193506151dd86828701614fab565b925050509250929050565b5f6001600160a01b03808716835280861660208401525083604083015260806060830152611c206080830184614242565b5f60208284031215615229575f80fd5b8151611961816141d9565b5f8085851115615242575f80fd5b8386111561524e575f80fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156152885780818660140360031b1b83161692505b505092915050565b8581526001600160a01b0385166020820152836040820152821515606082015260c06080820152600f60c08201527f506179696e67206f6666206c6f616e000000000000000000000000000000000060e08201525f6101008060a0840152614ce581840185614242565b634e487b7160e01b5f52603260045260245ffd5b5f6080820186835260206080602085015281875180845260a0860191506020890193505f5b8181101561537757845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff169084015293830193606090920191600101615333565b505060408501969096525050506060015292915050565b600181815b808511156153c857815f19048211156153ae576153ae61496a565b808516156153bb57918102915b93841c9390800290615393565b509250929050565b5f826153de57506001610994565b816153ea57505f610994565b8160018114615400576002811461540a57615426565b6001915050610994565b60ff84111561541b5761541b61496a565b50506001821b610994565b5060208310610133831016604e8410600b8410161715615449575081810a610994565b615453838361538e565b805f19048211156154665761546661496a565b029392505050565b5f61196183836153d056fea2646970667358221220e145ee1192a76a4f7b508484f382df6004b5f8b563b102bd4069d7a00406d12964736f6c63430008170033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000027f1684c6d31066c3f2468117f2508e8134fdfc00000000000000000000000000000000000000000000000000000000000000030000000000000000000000006b92c73682f0e1fac35a18ab17efa5e77dde9fe1000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba30000000000000000000000008a5ba591ed2bed5691a378c65611ed492500f887

-----Decoded View---------------
Arg [0] : revnets (address): 0x027F1684c6D31066c3f2468117f2508e8134Fdfc
Arg [1] : revId (uint256): 3
Arg [2] : owner (address): 0x6b92c73682f0e1fac35A18ab17efa5e77DDE9fE1
Arg [3] : permit2 (address): 0x000000000022D473030F116dDEE9F6B43aC78BA3
Arg [4] : trustedForwarder (address): 0x8A5ba591Ed2bed5691a378C65611eD492500f887

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000027f1684c6d31066c3f2468117f2508e8134fdfc
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [2] : 0000000000000000000000006b92c73682f0e1fac35a18ab17efa5e77dde9fe1
Arg [3] : 000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3
Arg [4] : 0000000000000000000000008a5ba591ed2bed5691a378c65611ed492500f887

🤖 Code Reader

Generate instant answers for your smart contract questions using Al Models. Read more.

Custom Contract ABI

                                
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.