Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Latest 9 from a total of 9 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
Amount
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Update Prices | 25989202 | 391 days ago | IN | 0 ETH | 0.00000033 | ||||
| Apply Dest Chain... | 25989188 | 391 days ago | IN | 0 ETH | 0.00000044 | ||||
| Apply Dest Chain... | 24566319 | 424 days ago | IN | 0 ETH | 0.00000005 | ||||
| Update Prices | 24547412 | 424 days ago | IN | 0 ETH | 0.00000005 | ||||
| Apply Dest Chain... | 24533745 | 425 days ago | IN | 0 ETH | 0.00000009 | ||||
| Apply Token Tran... | 22334668 | 476 days ago | IN | 0 ETH | 0.00000039 | ||||
| Apply Dest Chain... | 21828680 | 487 days ago | IN | 0 ETH | 0.00000033 | ||||
| Update Prices | 21828448 | 487 days ago | IN | 0 ETH | 0.00000017 | ||||
| Apply Authorized... | 21820780 | 488 days ago | IN | 0 ETH | 0.00000012 |
Loading...
Loading
Contract Source Code (Solidity Standard Json-Input format)
Contract ABI
API[{"inputs":[{"components":[{"internalType":"uint96","name":"maxFeeJuelsPerMsg","type":"uint96"},{"internalType":"address","name":"linkToken","type":"address"},{"internalType":"uint32","name":"tokenPriceStalenessThreshold","type":"uint32"}],"internalType":"struct FeeQuoter.StaticConfig","name":"staticConfig","type":"tuple"},{"internalType":"address[]","name":"priceUpdaters","type":"address[]"},{"internalType":"address[]","name":"feeTokens","type":"address[]"},{"components":[{"internalType":"address","name":"sourceToken","type":"address"},{"components":[{"internalType":"address","name":"dataFeedAddress","type":"address"},{"internalType":"uint8","name":"tokenDecimals","type":"uint8"},{"internalType":"bool","name":"isEnabled","type":"bool"}],"internalType":"struct FeeQuoter.TokenPriceFeedConfig","name":"feedConfig","type":"tuple"}],"internalType":"struct FeeQuoter.TokenPriceFeedUpdate[]","name":"tokenPriceFeeds","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"components":[{"internalType":"address","name":"token","type":"address"},{"components":[{"internalType":"uint32","name":"minFeeUSDCents","type":"uint32"},{"internalType":"uint32","name":"maxFeeUSDCents","type":"uint32"},{"internalType":"uint16","name":"deciBps","type":"uint16"},{"internalType":"uint32","name":"destGasOverhead","type":"uint32"},{"internalType":"uint32","name":"destBytesOverhead","type":"uint32"},{"internalType":"bool","name":"isEnabled","type":"bool"}],"internalType":"struct FeeQuoter.TokenTransferFeeConfig","name":"tokenTransferFeeConfig","type":"tuple"}],"internalType":"struct FeeQuoter.TokenTransferFeeConfigSingleTokenArgs[]","name":"tokenTransferFeeConfigs","type":"tuple[]"}],"internalType":"struct FeeQuoter.TokenTransferFeeConfigArgs[]","name":"tokenTransferFeeConfigArgs","type":"tuple[]"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint64","name":"premiumMultiplierWeiPerEth","type":"uint64"}],"internalType":"struct FeeQuoter.PremiumMultiplierWeiPerEthArgs[]","name":"premiumMultiplierWeiPerEthArgs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"components":[{"internalType":"bool","name":"isEnabled","type":"bool"},{"internalType":"uint16","name":"maxNumberOfTokensPerMsg","type":"uint16"},{"internalType":"uint32","name":"maxDataBytes","type":"uint32"},{"internalType":"uint32","name":"maxPerMsgGasLimit","type":"uint32"},{"internalType":"uint32","name":"destGasOverhead","type":"uint32"},{"internalType":"uint8","name":"destGasPerPayloadByteBase","type":"uint8"},{"internalType":"uint8","name":"destGasPerPayloadByteHigh","type":"uint8"},{"internalType":"uint16","name":"destGasPerPayloadByteThreshold","type":"uint16"},{"internalType":"uint32","name":"destDataAvailabilityOverheadGas","type":"uint32"},{"internalType":"uint16","name":"destGasPerDataAvailabilityByte","type":"uint16"},{"internalType":"uint16","name":"destDataAvailabilityMultiplierBps","type":"uint16"},{"internalType":"bytes4","name":"chainFamilySelector","type":"bytes4"},{"internalType":"bool","name":"enforceOutOfOrder","type":"bool"},{"internalType":"uint16","name":"defaultTokenFeeUSDCents","type":"uint16"},{"internalType":"uint32","name":"defaultTokenDestGasOverhead","type":"uint32"},{"internalType":"uint32","name":"defaultTxGasLimit","type":"uint32"},{"internalType":"uint64","name":"gasMultiplierWeiPerEth","type":"uint64"},{"internalType":"uint32","name":"gasPriceStalenessThreshold","type":"uint32"},{"internalType":"uint32","name":"networkFeeUSDCents","type":"uint32"}],"internalType":"struct FeeQuoter.DestChainConfig","name":"destChainConfig","type":"tuple"}],"internalType":"struct FeeQuoter.DestChainConfigArgs[]","name":"destChainConfigArgs","type":"tuple[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CannotTransferToSelf","type":"error"},{"inputs":[],"name":"DataFeedValueOutOfUint224Range","type":"error"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"}],"name":"DestinationChainNotEnabled","type":"error"},{"inputs":[],"name":"ExtraArgOutOfOrderExecutionMustBeTrue","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"FeeTokenNotSupported","type":"error"},{"inputs":[{"internalType":"bytes4","name":"chainFamilySelector","type":"bytes4"}],"name":"InvalidChainFamilySelector","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint32","name":"destBytesOverhead","type":"uint32"}],"name":"InvalidDestBytesOverhead","type":"error"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"}],"name":"InvalidDestChainConfig","type":"error"},{"inputs":[{"internalType":"bytes","name":"encodedAddress","type":"bytes"}],"name":"InvalidEVMAddress","type":"error"},{"inputs":[],"name":"InvalidExtraArgsData","type":"error"},{"inputs":[],"name":"InvalidExtraArgsTag","type":"error"},{"inputs":[{"internalType":"uint256","name":"minFeeUSDCents","type":"uint256"},{"internalType":"uint256","name":"maxFeeUSDCents","type":"uint256"}],"name":"InvalidFeeRange","type":"error"},{"inputs":[{"internalType":"bytes","name":"SVMAddress","type":"bytes"}],"name":"InvalidSVMAddress","type":"error"},{"inputs":[{"internalType":"uint64","name":"accountIsWritableBitmap","type":"uint64"},{"internalType":"uint256","name":"numAccounts","type":"uint256"}],"name":"InvalidSVMExtraArgsWritableBitmap","type":"error"},{"inputs":[],"name":"InvalidStaticConfig","type":"error"},{"inputs":[],"name":"InvalidTokenReceiver","type":"error"},{"inputs":[],"name":"MessageComputeUnitLimitTooHigh","type":"error"},{"inputs":[{"internalType":"uint256","name":"msgFeeJuels","type":"uint256"},{"internalType":"uint256","name":"maxFeeJuelsPerMsg","type":"uint256"}],"name":"MessageFeeTooHigh","type":"error"},{"inputs":[],"name":"MessageGasLimitTooHigh","type":"error"},{"inputs":[{"internalType":"uint256","name":"maxSize","type":"uint256"},{"internalType":"uint256","name":"actualSize","type":"uint256"}],"name":"MessageTooLarge","type":"error"},{"inputs":[],"name":"MustBeProposedOwner","type":"error"},{"inputs":[],"name":"OnlyCallableByOwner","type":"error"},{"inputs":[],"name":"OwnerCannotBeZero","type":"error"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"},{"internalType":"address","name":"workflowOwner","type":"address"},{"internalType":"bytes10","name":"workflowName","type":"bytes10"},{"internalType":"bytes2","name":"reportName","type":"bytes2"}],"name":"ReportForwarderUnauthorized","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SourceTokenDataTooLarge","type":"error"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"internalType":"uint256","name":"threshold","type":"uint256"},{"internalType":"uint256","name":"timePassed","type":"uint256"}],"name":"StaleGasPrice","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"TokenNotSupported","type":"error"},{"inputs":[{"internalType":"uint256","name":"numAccounts","type":"uint256"},{"internalType":"uint256","name":"maxAccounts","type":"uint256"}],"name":"TooManySVMExtraArgsAccounts","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"UnauthorizedCaller","type":"error"},{"inputs":[{"internalType":"uint256","name":"numberOfTokens","type":"uint256"},{"internalType":"uint256","name":"maxNumberOfTokensPerMsg","type":"uint256"}],"name":"UnsupportedNumberOfTokens","type":"error"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"AuthorizedCallerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"AuthorizedCallerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"components":[{"internalType":"bool","name":"isEnabled","type":"bool"},{"internalType":"uint16","name":"maxNumberOfTokensPerMsg","type":"uint16"},{"internalType":"uint32","name":"maxDataBytes","type":"uint32"},{"internalType":"uint32","name":"maxPerMsgGasLimit","type":"uint32"},{"internalType":"uint32","name":"destGasOverhead","type":"uint32"},{"internalType":"uint8","name":"destGasPerPayloadByteBase","type":"uint8"},{"internalType":"uint8","name":"destGasPerPayloadByteHigh","type":"uint8"},{"internalType":"uint16","name":"destGasPerPayloadByteThreshold","type":"uint16"},{"internalType":"uint32","name":"destDataAvailabilityOverheadGas","type":"uint32"},{"internalType":"uint16","name":"destGasPerDataAvailabilityByte","type":"uint16"},{"internalType":"uint16","name":"destDataAvailabilityMultiplierBps","type":"uint16"},{"internalType":"bytes4","name":"chainFamilySelector","type":"bytes4"},{"internalType":"bool","name":"enforceOutOfOrder","type":"bool"},{"internalType":"uint16","name":"defaultTokenFeeUSDCents","type":"uint16"},{"internalType":"uint32","name":"defaultTokenDestGasOverhead","type":"uint32"},{"internalType":"uint32","name":"defaultTxGasLimit","type":"uint32"},{"internalType":"uint64","name":"gasMultiplierWeiPerEth","type":"uint64"},{"internalType":"uint32","name":"gasPriceStalenessThreshold","type":"uint32"},{"internalType":"uint32","name":"networkFeeUSDCents","type":"uint32"}],"indexed":false,"internalType":"struct FeeQuoter.DestChainConfig","name":"destChainConfig","type":"tuple"}],"name":"DestChainAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"components":[{"internalType":"bool","name":"isEnabled","type":"bool"},{"internalType":"uint16","name":"maxNumberOfTokensPerMsg","type":"uint16"},{"internalType":"uint32","name":"maxDataBytes","type":"uint32"},{"internalType":"uint32","name":"maxPerMsgGasLimit","type":"uint32"},{"internalType":"uint32","name":"destGasOverhead","type":"uint32"},{"internalType":"uint8","name":"destGasPerPayloadByteBase","type":"uint8"},{"internalType":"uint8","name":"destGasPerPayloadByteHigh","type":"uint8"},{"internalType":"uint16","name":"destGasPerPayloadByteThreshold","type":"uint16"},{"internalType":"uint32","name":"destDataAvailabilityOverheadGas","type":"uint32"},{"internalType":"uint16","name":"destGasPerDataAvailabilityByte","type":"uint16"},{"internalType":"uint16","name":"destDataAvailabilityMultiplierBps","type":"uint16"},{"internalType":"bytes4","name":"chainFamilySelector","type":"bytes4"},{"internalType":"bool","name":"enforceOutOfOrder","type":"bool"},{"internalType":"uint16","name":"defaultTokenFeeUSDCents","type":"uint16"},{"internalType":"uint32","name":"defaultTokenDestGasOverhead","type":"uint32"},{"internalType":"uint32","name":"defaultTxGasLimit","type":"uint32"},{"internalType":"uint64","name":"gasMultiplierWeiPerEth","type":"uint64"},{"internalType":"uint32","name":"gasPriceStalenessThreshold","type":"uint32"},{"internalType":"uint32","name":"networkFeeUSDCents","type":"uint32"}],"indexed":false,"internalType":"struct FeeQuoter.DestChainConfig","name":"destChainConfig","type":"tuple"}],"name":"DestChainConfigUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"feeToken","type":"address"}],"name":"FeeTokenAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"feeToken","type":"address"}],"name":"FeeTokenRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint64","name":"premiumMultiplierWeiPerEth","type":"uint64"}],"name":"PremiumMultiplierWeiPerEthUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"components":[{"internalType":"address","name":"dataFeedAddress","type":"address"},{"internalType":"uint8","name":"tokenDecimals","type":"uint8"},{"internalType":"bool","name":"isEnabled","type":"bool"}],"indexed":false,"internalType":"struct FeeQuoter.TokenPriceFeedConfig","name":"priceFeedConfig","type":"tuple"}],"name":"PriceFeedPerTokenUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"reportId","type":"bytes32"},{"components":[{"internalType":"address","name":"forwarder","type":"address"},{"internalType":"bytes10","name":"workflowName","type":"bytes10"},{"internalType":"bytes2","name":"reportName","type":"bytes2"},{"internalType":"address","name":"workflowOwner","type":"address"},{"internalType":"bool","name":"isAllowed","type":"bool"}],"indexed":false,"internalType":"struct KeystoneFeedsPermissionHandler.Permission","name":"permission","type":"tuple"}],"name":"ReportPermissionSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"indexed":true,"internalType":"address","name":"token","type":"address"}],"name":"TokenTransferFeeConfigDeleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"components":[{"internalType":"uint32","name":"minFeeUSDCents","type":"uint32"},{"internalType":"uint32","name":"maxFeeUSDCents","type":"uint32"},{"internalType":"uint16","name":"deciBps","type":"uint16"},{"internalType":"uint32","name":"destGasOverhead","type":"uint32"},{"internalType":"uint32","name":"destBytesOverhead","type":"uint32"},{"internalType":"bool","name":"isEnabled","type":"bool"}],"indexed":false,"internalType":"struct FeeQuoter.TokenTransferFeeConfig","name":"tokenTransferFeeConfig","type":"tuple"}],"name":"TokenTransferFeeConfigUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UsdPerTokenUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"destChain","type":"uint64"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UsdPerUnitGasUpdated","type":"event"},{"inputs":[],"name":"FEE_BASE_DECIMALS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"KEYSTONE_PRICE_DECIMALS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address[]","name":"addedCallers","type":"address[]"},{"internalType":"address[]","name":"removedCallers","type":"address[]"}],"internalType":"struct AuthorizedCallers.AuthorizedCallerArgs","name":"authorizedCallerArgs","type":"tuple"}],"name":"applyAuthorizedCallerUpdates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"components":[{"internalType":"bool","name":"isEnabled","type":"bool"},{"internalType":"uint16","name":"maxNumberOfTokensPerMsg","type":"uint16"},{"internalType":"uint32","name":"maxDataBytes","type":"uint32"},{"internalType":"uint32","name":"maxPerMsgGasLimit","type":"uint32"},{"internalType":"uint32","name":"destGasOverhead","type":"uint32"},{"internalType":"uint8","name":"destGasPerPayloadByteBase","type":"uint8"},{"internalType":"uint8","name":"destGasPerPayloadByteHigh","type":"uint8"},{"internalType":"uint16","name":"destGasPerPayloadByteThreshold","type":"uint16"},{"internalType":"uint32","name":"destDataAvailabilityOverheadGas","type":"uint32"},{"internalType":"uint16","name":"destGasPerDataAvailabilityByte","type":"uint16"},{"internalType":"uint16","name":"destDataAvailabilityMultiplierBps","type":"uint16"},{"internalType":"bytes4","name":"chainFamilySelector","type":"bytes4"},{"internalType":"bool","name":"enforceOutOfOrder","type":"bool"},{"internalType":"uint16","name":"defaultTokenFeeUSDCents","type":"uint16"},{"internalType":"uint32","name":"defaultTokenDestGasOverhead","type":"uint32"},{"internalType":"uint32","name":"defaultTxGasLimit","type":"uint32"},{"internalType":"uint64","name":"gasMultiplierWeiPerEth","type":"uint64"},{"internalType":"uint32","name":"gasPriceStalenessThreshold","type":"uint32"},{"internalType":"uint32","name":"networkFeeUSDCents","type":"uint32"}],"internalType":"struct FeeQuoter.DestChainConfig","name":"destChainConfig","type":"tuple"}],"internalType":"struct FeeQuoter.DestChainConfigArgs[]","name":"destChainConfigArgs","type":"tuple[]"}],"name":"applyDestChainConfigUpdates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"feeTokensToRemove","type":"address[]"},{"internalType":"address[]","name":"feeTokensToAdd","type":"address[]"}],"name":"applyFeeTokensUpdates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint64","name":"premiumMultiplierWeiPerEth","type":"uint64"}],"internalType":"struct FeeQuoter.PremiumMultiplierWeiPerEthArgs[]","name":"premiumMultiplierWeiPerEthArgs","type":"tuple[]"}],"name":"applyPremiumMultiplierWeiPerEthUpdates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"components":[{"internalType":"address","name":"token","type":"address"},{"components":[{"internalType":"uint32","name":"minFeeUSDCents","type":"uint32"},{"internalType":"uint32","name":"maxFeeUSDCents","type":"uint32"},{"internalType":"uint16","name":"deciBps","type":"uint16"},{"internalType":"uint32","name":"destGasOverhead","type":"uint32"},{"internalType":"uint32","name":"destBytesOverhead","type":"uint32"},{"internalType":"bool","name":"isEnabled","type":"bool"}],"internalType":"struct FeeQuoter.TokenTransferFeeConfig","name":"tokenTransferFeeConfig","type":"tuple"}],"internalType":"struct FeeQuoter.TokenTransferFeeConfigSingleTokenArgs[]","name":"tokenTransferFeeConfigs","type":"tuple[]"}],"internalType":"struct FeeQuoter.TokenTransferFeeConfigArgs[]","name":"tokenTransferFeeConfigArgs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"internalType":"address","name":"token","type":"address"}],"internalType":"struct FeeQuoter.TokenTransferFeeConfigRemoveArgs[]","name":"tokensToUseDefaultFeeConfigs","type":"tuple[]"}],"name":"applyTokenTransferFeeConfigUpdates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"uint256","name":"fromTokenAmount","type":"uint256"},{"internalType":"address","name":"toToken","type":"address"}],"name":"convertTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllAuthorizedCallers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"}],"name":"getDestChainConfig","outputs":[{"components":[{"internalType":"bool","name":"isEnabled","type":"bool"},{"internalType":"uint16","name":"maxNumberOfTokensPerMsg","type":"uint16"},{"internalType":"uint32","name":"maxDataBytes","type":"uint32"},{"internalType":"uint32","name":"maxPerMsgGasLimit","type":"uint32"},{"internalType":"uint32","name":"destGasOverhead","type":"uint32"},{"internalType":"uint8","name":"destGasPerPayloadByteBase","type":"uint8"},{"internalType":"uint8","name":"destGasPerPayloadByteHigh","type":"uint8"},{"internalType":"uint16","name":"destGasPerPayloadByteThreshold","type":"uint16"},{"internalType":"uint32","name":"destDataAvailabilityOverheadGas","type":"uint32"},{"internalType":"uint16","name":"destGasPerDataAvailabilityByte","type":"uint16"},{"internalType":"uint16","name":"destDataAvailabilityMultiplierBps","type":"uint16"},{"internalType":"bytes4","name":"chainFamilySelector","type":"bytes4"},{"internalType":"bool","name":"enforceOutOfOrder","type":"bool"},{"internalType":"uint16","name":"defaultTokenFeeUSDCents","type":"uint16"},{"internalType":"uint32","name":"defaultTokenDestGasOverhead","type":"uint32"},{"internalType":"uint32","name":"defaultTxGasLimit","type":"uint32"},{"internalType":"uint64","name":"gasMultiplierWeiPerEth","type":"uint64"},{"internalType":"uint32","name":"gasPriceStalenessThreshold","type":"uint32"},{"internalType":"uint32","name":"networkFeeUSDCents","type":"uint32"}],"internalType":"struct FeeQuoter.DestChainConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"}],"name":"getDestinationChainGasPrice","outputs":[{"components":[{"internalType":"uint224","name":"value","type":"uint224"},{"internalType":"uint32","name":"timestamp","type":"uint32"}],"internalType":"struct Internal.TimestampedPackedUint224","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFeeTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getPremiumMultiplierWeiPerEth","outputs":[{"internalType":"uint64","name":"premiumMultiplierWeiPerEth","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStaticConfig","outputs":[{"components":[{"internalType":"uint96","name":"maxFeeJuelsPerMsg","type":"uint96"},{"internalType":"address","name":"linkToken","type":"address"},{"internalType":"uint32","name":"tokenPriceStalenessThreshold","type":"uint32"}],"internalType":"struct FeeQuoter.StaticConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint64","name":"destChainSelector","type":"uint64"}],"name":"getTokenAndGasPrices","outputs":[{"internalType":"uint224","name":"tokenPrice","type":"uint224"},{"internalType":"uint224","name":"gasPriceValue","type":"uint224"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getTokenPrice","outputs":[{"components":[{"internalType":"uint224","name":"value","type":"uint224"},{"internalType":"uint32","name":"timestamp","type":"uint32"}],"internalType":"struct Internal.TimestampedPackedUint224","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getTokenPriceFeedConfig","outputs":[{"components":[{"internalType":"address","name":"dataFeedAddress","type":"address"},{"internalType":"uint8","name":"tokenDecimals","type":"uint8"},{"internalType":"bool","name":"isEnabled","type":"bool"}],"internalType":"struct FeeQuoter.TokenPriceFeedConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"getTokenPrices","outputs":[{"components":[{"internalType":"uint224","name":"value","type":"uint224"},{"internalType":"uint32","name":"timestamp","type":"uint32"}],"internalType":"struct Internal.TimestampedPackedUint224[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"internalType":"address","name":"token","type":"address"}],"name":"getTokenTransferFeeConfig","outputs":[{"components":[{"internalType":"uint32","name":"minFeeUSDCents","type":"uint32"},{"internalType":"uint32","name":"maxFeeUSDCents","type":"uint32"},{"internalType":"uint16","name":"deciBps","type":"uint16"},{"internalType":"uint32","name":"destGasOverhead","type":"uint32"},{"internalType":"uint32","name":"destBytesOverhead","type":"uint32"},{"internalType":"bool","name":"isEnabled","type":"bool"}],"internalType":"struct FeeQuoter.TokenTransferFeeConfig","name":"tokenTransferFeeConfig","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"components":[{"internalType":"bytes","name":"receiver","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Client.EVMTokenAmount[]","name":"tokenAmounts","type":"tuple[]"},{"internalType":"address","name":"feeToken","type":"address"},{"internalType":"bytes","name":"extraArgs","type":"bytes"}],"internalType":"struct Client.EVM2AnyMessage","name":"message","type":"tuple"}],"name":"getValidatedFee","outputs":[{"internalType":"uint256","name":"feeTokenAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getValidatedTokenPrice","outputs":[{"internalType":"uint224","name":"","type":"uint224"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"metadata","type":"bytes"},{"internalType":"bytes","name":"report","type":"bytes"}],"name":"onReport","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"internalType":"address","name":"feeToken","type":"address"},{"internalType":"uint256","name":"feeTokenAmount","type":"uint256"},{"internalType":"bytes","name":"extraArgs","type":"bytes"},{"internalType":"bytes","name":"messageReceiver","type":"bytes"}],"name":"processMessageArgs","outputs":[{"internalType":"uint256","name":"msgFeeJuels","type":"uint256"},{"internalType":"bool","name":"isOutOfOrderExecution","type":"bool"},{"internalType":"bytes","name":"convertedExtraArgs","type":"bytes"},{"internalType":"bytes","name":"tokenReceiver","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"components":[{"internalType":"address","name":"sourcePoolAddress","type":"address"},{"internalType":"bytes","name":"destTokenAddress","type":"bytes"},{"internalType":"bytes","name":"extraData","type":"bytes"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"destExecData","type":"bytes"}],"internalType":"struct Internal.EVM2AnyTokenTransfer[]","name":"onRampTokenTransfers","type":"tuple[]"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Client.EVMTokenAmount[]","name":"sourceTokenAmounts","type":"tuple[]"}],"name":"processPoolReturnData","outputs":[{"internalType":"bytes[]","name":"destExecDataPerToken","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"forwarder","type":"address"},{"internalType":"bytes10","name":"workflowName","type":"bytes10"},{"internalType":"bytes2","name":"reportName","type":"bytes2"},{"internalType":"address","name":"workflowOwner","type":"address"},{"internalType":"bool","name":"isAllowed","type":"bool"}],"internalType":"struct KeystoneFeedsPermissionHandler.Permission[]","name":"permissions","type":"tuple[]"}],"name":"setReportPermissions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"typeAndVersion","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"sourceToken","type":"address"},{"internalType":"uint224","name":"usdPerToken","type":"uint224"}],"internalType":"struct Internal.TokenPriceUpdate[]","name":"tokenPriceUpdates","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"internalType":"uint224","name":"usdPerUnitGas","type":"uint224"}],"internalType":"struct Internal.GasPriceUpdate[]","name":"gasPriceUpdates","type":"tuple[]"}],"internalType":"struct Internal.PriceUpdates","name":"priceUpdates","type":"tuple"}],"name":"updatePrices","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sourceToken","type":"address"},{"components":[{"internalType":"address","name":"dataFeedAddress","type":"address"},{"internalType":"uint8","name":"tokenDecimals","type":"uint8"},{"internalType":"bool","name":"isEnabled","type":"bool"}],"internalType":"struct FeeQuoter.TokenPriceFeedConfig","name":"feedConfig","type":"tuple"}],"internalType":"struct FeeQuoter.TokenPriceFeedUpdate[]","name":"tokenPriceFeedUpdates","type":"tuple[]"}],"name":"updateTokenPriceFeeds","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60e06040523461106a576172d580380380610019816112d6565b928339810190808203610120811261106a5760601361106a5761003a611298565b81516001600160601b038116810361106a57815261005a602083016112fb565b906020810191825261006e6040840161130f565b6040820190815260608401516001600160401b03811161106a5785610094918601611337565b60808501519094906001600160401b03811161106a57866100b6918301611337565b60a08201519096906001600160401b03811161106a5782019080601f8301121561106a5781516100ed6100e882611320565b6112d6565b9260208085848152019260071b8201019083821161106a57602001915b8183106112235750505060c08301516001600160401b03811161106a5783019781601f8a01121561106a578851986101446100e88b611320565b996020808c838152019160051b8301019184831161106a5760208101915b8383106110c1575050505060e08401516001600160401b03811161106a5784019382601f8601121561106a57845161019c6100e882611320565b9560208088848152019260061b8201019085821161106a57602001915b81831061108557505050610100810151906001600160401b03821161106a570182601f8201121561106a578051906101f36100e883611320565b93602061028081878681520194028301019181831161106a57602001925b828410610ea857505050503315610e9757600180546001600160a01b031916331790556020986102408a6112d6565b976000895260003681376102526112b7565b998a52888b8b015260005b89518110156102c4576001906001600160a01b0361027b828d6113d0565b51168d610287826115bc565b610294575b50500161025d565b7fc3803387881faad271c47728894e3e36fac830ffc8602ca6fc07733cbda7758091604051908152a1388d61028c565b508a985089519660005b885181101561033f576001600160a01b036102e9828b6113d0565b511690811561032e577feb1b9b92e50b7f88f9ff25d56765095ac6e91540eee214906f4036a908ffbdef8c83610320600195611544565b50604051908152a1016102ce565b6342bcdf7f60e11b60005260046000fd5b5081518a985089906001600160a01b0316158015610e85575b8015610e76575b610e655791516001600160a01b031660a05290516001600160601b03166080525163ffffffff1660c052610392866112d6565b9360008552600036813760005b855181101561040e576001906103c76001600160a01b036103c0838a6113d0565b5116611451565b6103d2575b0161039f565b818060a01b036103e282896113d0565b51167f1795838dc8ab2ffc5f431a1729a6afa0b587f982f7b2be0b9d7187a1ef547f91600080a26103cc565b508694508560005b84518110156104855760019061043e6001600160a01b0361043783896113d0565b5116611583565b610449575b01610416565b818060a01b0361045982886113d0565b51167fdf1b1bd32a69711488d71554706bb130b1fc63a5fa1a2cd85e8440f84065ba23600080a2610443565b508593508460005b835181101561054757806104a3600192866113d0565b517fe6a7a17d710bf0b2cd05e5397dc6f97a5da4ee79e31e234bf5f965ee2bd9a5bf606089858060a01b038451169301518360005260078b5260406000209060ff878060a01b038251169283898060a01b03198254161781558d8301908151604082549501948460a81b8651151560a81b16918560a01b9060a01b169061ffff60a01b19161717905560405193845251168c8301525115156040820152a20161048d565b5091509160005b8251811015610afd5761056181846113d0565b51856001600160401b0361057584876113d0565b5151169101519080158015610aea575b8015610acc575b8015610a92575b610a7e57600081815260098852604090205460019392919060081b6001600160e01b03191661093657807f71e9302ab4e912a9678ae7f5a8542856706806f2817e1bf2a20b171e265cb4ad604051806106fc868291909161024063ffffffff8161026084019580511515855261ffff602082015116602086015282604082015116604086015282606082015116606086015282608082015116608086015260ff60a08201511660a086015260ff60c08201511660c086015261ffff60e08201511660e0860152826101008201511661010086015261ffff6101208201511661012086015261ffff610140820151166101408601528260e01b61016082015116610160860152610180810151151561018086015261ffff6101a0820151166101a0860152826101c0820151166101c0860152826101e0820151166101e086015260018060401b03610200820151166102008601528261022082015116610220860152015116910152565b0390a25b60005260098752826040600020825115158382549162ffff008c83015160081b169066ffffffff000000604084015160181b166affffffff00000000000000606085015160381b16926effffffff0000000000000000000000608086015160581b169260ff60781b60a087015160781b169460ff60801b60c088015160801b169161ffff60881b60e089015160881b169063ffffffff60981b6101008a015160981b169361ffff60b81b6101208b015160b81b169661ffff60c81b6101408c015160c81b169963ffffffff60d81b6101608d015160081c169b61018060ff60f81b910151151560f81b169c8f8060f81b039a63ffffffff60d81b199961ffff60c81b199861ffff60b81b199763ffffffff60981b199661ffff60881b199560ff60801b199460ff60781b19936effffffff0000000000000000000000199260ff6affffffff000000000000001992169066ffffffffffffff19161716171617161716171617161716171617161716179063ffffffff60d81b1617178155019061ffff6101a0820151169082549165ffffffff00006101c083015160101b169269ffffffff0000000000006101e084015160301b166a01000000000000000000008860901b0361020085015160501b169263ffffffff60901b61022086015160901b169461024063ffffffff60b01b91015160b01b169563ffffffff60b01b199363ffffffff60901b19926a01000000000000000000008c60901b0319918c8060501b03191617161716171617171790550161054e565b807f2431cc0363f2f66b21782c7e3d54dd9085927981a21bd0cc6be45a51b19689e360405180610a76868291909161024063ffffffff8161026084019580511515855261ffff602082015116602086015282604082015116604086015282606082015116606086015282608082015116608086015260ff60a08201511660a086015260ff60c08201511660c086015261ffff60e08201511660e0860152826101008201511661010086015261ffff6101208201511661012086015261ffff610140820151166101408601528260e01b61016082015116610160860152610180810151151561018086015261ffff6101a0820151166101a0860152826101c0820151166101c0860152826101e0820151166101e086015260018060401b03610200820151166102008601528261022082015116610220860152015116910152565b0390a2610700565b63c35aa79d60e01b60005260045260246000fd5b5063ffffffff60e01b61016083015116630a04b54b60e21b8114159081610aba575b50610593565b6307842f7160e21b1415905088610ab4565b5063ffffffff6101e08301511663ffffffff6060840151161061058c565b5063ffffffff6101e08301511615610585565b84828560005b8151811015610b83576001906001600160a01b03610b2182856113d0565b5151167fbb77da6f7210cdd16904228a9360133d1d7dfff99b1bc75f128da5b53e28f97d86848060401b0381610b5786896113d0565b510151168360005260088252604060002081878060401b0319825416179055604051908152a201610b03565b83600184610b90836112d6565b9060008252600092610e60575b909282935b8251851015610d9f57610bb585846113d0565b5180516001600160401b0316939083019190855b83518051821015610d8e57610bdf8287926113d0565b51015184516001600160a01b0390610bf89084906113d0565b5151169063ffffffff815116908781019163ffffffff8351169081811015610d795750506080810163ffffffff815116898110610d62575090899291838c52600a8a5260408c20600160a01b6001900386168d528a5260408c2092825163ffffffff169380549180518d1b67ffffffff0000000016916040860192835160401b69ffff000000000000000016966060810195865160501b6dffffffff00000000000000000000169063ffffffff60701b895160701b169260a001998b60ff60901b8c51151560901b169560ff60901b199363ffffffff60701b19926dffffffff000000000000000000001991600160501b60019003191617161716171617171790556040519586525163ffffffff168c8601525161ffff1660408501525163ffffffff1660608401525163ffffffff16608083015251151560a082015260c07f94967ae9ea7729ad4f54021c1981765d2b1d954f7c92fbec340aa0a54f46b8b591a3600101610bc9565b6312766e0160e11b8c52600485905260245260448bfd5b6305a7b3d160e11b8c5260045260245260448afd5b505060019096019593509050610ba2565b9150825b8251811015610e21576001906001600160401b03610dc182866113d0565b515116828060a01b0384610dd584886113d0565b5101511690808752600a855260408720848060a01b038316885285528660408120557f4de5b1bcbca6018c11303a2c3f4a4b4f22a1c741d8c4ba430d246ac06c5ddf8b8780a301610da3565b604051615c84908161165182396080518181816106240152610c93015260a05181818161065a0152610c44015260c05181818161068101526139220152f35b610b9d565b63d794ef9560e01b60005260046000fd5b5063ffffffff8251161561035f565b5080516001600160601b031615610358565b639b15e16f60e01b60005260046000fd5b838203610280811261106a57610260610ebf6112b7565b91610ec9876113ad565b8352601f19011261106a576040519161026083016001600160401b0381118482101761106f57604052610efe602087016113a0565b8352610f0c604087016113c1565b6020840152610f1d6060870161130f565b6040840152610f2e6080870161130f565b6060840152610f3f60a0870161130f565b6080840152610f5060c08701611392565b60a0840152610f6160e08701611392565b60c0840152610f7361010087016113c1565b60e0840152610f85610120870161130f565b610100840152610f9861014087016113c1565b610120840152610fab61016087016113c1565b610140840152610180860151916001600160e01b03198316830361106a5783602093610160610280960152610fe36101a089016113a0565b610180820152610ff66101c089016113c1565b6101a08201526110096101e0890161130f565b6101c082015261101c610200890161130f565b6101e082015261102f61022089016113ad565b610200820152611042610240890161130f565b610220820152611055610260890161130f565b61024082015283820152815201930192610211565b600080fd5b634e487b7160e01b600052604160045260246000fd5b60408387031261106a57602060409161109c6112b7565b6110a5866112fb565b81526110b28387016113ad565b838201528152019201916101b9565b82516001600160401b03811161106a5782016040818803601f19011261106a576110e96112b7565b906110f6602082016113ad565b825260408101516001600160401b03811161106a57602091010187601f8201121561106a5780516111296100e882611320565b91602060e08185858152019302820101908a821161106a57602001915b8183106111655750505091816020938480940152815201920191610162565b828b0360e0811261106a5760c061117a6112b7565b91611184866112fb565b8352601f19011261106a576040519160c08301916001600160401b0383118484101761106f5760e0936020936040526111be84880161130f565b81526111cc6040880161130f565b848201526111dc606088016113c1565b60408201526111ed6080880161130f565b60608201526111fe60a0880161130f565b608082015261120f60c088016113a0565b60a082015283820152815201920191611146565b8284036080811261106a5760606112386112b7565b91611242866112fb565b8352601f19011261106a5760809160209161125b611298565b6112668488016112fb565b815261127460408801611392565b84820152611284606088016113a0565b60408201528382015281520192019161010a565b60405190606082016001600160401b0381118382101761106f57604052565b60408051919082016001600160401b0381118382101761106f57604052565b6040519190601f01601f191682016001600160401b0381118382101761106f57604052565b51906001600160a01b038216820361106a57565b519063ffffffff8216820361106a57565b6001600160401b03811161106f5760051b60200190565b9080601f8301121561106a5781516113516100e882611320565b9260208085848152019260051b82010192831161106a57602001905b82821061137a5750505090565b60208091611387846112fb565b81520191019061136d565b519060ff8216820361106a57565b5190811515820361106a57565b51906001600160401b038216820361106a57565b519061ffff8216820361106a57565b80518210156113e45760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b80548210156113e45760005260206000200190600090565b8054801561143b57600019019061142982826113fa565b8154906000199060031b1b1916905555565b634e487b7160e01b600052603160045260246000fd5b6000818152600c602052604090205480156115125760001981018181116114fc57600b546000198101919082116114fc578181036114ab575b505050611497600b611412565b600052600c60205260006040812055600190565b6114e46114bc6114cd93600b6113fa565b90549060031b1c928392600b6113fa565b819391549060031b91821b91600019901b19161790565b9055600052600c60205260406000205538808061148a565b634e487b7160e01b600052601160045260246000fd5b5050600090565b8054906801000000000000000082101561106f57816114cd916001611540940181556113fa565b9055565b8060005260036020526040600020541560001461157d57611566816002611519565b600254906000526003602052604060002055600190565b50600090565b80600052600c6020526040600020541560001461157d576115a581600b611519565b600b5490600052600c602052604060002055600190565b60008181526003602052604090205480156115125760001981018181116114fc576002546000198101919082116114fc57808203611616575b5050506116026002611412565b600052600360205260006040812055600190565b6116386116276114cd9360026113fa565b90549060031b1c92839260026113fa565b905560005260036020526040600020553880806115f556fe6080604052600436101561001257600080fd5b60003560e01c806241e5be1461021657806301447eaa1461021157806301ffc9a71461020c578063061877e31461020757806306285c6914610202578063181f5a77146101fd5780632451a627146101f8578063325c868e146101f35780633937306f146101ee5780633a49bb49146101e957806341ed29e7146101e457806345ac924d146101df5780634ab35b0b146101da578063514e8cff146101d55780636def4ce7146101d0578063770e2dc4146101cb57806379ba5097146101c65780637afac322146101c1578063805f2132146101bc57806382b49eb0146101b757806387b8d879146101b25780638da5cb5b146101ad57806391a2749a146101a8578063a69c64c0146101a3578063bf78e03f1461019e578063cdc73d5114610199578063d02641a014610194578063d63d3af21461018f578063d8694ccd1461018a578063f2fde38b14610185578063fbe3f778146101805763ffdb4b371461017b57600080fd5b6126eb565b6125ee565b612532565b6120ce565b6120b2565b612069565b611ff2565b611f4c565b611e93565b611dff565b611dd8565b611bbc565b611a3f565b6117a4565b61166b565b611553565b611334565b6111b5565b610fde565b610fa6565b610edd565b610d48565b610bd2565b6108e0565b6108c4565b610841565b61079f565b6105e8565b6105a0565b61047c565b6103b0565b61023e565b6001600160a01b0381160361022c57565b600080fd5b359061023c8261021b565b565b3461022c57606060031936011261022c5760206102756004356102608161021b565b602435604435916102708361021b565b61286d565b604051908152f35b6004359067ffffffffffffffff8216820361022c57565b6024359067ffffffffffffffff8216820361022c57565b359067ffffffffffffffff8216820361022c57565b9181601f8401121561022c5782359167ffffffffffffffff831161022c576020808501948460051b01011161022c57565b919082519283825260005b84811061031d575050601f19601f8460006020809697860101520116010190565b806020809284010151828286010152016102fc565b602081016020825282518091526040820191602060408360051b8301019401926000915b83831061036557505050505090565b90919293946020806103a1837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301875289516102f1565b97019301930191939290610356565b3461022c57606060031936011261022c576103c961027d565b60243567ffffffffffffffff811161022c576103e99036906004016102c0565b6044929192359167ffffffffffffffff831161022c573660238401121561022c5782600401359167ffffffffffffffff831161022c573660248460061b8601011161022c5761044b94602461043f950192612a7b565b60405191829182610332565b0390f35b35907fffffffff000000000000000000000000000000000000000000000000000000008216820361022c57565b3461022c57602060031936011261022c576004357fffffffff000000000000000000000000000000000000000000000000000000008116810361022c577fffffffff00000000000000000000000000000000000000000000000000000000602091167f805f2132000000000000000000000000000000000000000000000000000000008114908115610576575b811561054c575b8115610522575b506040519015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501438610517565b7f181f5a770000000000000000000000000000000000000000000000000000000081149150610510565b7fe364892e0000000000000000000000000000000000000000000000000000000081149150610509565b3461022c57602060031936011261022c576001600160a01b036004356105c58161021b565b166000526008602052602067ffffffffffffffff60406000205416604051908152f35b3461022c57600060031936011261022c57610601612ca5565b506060604051610610816106e8565b63ffffffff6bffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016918281526001600160a01b0360406020830192827f00000000000000000000000000000000000000000000000000000000000000001684520191837f00000000000000000000000000000000000000000000000000000000000000001683526040519485525116602084015251166040820152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff82111761070457604052565b6106b9565b60a0810190811067ffffffffffffffff82111761070457604052565b6040810190811067ffffffffffffffff82111761070457604052565b60c0810190811067ffffffffffffffff82111761070457604052565b90601f601f19910116810190811067ffffffffffffffff82111761070457604052565b6040519061023c60408361075d565b6040519061023c6102608361075d565b3461022c57600060031936011261022c5761044b60408051906107c2818361075d565b600f82527f46656551756f74657220312e362e3000000000000000000000000000000000006020830152519182916020835260208301906102f1565b602060408183019282815284518094520192019060005b8181106108225750505090565b82516001600160a01b0316845260209384019390920191600101610815565b3461022c57600060031936011261022c5760405180602060025491828152019060026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace9060005b8181106108ae5761044b856108a28187038261075d565b604051918291826107fe565b825484526020909301926001928301920161088b565b3461022c57600060031936011261022c57602060405160248152f35b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c5780600401906040600319823603011261022c5761091e613e45565b6109288280612cc4565b4263ffffffff1692915060005b818110610a995750506024019061094c8284612cc4565b92905060005b83811061095b57005b8061097a61097560019361096f868a612cc4565b90612916565b612d63565b7fdd84a3fa9ef9409f550d54d6affec7e9c480c878c6ab27b78912a03e1b371c6e67ffffffffffffffff610a75610a676020850194610a596109c387516001600160e01b031690565b6109dd6109ce610780565b6001600160e01b039092168252565b63ffffffff8c166020820152610a186109fe845167ffffffffffffffff1690565b67ffffffffffffffff166000526005602052604060002090565b815160209092015160e01b7fffffffff00000000000000000000000000000000000000000000000000000000166001600160e01b0392909216919091179055565b5167ffffffffffffffff1690565b93516001600160e01b031690565b604080516001600160e01b039290921682524260208301529190931692a201610952565b80610ab2610aad60019361096f8980612cc4565b612d2c565b7f52f50aa6d1a95a4595361ecf953d095f125d442e4673716dede699e049de148a6001600160a01b03610b4b610a676020850194610b3e610afa87516001600160e01b031690565b610b056109ce610780565b63ffffffff8d166020820152610a18610b2584516001600160a01b031690565b6001600160a01b03166000526006602052604060002090565b516001600160a01b031690565b604080516001600160e01b039290921682524260208301529190931692a201610935565b9181601f8401121561022c5782359167ffffffffffffffff831161022c576020838186019501011161022c57565b92610bcf9492610bc1928552151560208501526080604085015260808401906102f1565b9160608184039101526102f1565b90565b3461022c5760a060031936011261022c57610beb61027d565b60243590610bf88261021b565b6044359160643567ffffffffffffffff811161022c57610c1c903690600401610b6f565b93909160843567ffffffffffffffff811161022c57610c3f903690600401610b6f565b9290917f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b0382166001600160a01b03821614600014610d0b575050935b6bffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016808611610cda575091610ccb939161044b9693613e89565b90939160405194859485610b9d565b857f6a92a4830000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b91610d159261286d565b93610c84565b67ffffffffffffffff81116107045760051b60200190565b8015150361022c57565b359061023c82610d33565b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c573660238201121561022c57806004013590610d8582610d1b565b90610d93604051928361075d565b828252602460a06020840194028201019036821161022c57602401925b818410610dc257610dc083612d88565b005b60a08436031261022c5760405190610dd982610709565b8435610de48161021b565b825260208501357fffffffffffffffffffff000000000000000000000000000000000000000000008116810361022c5760208301526040850135907fffff0000000000000000000000000000000000000000000000000000000000008216820361022c5782602092604060a0950152610e5f60608801610231565b6060820152610e7060808801610d3d565b6080820152815201930192610db0565b602060408183019282815284518094520192019060005b818110610ea45750505090565b9091926020604082610ed2600194885163ffffffff602080926001600160e01b038151168552015116910152565b019401929101610e97565b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c57610f0e9036906004016102c0565b610f1781610d1b565b91610f25604051938461075d565b818352601f19610f3483610d1b565b0160005b818110610f8f57505060005b82811015610f8157600190610f65610f608260051b850161292b565b6138ce565b610f6f8287612a67565b52610f7a8186612a67565b5001610f44565b6040518061044b8682610e80565b602090610f9a612ee6565b82828801015201610f38565b3461022c57602060031936011261022c576020610fcd600435610fc88161021b565b613b92565b6001600160e01b0360405191168152f35b3461022c57602060031936011261022c5767ffffffffffffffff61100061027d565b611008612ee6565b5016600052600560205260406000206040519061102482610725565b546001600160e01b038116825260e01c6020820152604051809161044b82604081019263ffffffff602080926001600160e01b038151168552015116910152565b61023c909291926102408061026083019561108284825115159052565b60208181015161ffff169085015260408181015163ffffffff169085015260608181015163ffffffff169085015260808181015163ffffffff169085015260a08181015160ff169085015260c08181015160ff169085015260e08181015161ffff16908501526101008181015163ffffffff16908501526101208181015161ffff16908501526101408181015161ffff1690850152610160818101517fffffffff000000000000000000000000000000000000000000000000000000001690850152610180818101511515908501526101a08181015161ffff16908501526101c08181015163ffffffff16908501526101e08181015163ffffffff16908501526102008181015167ffffffffffffffff16908501526102208181015163ffffffff1690850152015163ffffffff16910152565b3461022c57602060031936011261022c5761044b6112786112736111d761027d565b60006102406111e461078f565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015282610120820152826101408201528261016082015282610180820152826101a0820152826101c0820152826101e08201528261020082015282610220820152015267ffffffffffffffff166000526009602052604060002090565b612f24565b60405191829182611065565b359063ffffffff8216820361022c57565b359061ffff8216820361022c57565b81601f8201121561022c578035906112bb82610d1b565b926112c9604051948561075d565b82845260208085019360061b8301019181831161022c57602001925b8284106112f3575050505090565b60408483031261022c576020604091825161130d81610725565b611316876102ab565b8152828701356113258161021b565b838201528152019301926112e5565b3461022c57604060031936011261022c5760043567ffffffffffffffff811161022c573660238201121561022c57806004013561137081610d1b565b9161137e604051938461075d565b8183526024602084019260051b8201019036821161022c5760248101925b8284106113cd576024358567ffffffffffffffff821161022c576113c7610dc09236906004016112a4565b90613092565b833567ffffffffffffffff811161022c57820160407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc823603011261022c576040519061141982610725565b611425602482016102ab565b8252604481013567ffffffffffffffff811161022c57602491010136601f8201121561022c57803561145681610d1b565b91611464604051938461075d565b818352602060e081850193028201019036821161022c57602001915b81831061149f575050509181602093848094015281520193019261139c565b82360360e0811261022c5760c0601f19604051926114bc84610725565b86356114c78161021b565b8452011261022c5760e0916020916040516114e181610741565b6114ec848801611284565b81526114fa60408801611284565b8482015261150a60608801611295565b604082015261151b60808801611284565b606082015261152c60a08801611284565b608082015260c087013561153f81610d33565b60a082015283820152815201920191611480565b3461022c57600060031936011261022c576000546001600160a01b03811633036115da577fffffffffffffffffffffffff0000000000000000000000000000000000000000600154913382841617600155166000556001600160a01b033391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b7f02b543c60000000000000000000000000000000000000000000000000000000060005260046000fd5b9080601f8301121561022c57813561161b81610d1b565b92611629604051948561075d565b81845260208085019260051b82010192831161022c57602001905b8282106116515750505090565b6020809183356116608161021b565b815201910190611644565b3461022c57604060031936011261022c5760043567ffffffffffffffff811161022c5761169c903690600401611604565b60243567ffffffffffffffff811161022c576116bc903690600401611604565b906116c56140c6565b60005b815181101561173457806116e96116e4610b3e60019486612a67565b61593d565b6116f4575b016116c8565b6001600160a01b03611709610b3e8386612a67565b167f1795838dc8ab2ffc5f431a1729a6afa0b587f982f7b2be0b9d7187a1ef547f91600080a26116ee565b8260005b8151811015610dc05780611759611754610b3e60019486612a67565b615951565b611764575b01611738565b6001600160a01b03611779610b3e8386612a67565b167fdf1b1bd32a69711488d71554706bb130b1fc63a5fa1a2cd85e8440f84065ba23600080a261175e565b3461022c57604060031936011261022c5760043567ffffffffffffffff811161022c576117d5903690600401610b6f565b6024359167ffffffffffffffff831161022c5761182e61182661180c611802611836963690600401610b6f565b94909536916129c6565b90604082015190605e604a84015160601c93015191929190565b919033614258565b810190613341565b60005b8151811015610dc05761188161187c6118636118558486612a67565b51516001600160a01b031690565b6001600160a01b03166000526007602052604060002090565b613400565b6118956118916040830151151590565b1590565b6119f657906118e06118ad6020600194015160ff1690565b6118da6118ce60206118bf8689612a67565b5101516001600160e01b031690565b6001600160e01b031690565b90614326565b6118fb60406118ef8487612a67565b51015163ffffffff1690565b63ffffffff61192661191d611916610b25611855888b612a67565b5460e01c90565b63ffffffff1690565b9116106119f05761197461193f60406118ef8588612a67565b61196461194a610780565b6001600160e01b03851681529163ffffffff166020830152565b610a18610b256118558689612a67565b7f52f50aa6d1a95a4595361ecf953d095f125d442e4673716dede699e049de148a6001600160a01b036119aa6118558588612a67565b6119e66119bc60406118ef888b612a67565b60405193849316958390929163ffffffff6020916001600160e01b03604085019616845216910152565b0390a25b01611839565b506119ea565b611a3b611a066118558486612a67565b7f06439c6b000000000000000000000000000000000000000000000000000000006000526001600160a01b0316600452602490565b6000fd5b3461022c57604060031936011261022c5761044b611ac7611a5e61027d565b67ffffffffffffffff60243591611a748361021b565b600060a0604051611a8481610741565b828152826020820152826040820152826060820152826080820152015216600052600a6020526040600020906001600160a01b0316600052602052604060002090565b611b43611b3a60405192611ada84610741565b5463ffffffff8116845263ffffffff8160201c16602085015261ffff8160401c166040850152611b21611b148263ffffffff9060501c1690565b63ffffffff166060860152565b63ffffffff607082901c16608085015260901c60ff1690565b151560a0830152565b6040519182918291909160a08060c083019463ffffffff815116845263ffffffff602082015116602085015261ffff604082015116604085015263ffffffff606082015116606085015263ffffffff608082015116608085015201511515910152565b60ff81160361022c57565b359061023c82611ba6565b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c573660238201121561022c57806004013590611bf982610d1b565b90611c07604051928361075d565b82825260246102806020840194028201019036821161022c57602401925b818410611c3557610dc083613436565b833603610280811261022c57610260601f1960405192611c5484610725565b611c5d886102ab565b8452011261022c5761028091602091611c7461078f565b611c7f848901610d3d565b8152611c8d60408901611295565b84820152611c9d60608901611284565b6040820152611cae60808901611284565b6060820152611cbf60a08901611284565b6080820152611cd060c08901611bb1565b60a0820152611ce160e08901611bb1565b60c0820152611cf36101008901611295565b60e0820152611d056101208901611284565b610100820152611d186101408901611295565b610120820152611d2b6101608901611295565b610140820152611d3e610180890161044f565b610160820152611d516101a08901610d3d565b610180820152611d646101c08901611295565b6101a0820152611d776101e08901611284565b6101c0820152611d8a6102008901611284565b6101e0820152611d9d61022089016102ab565b610200820152611db06102408901611284565b610220820152611dc36102608901611284565b61024082015283820152815201930192611c25565b3461022c57600060031936011261022c5760206001600160a01b0360015416604051908152f35b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c576040600319823603011261022c57604051611e3c81610725565b816004013567ffffffffffffffff811161022c57611e609060043691850101611604565b8152602482013567ffffffffffffffff811161022c57610dc0926004611e899236920101611604565b60208201526136a0565b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c573660238201121561022c57806004013590611ed082610d1b565b90611ede604051928361075d565b8282526024602083019360061b8201019036821161022c57602401925b818410611f0b57610dc0836137f2565b60408436031261022c5760206040918251611f2581610725565b8635611f308161021b565b8152611f3d8388016102ab565b83820152815201930192611efb565b3461022c57602060031936011261022c576001600160a01b03600435611f718161021b565b611f79612ca5565b5016600052600760205261044b604060002060ff60405191611f9a836106e8565b546001600160a01b0381168352818160a01c16602084015260a81c16151560408201526040519182918291909160408060608301946001600160a01b03815116845260ff602082015116602085015201511515910152565b3461022c57600060031936011261022c57604051806020600b54918281520190600b6000527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99060005b8181106120535761044b856108a28187038261075d565b825484526020909301926001928301920161203c565b3461022c57602060031936011261022c57604061208b600435610f608161021b565b6120b08251809263ffffffff602080926001600160e01b038151168552015116910152565bf35b3461022c57600060031936011261022c57602060405160128152f35b3461022c57604060031936011261022c576120e761027d565b60243567ffffffffffffffff811161022c57806004019060a0600319823603011261022c5761212d6112738467ffffffffffffffff166000526009602052604060002090565b61213a6118918251151590565b6124fa57606482016121706118916121518361292b565b6001600160a01b03166000526001600b01602052604060002054151590565b6124b95790839160448401956121868785612cc4565b9590506121c760248201916121aa60846121a0858a612975565b9390500188612975565b90896121c06121b98b80612975565b36916129c6565b9389614c68565b92846121d5610fc88361292b565b9889946121f36121ed61022085015163ffffffff1690565b82614fa0565b9b6000808c1561247f57505061225961ffff8561227e996122659998966122999661228c966122506122406101c06122346101a061229f9f015161ffff1690565b97015163ffffffff1690565b9161224a8c61292b565b94612cc4565b96909516615091565b9891989790989461292b565b6001600160a01b03166000526008602052604060002090565b5467ffffffffffffffff1690565b67ffffffffffffffff1690565b90612821565b9560009761ffff6122b661014089015161ffff1690565b16612424575b509461229961228c61020061238a61044b9d6dffffffffffffffffffffffffffff6123826123a29f9e9b61237d6001600160e01b039f9b9c61239a9f61237d9e63ffffffff61231161237d9f61231b94612975565b92905016906139ea565b908b60a0810161233e612338612332835160ff1690565b60ff1690565b85612821565b9360e0830191612350835161ffff1690565b9061ffff821683116123b2575b505050506080015161237d9161191d9163ffffffff16613a28565b613a28565b6139ea565b911690612821565b93015167ffffffffffffffff1690565b911690612834565b6040519081529081906020820190565b61191d94965061237d959361ffff612413612402612378966123fc6123f56123ec60809960ff6123e661241a9b5160ff1690565b166139f7565b965161ffff1690565b61ffff1690565b906138c1565b61229961233260c08d015160ff1690565b91166139ea565b959383955061235d565b9095949897508261244a8b989495986dffffffffffffffffffffffffffff9060701c1690565b6dffffffffffffffffffffffffffff16916124658489612975565b905061247193886152b3565b9697939438969392966122bc565b969593509650505061229961228c61227e6122656124b36124ae61191d61024061229f99015163ffffffff1690565b6127da565b9461292b565b6124c5611a3b9161292b565b7f2502348c000000000000000000000000000000000000000000000000000000006000526001600160a01b0316600452602490565b7f99ac52f20000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff841660045260246000fd5b3461022c57602060031936011261022c576001600160a01b036004356125578161021b565b61255f6140c6565b163381146125c457807fffffffffffffffffffffffff000000000000000000000000000000000000000060005416176000556001600160a01b03600154167fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278600080a3005b7fdad89dca0000000000000000000000000000000000000000000000000000000060005260046000fd5b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c573660238201121561022c5780600401359061262b82610d1b565b90612639604051928361075d565b8282526024602083019360071b8201019036821161022c57602401925b81841061266657610dc083613a42565b8336036080811261022c576060601f196040519261268384610725565b873561268e8161021b565b8452011261022c576080916020916040516126a8816106e8565b838801356126b58161021b565b815260408801356126c581611ba6565b8482015260608801356126d781610d33565b604082015283820152815201930192612656565b3461022c57604060031936011261022c576004356127088161021b565b612710610294565b9067ffffffffffffffff82169182600052600960205260ff604060002054161561277d5761274061276192613b92565b92600052600960205263ffffffff60016040600020015460901c1690614fa0565b604080516001600160e01b039384168152919092166020820152f35b827f99ac52f20000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b90662386f26fc10000820291808304662386f26fc1000014901517156127fc57565b6127ab565b90655af3107a4000820291808304655af3107a400014901517156127fc57565b818102929181159184041417156127fc57565b811561283e570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b612897612891610bcf94936001600160e01b0361288a8195613b92565b1690612821565b92613b92565b1690612834565b906128a882610d1b565b6128b5604051918261075d565b828152601f196128c58294610d1b565b019060005b8281106128d657505050565b8060606020809385010152016128ca565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b91908110156129265760061b0190565b6128e7565b35610bcf8161021b565b91908110156129265760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618136030182121561022c570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561022c570180359067ffffffffffffffff821161022c5760200191813603831361022c57565b92919267ffffffffffffffff821161070457604051916129f0601f8201601f19166020018461075d565b82948184528183011161022c578281602093846000960137010152565b9061023c604051612a1d81610741565b925463ffffffff8082168552602082811c821690860152604082811c61ffff1690860152605082901c81166060860152607082901c16608085015260901c60ff16151560a0840152565b80518210156129265760209160051b010190565b909291612ac8612a9f8367ffffffffffffffff166000526009602052604060002090565b5460081b7fffffffff000000000000000000000000000000000000000000000000000000001690565b90612ad28161289e565b9560005b828110612ae7575050505050505090565b612afa612af5828489612916565b61292b565b8388612b14612b0a858484612935565b6040810190612975565b905060208111612c2a575b508392612b4e612b486121b9612b3e600198612b8997612b8497612935565b6020810190612975565b89613c0a565b612b6c8967ffffffffffffffff16600052600a602052604060002090565b906001600160a01b0316600052602052604060002090565b612a0d565b60a081015115612bee57612bd2612baa6060612bc493015163ffffffff1690565b6040805163ffffffff909216602083015290928391820190565b03601f19810183528261075d565b612bdc828b612a67565b52612be7818a612a67565b5001612ad6565b50612bc4612bd2612c2584612c178a67ffffffffffffffff166000526009602052604060002090565b015460101c63ffffffff1690565b612baa565b915050612c6261191d612c5584612b6c8b67ffffffffffffffff16600052600a602052604060002090565b5460701c63ffffffff1690565b10612c6f57838838612b1f565b7f36f536ca000000000000000000000000000000000000000000000000000000006000526001600160a01b031660045260246000fd5b60405190612cb2826106e8565b60006040838281528260208201520152565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561022c570180359067ffffffffffffffff821161022c57602001918160061b3603831361022c57565b35906001600160e01b038216820361022c57565b60408136031261022c57612d5b602060405192612d4884610725565b8035612d538161021b565b845201612d18565b602082015290565b60408136031261022c57612d5b602060405192612d7f84610725565b612d53816102ab565b90612d916140c6565b60005b8251811015612ee15780612daa60019285612a67565b517f32a4ba3fa3351b11ad555d4c8ec70a744e8705607077a946807030d64b6ab1a360a06001600160a01b038351169260608101936001600160a01b0380865116957fffff000000000000000000000000000000000000000000000000000000000000612e4860208601947fffffffffffffffffffff00000000000000000000000000000000000000000000865116604088019a848c5116926158b9565b977fffffffffffffffffffff000000000000000000000000000000000000000000006080870195612eb4875115158c600052600460205260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b8560405198511688525116602087015251166040850152511660608301525115156080820152a201612d94565b509050565b60405190612ef382610725565b60006020838281520152565b90604051612f0c81610725565b91546001600160e01b038116835260e01c6020830152565b9061023c6130846001612f3561078f565b946130236130198254612f51612f4b8260ff1690565b15158a52565b61ffff600882901c1660208a015263ffffffff601882901c1660408a015263ffffffff603882901c1660608a015263ffffffff605882901c1660808a015260ff607882901c1660a08a015260ff608082901c1660c08a015261ffff608882901c1660e08a015263ffffffff609882901c166101008a015261ffff60b882901c166101208a015261ffff60c882901c166101408a01527fffffffff00000000000000000000000000000000000000000000000000000000600882901b166101608a015260f81c90565b1515610180880152565b015461ffff81166101a086015263ffffffff601082901c166101c086015263ffffffff603082901c166101e086015267ffffffffffffffff605082901c1661020086015263ffffffff609082901c1661022086015260b01c63ffffffff1690565b63ffffffff16610240840152565b9061309b6140c6565b6000915b805183101561328d576130b28382612a67565b51906130c6825167ffffffffffffffff1690565b946020600093019367ffffffffffffffff8716935b85518051821015613278576130f282602092612a67565b510151613103611855838951612a67565b8151602083015163ffffffff90811691168181101561323f575050608082015163ffffffff16602081106131fe575090867f94967ae9ea7729ad4f54021c1981765d2b1d954f7c92fbec340aa0a54f46b8b56001600160a01b038461318d858f60019998612b6c6131889267ffffffffffffffff16600052600a602052604060002090565b614104565b6131f560405192839216958291909160a08060c083019463ffffffff815116845263ffffffff602082015116602085015261ffff604082015116604085015263ffffffff606082015116606085015263ffffffff608082015116608085015201511515910152565b0390a3016130db565b7f24ecdc02000000000000000000000000000000000000000000000000000000006000526001600160a01b0390911660045263ffffffff1660245260446000fd5b7f0b4f67a20000000000000000000000000000000000000000000000000000000060005263ffffffff9081166004521660245260446000fd5b5050955092509260019150019192909261309f565b50905060005b815181101561333d57806132bb6132ac60019385612a67565b515167ffffffffffffffff1690565b67ffffffffffffffff6001600160a01b036132ea60206132db8689612a67565b5101516001600160a01b031690565b600061330e82612b6c8767ffffffffffffffff16600052600a602052604060002090565b551691167f4de5b1bcbca6018c11303a2c3f4a4b4f22a1c741d8c4ba430d246ac06c5ddf8b600080a301613293565b5050565b60208183031261022c5780359067ffffffffffffffff821161022c570181601f8201121561022c5780359061337582610d1b565b92613383604051948561075d565b8284526020606081860194028301019181831161022c57602001925b8284106133ad575050505090565b60608483031261022c5760206060916040516133c8816106e8565b86356133d38161021b565b81526133e0838801612d18565b838201526133f060408801611284565b604082015281520193019261339f565b9060405161340d816106e8565b604060ff8294546001600160a01b0381168452818160a01c16602085015260a81c161515910152565b9061343f6140c6565b60005b8251811015612ee1576134558184612a67565b5160206134656132ac8487612a67565b9101519067ffffffffffffffff811680158015613681575b8015613653575b80156135a6575b61356e579161353482600195946134e46134bf612a9f6135399767ffffffffffffffff166000526009602052604060002090565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b61353f577f71e9302ab4e912a9678ae7f5a8542856706806f2817e1bf2a20b171e265cb4ad604051806135178782611065565b0390a267ffffffffffffffff166000526009602052604060002090565b614433565b01613442565b7f2431cc0363f2f66b21782c7e3d54dd9085927981a21bd0cc6be45a51b19689e3604051806135178782611065565b7fc35aa79d0000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff821660045260246000fd5b507fffffffff000000000000000000000000000000000000000000000000000000006135f66101608501517fffffffff000000000000000000000000000000000000000000000000000000001690565b167f2812d52c000000000000000000000000000000000000000000000000000000008114159081613628575b5061348b565b7f1e10bdc4000000000000000000000000000000000000000000000000000000009150141538613622565b506101e083015163ffffffff1663ffffffff61367961191d606087015163ffffffff1690565b911611613484565b5063ffffffff6136996101e085015163ffffffff1690565b161561347d565b6136a86140c6565b60208101519160005b835181101561373557806136ca610b3e60019387612a67565b6136ec6136e76001600160a01b0383165b6001600160a01b031690565b615bec565b6136f8575b50016136b1565b6040516001600160a01b039190911681527fc3803387881faad271c47728894e3e36fac830ffc8602ca6fc07733cbda7758090602090a1386136f1565b5091505160005b815181101561333d57613752610b3e8284612a67565b906001600160a01b038216156137c8577feb1b9b92e50b7f88f9ff25d56765095ac6e91540eee214906f4036a908ffbdef6137bf836137a461379f6136db6001976001600160a01b031690565b615b73565b506040516001600160a01b0390911681529081906020820190565b0390a10161373c565b7f8579befe0000000000000000000000000000000000000000000000000000000060005260046000fd5b6137fa6140c6565b60005b815181101561333d57806001600160a01b0361381b60019385612a67565b5151167fbb77da6f7210cdd16904228a9360133d1d7dfff99b1bc75f128da5b53e28f97d6138b867ffffffffffffffff60206138578689612a67565b51015116836000526008602052604060002067ffffffffffffffff82167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008254161790556040519182918291909167ffffffffffffffff6020820193169052565b0390a2016137fd565b919082039182116127fc57565b6138d6612ee6565b506138fc6138f7826001600160a01b03166000526006602052604060002090565b612eff565b602081019161391b61391561191d855163ffffffff1690565b426138c1565b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016116139c35761187c613967916001600160a01b03166000526007602052604060002090565b6139776118916040830151151590565b80156139c9575b6139c35761398b90614b01565b9163ffffffff6139b361191d6139a8602087015163ffffffff1690565b935163ffffffff1690565b9116106139be575090565b905090565b50905090565b506001600160a01b036139e382516001600160a01b031690565b161561397e565b919082018092116127fc57565b9061ffff8091169116029061ffff82169182036127fc57565b63ffffffff60209116019063ffffffff82116127fc57565b9063ffffffff8091169116019063ffffffff82116127fc57565b90613a4b6140c6565b60005b8251811015612ee15780613a6460019285612a67565b517fe6a7a17d710bf0b2cd05e5397dc6f97a5da4ee79e31e234bf5f965ee2bd9a5bf613b8960206001600160a01b038451169301518360005260076020526040600020613ae96001600160a01b0383511682906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b602082015181547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff74ff000000000000000000000000000000000000000075ff0000000000000000000000000000000000000000006040870151151560a81b169360a01b169116171790556040519182918291909160408060608301946001600160a01b03815116845260ff602082015116602085015201511515910152565b0390a201613a4e565b613b9b816138ce565b9063ffffffff602083015116158015613bf8575b613bc15750516001600160e01b031690565b6001600160a01b03907f06439c6b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b506001600160e01b0382511615613baf565b907fffffffff0000000000000000000000000000000000000000000000000000000082167f2812d52c000000000000000000000000000000000000000000000000000000008114613cd8577f1e10bdc40000000000000000000000000000000000000000000000000000000014613ccb577f2ee82075000000000000000000000000000000000000000000000000000000006000527fffffffff00000000000000000000000000000000000000000000000000000000821660045260246000fd5b61023c9150600190615378565b5090506020815103613d1157613cf76020825183010160208301615369565b6001600160a01b038111908115613d4b575b50613d115750565b613d47906040519182917f8d666f6000000000000000000000000000000000000000000000000000000000835260048301615358565b0390fd5b61040091501038613d09565b917fffffffff0000000000000000000000000000000000000000000000000000000083167f2812d52c000000000000000000000000000000000000000000000000000000008114613e25577f1e10bdc40000000000000000000000000000000000000000000000000000000014613e18577f2ee82075000000000000000000000000000000000000000000000000000000006000527fffffffff00000000000000000000000000000000000000000000000000000000831660045260246000fd5b61023c9250151590615378565b505090506020815103613d1157613cf76020825183010160208301615369565b33600052600360205260406000205415613e5b57565b7fd86ad9cf000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b611273613eb09196949395929667ffffffffffffffff166000526009602052604060002090565b946101608601947f2812d52c000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000613f2388517fffffffff000000000000000000000000000000000000000000000000000000001690565b16146140815750507f1e10bdc4000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000613f9786517fffffffff000000000000000000000000000000000000000000000000000000001690565b161461401857611a3b613fca85517fffffffff000000000000000000000000000000000000000000000000000000001690565b7f2ee82075000000000000000000000000000000000000000000000000000000006000527fffffffff0000000000000000000000000000000000000000000000000000000016600452602490565b61406c93506121b960606140568763ffffffff61404d6101806140458661407a9b9d015163ffffffff1690565b930151151590565b91168587615754565b0151604051958691602083019190602083019252565b03601f19810186528561075d565b9160019190565b945094916140a7916140a161191d6101e0610bcf96015163ffffffff1690565b916154d5565b936140be60206140b6876155f6565b960151151590565b9336916129c6565b6001600160a01b036001541633036140da57565b7f2b5c74de0000000000000000000000000000000000000000000000000000000060005260046000fd5b815181546020808501516040808701517fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000090941663ffffffff958616179190921b67ffffffff00000000161791901b69ffff000000000000000016178255606083015161023c936142149260a0926141b6911685547fffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffff1660509190911b6dffffffff0000000000000000000016178555565b61420d6141ca608083015163ffffffff1690565b85547fffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffff1660709190911b71ffffffff000000000000000000000000000016178555565b0151151590565b81547fffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff1690151560901b72ff00000000000000000000000000000000000016179055565b91929092614268828286866158b9565b600052600460205260ff60406000205416156142845750505050565b6040517f097e17ff0000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201529390921660248401527fffffffffffffffffffff0000000000000000000000000000000000000000000090911660448301527fffff000000000000000000000000000000000000000000000000000000000000166064820152608490fd5b604d81116127fc57600a0a90565b60ff1660120160ff81116127fc5760ff169060248211156143c1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82019182116127fc5761437761437d92614318565b90612834565b6001600160e01b038111614397576001600160e01b031690565b7f10cb51d10000000000000000000000000000000000000000000000000000000060005260046000fd5b9060240390602482116127fc576122996143da92614318565b61437d565b9060ff80911691160160ff81116127fc5760ff169060248211156143c1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82019182116127fc5761437761437d92614318565b90614a4d610240600161023c9461447e61444d8651151590565b829060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b6144c4614490602087015161ffff1690565b82547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff1660089190911b62ffff0016178255565b6145106144d8604087015163ffffffff1690565b82547fffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff1660189190911b66ffffffff00000016178255565b614560614524606087015163ffffffff1690565b82547fffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffff1660389190911b6affffffff0000000000000016178255565b6145b4614574608087015163ffffffff1690565b82547fffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffff1660589190911b6effffffff000000000000000000000016178255565b6146066145c560a087015160ff1690565b82547fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff1660789190911b6fff00000000000000000000000000000016178255565b61465961461760c087015160ff1690565b82547fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff1660809190911b70ff0000000000000000000000000000000016178255565b6146af61466b60e087015161ffff1690565b82547fffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffff1660889190911b72ffff000000000000000000000000000000000016178255565b61470c6146c461010087015163ffffffff1690565b82547fffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffff1660989190911b76ffffffff0000000000000000000000000000000000000016178255565b61476961471f61012087015161ffff1690565b82547fffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff1660b89190911b78ffff000000000000000000000000000000000000000000000016178255565b6147c861477c61014087015161ffff1690565b82547fffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff1660c89190911b7affff0000000000000000000000000000000000000000000000000016178255565b6148496147f96101608701517fffffffff000000000000000000000000000000000000000000000000000000001690565b82547fff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff1660089190911c7effffffff00000000000000000000000000000000000000000000000000000016178255565b6148aa61485a610180870151151590565b82547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690151560f81b7fff0000000000000000000000000000000000000000000000000000000000000016178255565b01926148ee6148bf6101a083015161ffff1690565b859061ffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000825416179055565b61493a6149036101c083015163ffffffff1690565b85547fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff1660109190911b65ffffffff000016178555565b61498a61494f6101e083015163ffffffff1690565b85547fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff1660309190911b69ffffffff00000000000016178555565b6149e66149a361020083015167ffffffffffffffff1690565b85547fffffffffffffffffffffffffffff0000000000000000ffffffffffffffffffff1660509190911b71ffffffffffffffff0000000000000000000016178555565b614a426149fb61022083015163ffffffff1690565b85547fffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffff1660909190911b75ffffffff00000000000000000000000000000000000016178555565b015163ffffffff1690565b7fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff79ffffffff0000000000000000000000000000000000000000000083549260b01b169116179055565b519069ffffffffffffffffffff8216820361022c57565b908160a091031261022c57614ac281614a97565b91602082015191604081015191610bcf608060608401519301614a97565b6040513d6000823e3d90fd5b9081602091031261022c5751610bcf81611ba6565b614b09612ee6565b50614b216136db6136db83516001600160a01b031690565b90604051907ffeaf968c00000000000000000000000000000000000000000000000000000000825260a082600481865afa928315614c2957600092600094614c2e575b5060008312614397576020600491604051928380927f313ce5670000000000000000000000000000000000000000000000000000000082525afa928315614c2957610bcf9363ffffffff93614bca93600092614bf3575b506020015160ff165b906143df565b92614be5614bd6610780565b6001600160e01b039095168552565b1663ffffffff166020830152565b614bc4919250614c1a602091823d8411614c22575b614c12818361075d565b810190614aec565b929150614bbb565b503d614c08565b614ae0565b909350614c5491925060a03d60a011614c61575b614c4c818361075d565b810190614aae565b5093925050919238614b64565b503d614c42565b9291949390614c8161191d604086015163ffffffff1690565b808211614f70575050602083015161ffff16808611614f3a5750610160830194614ccb86517fffffffff000000000000000000000000000000000000000000000000000000001690565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f2812d52c000000000000000000000000000000000000000000000000000000008103614d8d5750505082610bcf9492614d5d92614d386101e0614d889997015163ffffffff1690565b9063ffffffff614d556101806140b6606088015163ffffffff1690565b941692615965565b519384925b517fffffffff000000000000000000000000000000000000000000000000000000001690565b613d57565b91949392917f1e10bdc40000000000000000000000000000000000000000000000000000000003614eeb575090829163ffffffff614de3610180614ddb6060614deb98015163ffffffff1690565b950151151590565b931691615754565b90151580614edf575b614eb5576080810180515160408111614e83575060208201519051519067ffffffffffffffff9081169081831c16614e4957505091610bcf91614e4161191d614d88955163ffffffff1690565b938492614d62565b7fafa933080000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff1660045260245260446000fd5b7f8a0d71f700000000000000000000000000000000000000000000000000000000600052600452604060245260446000fd5b7f5bed51920000000000000000000000000000000000000000000000000000000060005260046000fd5b50606081015115614df4565b7f2ee82075000000000000000000000000000000000000000000000000000000006000527fffffffff000000000000000000000000000000000000000000000000000000001660045260246000fd5b7fd88dddd600000000000000000000000000000000000000000000000000000000600052600486905261ffff1660245260446000fd5b7f869337890000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b67ffffffffffffffff8116600052600560205260406000209160405192614fc684610725565b546001600160e01b038116845260e01c9182602085015263ffffffff82169283615000575b50505050610bcf90516001600160e01b031690565b63ffffffff1642908103939084116127fc57831161501e5780614feb565b7ff08bcb3e0000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff1660045263ffffffff1660245260445260646000fd5b60408136031261022c5760206040519161507a83610725565b80356150858161021b565b83520135602082015290565b9694919695929390956000946000986000986000965b8088106150bb575050505050505050929190565b9091929394959697999a6150d86150d38a848b612916565b615061565b9a615126612b848d61510f6151018967ffffffffffffffff16600052600a602052604060002090565b91516001600160a01b031690565b6001600160a01b0316600052602052604060002090565b9161513761189160a0850151151590565b6152805760009c60408401906151526123f5835161ffff1690565b615208575b5050606083015163ffffffff1661516d91613a28565b9c60808301516151809063ffffffff1690565b61518991613a28565b9b82516151999063ffffffff1690565b63ffffffff166151a8906127da565b600193908083106151fc57506124ae61191d60206151cb93015163ffffffff1690565b8082116151eb57506151dc916139ea565b985b01969594939291906150a7565b90506151f6916139ea565b986151de565b9150506151f6916139ea565b90612299615271939f61525f6152689460208f8e6123f595506001600160a01b0361523a85516001600160a01b031690565b91166001600160a01b03821614615279576152559150613b92565b915b0151906159cd565b925161ffff1690565b620186a0900490565b9b3880615157565b5091615257565b999b50600191506152a7846152a16152ad9361529b8b6127da565b906139ea565b9b613a28565b9c613a10565b9a6151de565b91939093806101e00193846101e0116127fc5761012081029080820461012014901517156127fc576101e09101018093116127fc576123f5610140615349610bcf966dffffffffffffffffffffffffffff6123826153346153216153539a63ffffffff6122999a16906139ea565b6122996123f56101208c015161ffff1690565b61529b61191d6101008b015163ffffffff1690565b93015161ffff1690565b612801565b906020610bcf9281815201906102f1565b9081602091031261022c575190565b9060208251036153e0576153895750565b60208180518101031261022c576020810151156153a35750565b613d47906040519182917fff828faa00000000000000000000000000000000000000000000000000000000835260206004840181815201906102f1565b6040517fff828faa0000000000000000000000000000000000000000000000000000000081526020600482015280613d4760248201856102f1565b919091357fffffffff000000000000000000000000000000000000000000000000000000008116926004811061544f575050565b7fffffffff00000000000000000000000000000000000000000000000000000000929350829060040360031b1b161690565b909291928360041161022c57831161022c57600401916003190190565b9060041161022c5790600490565b9081604091031261022c576020604051916154c683610725565b805183520151612d5b81610d33565b916154de612ee6565b5081156155d4575061551f6121b982806155197fffffffff00000000000000000000000000000000000000000000000000000000958761541b565b95615481565b91167f181dcf1000000000000000000000000000000000000000000000000000000000810361555c575080602080610bcf935183010191016154ac565b7f97a657c900000000000000000000000000000000000000000000000000000000146155ac577f5247fdce0000000000000000000000000000000000000000000000000000000060005260046000fd5b806020806155bf93518301019101615369565b6155c7610780565b9081526000602082015290565b91505067ffffffffffffffff6155e8610780565b911681526000602082015290565b6020604051917f181dcf1000000000000000000000000000000000000000000000000000000000828401528051602484015201511515604482015260448152610bcf60648261075d565b6040519061564d82610709565b60606080836000815260006020820152600060408201526000838201520152565b60208183031261022c5780359067ffffffffffffffff821161022c57019060a08282031261022c57604051916156a383610709565b6156ac81611284565b83526156ba602082016102ab565b602084015260408101356156cd81610d33565b60408401526060810135606084015260808101359067ffffffffffffffff821161022c57019080601f8301121561022c57813561570981610d1b565b92615717604051948561075d565b81845260208085019260051b82010192831161022c57602001905b82821061574457505050608082015290565b8135815260209182019101615732565b61575c615640565b50811561588f577f1f3b3aba000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000006157b86157b2858561549e565b9061541b565b160361586557816157d4926157cc92615481565b81019061566e565b918061584f575b6158255763ffffffff6157f2835163ffffffff1690565b16116157fb5790565b7f2e2b0c290000000000000000000000000000000000000000000000000000000060005260046000fd5b7fee433e990000000000000000000000000000000000000000000000000000000060005260046000fd5b506158606118916040840151151590565b6157db565b7f5247fdce0000000000000000000000000000000000000000000000000000000060005260046000fd5b7fb00b53dc0000000000000000000000000000000000000000000000000000000060005260046000fd5b604080516001600160a01b039283166020820190815292909316908301527fffffffffffffffffffff0000000000000000000000000000000000000000000090921660608201527fffff0000000000000000000000000000000000000000000000000000000000009092166080830152906159378160a08101612bc4565b51902090565b6001600160a01b03610bcf9116600b615a7a565b6001600160a01b03610bcf9116600b615bae565b9063ffffffff6159829395949561597a612ee6565b5016916154d5565b918251116159a35780615997575b6158255790565b50602081015115615990565b7f4c4fc93a0000000000000000000000000000000000000000000000000000000060005260046000fd5b670de0b6b3a7640000916001600160e01b036159e99216612821565b0490565b80548210156129265760005260206000200190600090565b91615a1f918354906000199060031b92831b921b19161790565b9055565b80548015615a4b576000190190615a3a82826159ed565b60001982549160031b1b1916905555565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001810191806000528260205260406000205492831515600014615b2c5760001984018481116127fc5783549360001985019485116127fc576000958583615add97615ace9503615ae3575b505050615a23565b90600052602052604060002090565b55600190565b615b13615b0d91615b04615afa615b2395886159ed565b90549060031b1c90565b928391876159ed565b90615a05565b8590600052602052604060002090565b55388080615ac6565b50505050600090565b805490680100000000000000008210156107045781615b5c916001615a1f940181556159ed565b81939154906000199060031b92831b921b19161790565b600081815260036020526040902054615ba857615b91816002615b35565b600254906000526003602052604060002055600190565b50600090565b6000828152600182016020526040902054615be55780615bd083600193615b35565b80549260005201602052604060002055600190565b5050600090565b600081815260036020526040902054908115615be5576000198201908282116127fc576002549260001984019384116127fc578383615add9460009603615c4c575b505050615c3b6002615a23565b600390600052602052604060002090565b615c3b615b0d91615c64615afa615c6e9560026159ed565b92839160026159ed565b55388080615c2e56fea164736f6c634300081a000a00000000000000000000000000000000000000000000000ad78ebc5ac6200000000000000000000000000000e4ab69c077896252fafbd49efd26b5d171a3241000000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000419f616ca684b44cb5d9700a8158741e82be774000000000000000000000000000000000000000000000000000000000000000020000000000000000000000004200000000000000000000000000000000000006000000000000000000000000e4ab69c077896252fafbd49efd26b5d171a32410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000e4ab69c077896252fafbd49efd26b5d171a324100000000000000000000000000000000000000000000000000c7d713b49da000000000000000000000000000042000000000000000000000000000000000000060000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436101561001257600080fd5b60003560e01c806241e5be1461021657806301447eaa1461021157806301ffc9a71461020c578063061877e31461020757806306285c6914610202578063181f5a77146101fd5780632451a627146101f8578063325c868e146101f35780633937306f146101ee5780633a49bb49146101e957806341ed29e7146101e457806345ac924d146101df5780634ab35b0b146101da578063514e8cff146101d55780636def4ce7146101d0578063770e2dc4146101cb57806379ba5097146101c65780637afac322146101c1578063805f2132146101bc57806382b49eb0146101b757806387b8d879146101b25780638da5cb5b146101ad57806391a2749a146101a8578063a69c64c0146101a3578063bf78e03f1461019e578063cdc73d5114610199578063d02641a014610194578063d63d3af21461018f578063d8694ccd1461018a578063f2fde38b14610185578063fbe3f778146101805763ffdb4b371461017b57600080fd5b6126eb565b6125ee565b612532565b6120ce565b6120b2565b612069565b611ff2565b611f4c565b611e93565b611dff565b611dd8565b611bbc565b611a3f565b6117a4565b61166b565b611553565b611334565b6111b5565b610fde565b610fa6565b610edd565b610d48565b610bd2565b6108e0565b6108c4565b610841565b61079f565b6105e8565b6105a0565b61047c565b6103b0565b61023e565b6001600160a01b0381160361022c57565b600080fd5b359061023c8261021b565b565b3461022c57606060031936011261022c5760206102756004356102608161021b565b602435604435916102708361021b565b61286d565b604051908152f35b6004359067ffffffffffffffff8216820361022c57565b6024359067ffffffffffffffff8216820361022c57565b359067ffffffffffffffff8216820361022c57565b9181601f8401121561022c5782359167ffffffffffffffff831161022c576020808501948460051b01011161022c57565b919082519283825260005b84811061031d575050601f19601f8460006020809697860101520116010190565b806020809284010151828286010152016102fc565b602081016020825282518091526040820191602060408360051b8301019401926000915b83831061036557505050505090565b90919293946020806103a1837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301875289516102f1565b97019301930191939290610356565b3461022c57606060031936011261022c576103c961027d565b60243567ffffffffffffffff811161022c576103e99036906004016102c0565b6044929192359167ffffffffffffffff831161022c573660238401121561022c5782600401359167ffffffffffffffff831161022c573660248460061b8601011161022c5761044b94602461043f950192612a7b565b60405191829182610332565b0390f35b35907fffffffff000000000000000000000000000000000000000000000000000000008216820361022c57565b3461022c57602060031936011261022c576004357fffffffff000000000000000000000000000000000000000000000000000000008116810361022c577fffffffff00000000000000000000000000000000000000000000000000000000602091167f805f2132000000000000000000000000000000000000000000000000000000008114908115610576575b811561054c575b8115610522575b506040519015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501438610517565b7f181f5a770000000000000000000000000000000000000000000000000000000081149150610510565b7fe364892e0000000000000000000000000000000000000000000000000000000081149150610509565b3461022c57602060031936011261022c576001600160a01b036004356105c58161021b565b166000526008602052602067ffffffffffffffff60406000205416604051908152f35b3461022c57600060031936011261022c57610601612ca5565b506060604051610610816106e8565b63ffffffff6bffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000ad78ebc5ac620000016918281526001600160a01b0360406020830192827f000000000000000000000000e4ab69c077896252fafbd49efd26b5d171a324101684520191837f00000000000000000000000000000000000000000000000000000000000151801683526040519485525116602084015251166040820152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff82111761070457604052565b6106b9565b60a0810190811067ffffffffffffffff82111761070457604052565b6040810190811067ffffffffffffffff82111761070457604052565b60c0810190811067ffffffffffffffff82111761070457604052565b90601f601f19910116810190811067ffffffffffffffff82111761070457604052565b6040519061023c60408361075d565b6040519061023c6102608361075d565b3461022c57600060031936011261022c5761044b60408051906107c2818361075d565b600f82527f46656551756f74657220312e362e3000000000000000000000000000000000006020830152519182916020835260208301906102f1565b602060408183019282815284518094520192019060005b8181106108225750505090565b82516001600160a01b0316845260209384019390920191600101610815565b3461022c57600060031936011261022c5760405180602060025491828152019060026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace9060005b8181106108ae5761044b856108a28187038261075d565b604051918291826107fe565b825484526020909301926001928301920161088b565b3461022c57600060031936011261022c57602060405160248152f35b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c5780600401906040600319823603011261022c5761091e613e45565b6109288280612cc4565b4263ffffffff1692915060005b818110610a995750506024019061094c8284612cc4565b92905060005b83811061095b57005b8061097a61097560019361096f868a612cc4565b90612916565b612d63565b7fdd84a3fa9ef9409f550d54d6affec7e9c480c878c6ab27b78912a03e1b371c6e67ffffffffffffffff610a75610a676020850194610a596109c387516001600160e01b031690565b6109dd6109ce610780565b6001600160e01b039092168252565b63ffffffff8c166020820152610a186109fe845167ffffffffffffffff1690565b67ffffffffffffffff166000526005602052604060002090565b815160209092015160e01b7fffffffff00000000000000000000000000000000000000000000000000000000166001600160e01b0392909216919091179055565b5167ffffffffffffffff1690565b93516001600160e01b031690565b604080516001600160e01b039290921682524260208301529190931692a201610952565b80610ab2610aad60019361096f8980612cc4565b612d2c565b7f52f50aa6d1a95a4595361ecf953d095f125d442e4673716dede699e049de148a6001600160a01b03610b4b610a676020850194610b3e610afa87516001600160e01b031690565b610b056109ce610780565b63ffffffff8d166020820152610a18610b2584516001600160a01b031690565b6001600160a01b03166000526006602052604060002090565b516001600160a01b031690565b604080516001600160e01b039290921682524260208301529190931692a201610935565b9181601f8401121561022c5782359167ffffffffffffffff831161022c576020838186019501011161022c57565b92610bcf9492610bc1928552151560208501526080604085015260808401906102f1565b9160608184039101526102f1565b90565b3461022c5760a060031936011261022c57610beb61027d565b60243590610bf88261021b565b6044359160643567ffffffffffffffff811161022c57610c1c903690600401610b6f565b93909160843567ffffffffffffffff811161022c57610c3f903690600401610b6f565b9290917f000000000000000000000000e4ab69c077896252fafbd49efd26b5d171a32410906001600160a01b0382166001600160a01b03821614600014610d0b575050935b6bffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000ad78ebc5ac620000016808611610cda575091610ccb939161044b9693613e89565b90939160405194859485610b9d565b857f6a92a4830000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b91610d159261286d565b93610c84565b67ffffffffffffffff81116107045760051b60200190565b8015150361022c57565b359061023c82610d33565b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c573660238201121561022c57806004013590610d8582610d1b565b90610d93604051928361075d565b828252602460a06020840194028201019036821161022c57602401925b818410610dc257610dc083612d88565b005b60a08436031261022c5760405190610dd982610709565b8435610de48161021b565b825260208501357fffffffffffffffffffff000000000000000000000000000000000000000000008116810361022c5760208301526040850135907fffff0000000000000000000000000000000000000000000000000000000000008216820361022c5782602092604060a0950152610e5f60608801610231565b6060820152610e7060808801610d3d565b6080820152815201930192610db0565b602060408183019282815284518094520192019060005b818110610ea45750505090565b9091926020604082610ed2600194885163ffffffff602080926001600160e01b038151168552015116910152565b019401929101610e97565b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c57610f0e9036906004016102c0565b610f1781610d1b565b91610f25604051938461075d565b818352601f19610f3483610d1b565b0160005b818110610f8f57505060005b82811015610f8157600190610f65610f608260051b850161292b565b6138ce565b610f6f8287612a67565b52610f7a8186612a67565b5001610f44565b6040518061044b8682610e80565b602090610f9a612ee6565b82828801015201610f38565b3461022c57602060031936011261022c576020610fcd600435610fc88161021b565b613b92565b6001600160e01b0360405191168152f35b3461022c57602060031936011261022c5767ffffffffffffffff61100061027d565b611008612ee6565b5016600052600560205260406000206040519061102482610725565b546001600160e01b038116825260e01c6020820152604051809161044b82604081019263ffffffff602080926001600160e01b038151168552015116910152565b61023c909291926102408061026083019561108284825115159052565b60208181015161ffff169085015260408181015163ffffffff169085015260608181015163ffffffff169085015260808181015163ffffffff169085015260a08181015160ff169085015260c08181015160ff169085015260e08181015161ffff16908501526101008181015163ffffffff16908501526101208181015161ffff16908501526101408181015161ffff1690850152610160818101517fffffffff000000000000000000000000000000000000000000000000000000001690850152610180818101511515908501526101a08181015161ffff16908501526101c08181015163ffffffff16908501526101e08181015163ffffffff16908501526102008181015167ffffffffffffffff16908501526102208181015163ffffffff1690850152015163ffffffff16910152565b3461022c57602060031936011261022c5761044b6112786112736111d761027d565b60006102406111e461078f565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015282610120820152826101408201528261016082015282610180820152826101a0820152826101c0820152826101e08201528261020082015282610220820152015267ffffffffffffffff166000526009602052604060002090565b612f24565b60405191829182611065565b359063ffffffff8216820361022c57565b359061ffff8216820361022c57565b81601f8201121561022c578035906112bb82610d1b565b926112c9604051948561075d565b82845260208085019360061b8301019181831161022c57602001925b8284106112f3575050505090565b60408483031261022c576020604091825161130d81610725565b611316876102ab565b8152828701356113258161021b565b838201528152019301926112e5565b3461022c57604060031936011261022c5760043567ffffffffffffffff811161022c573660238201121561022c57806004013561137081610d1b565b9161137e604051938461075d565b8183526024602084019260051b8201019036821161022c5760248101925b8284106113cd576024358567ffffffffffffffff821161022c576113c7610dc09236906004016112a4565b90613092565b833567ffffffffffffffff811161022c57820160407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc823603011261022c576040519061141982610725565b611425602482016102ab565b8252604481013567ffffffffffffffff811161022c57602491010136601f8201121561022c57803561145681610d1b565b91611464604051938461075d565b818352602060e081850193028201019036821161022c57602001915b81831061149f575050509181602093848094015281520193019261139c565b82360360e0811261022c5760c0601f19604051926114bc84610725565b86356114c78161021b565b8452011261022c5760e0916020916040516114e181610741565b6114ec848801611284565b81526114fa60408801611284565b8482015261150a60608801611295565b604082015261151b60808801611284565b606082015261152c60a08801611284565b608082015260c087013561153f81610d33565b60a082015283820152815201920191611480565b3461022c57600060031936011261022c576000546001600160a01b03811633036115da577fffffffffffffffffffffffff0000000000000000000000000000000000000000600154913382841617600155166000556001600160a01b033391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b7f02b543c60000000000000000000000000000000000000000000000000000000060005260046000fd5b9080601f8301121561022c57813561161b81610d1b565b92611629604051948561075d565b81845260208085019260051b82010192831161022c57602001905b8282106116515750505090565b6020809183356116608161021b565b815201910190611644565b3461022c57604060031936011261022c5760043567ffffffffffffffff811161022c5761169c903690600401611604565b60243567ffffffffffffffff811161022c576116bc903690600401611604565b906116c56140c6565b60005b815181101561173457806116e96116e4610b3e60019486612a67565b61593d565b6116f4575b016116c8565b6001600160a01b03611709610b3e8386612a67565b167f1795838dc8ab2ffc5f431a1729a6afa0b587f982f7b2be0b9d7187a1ef547f91600080a26116ee565b8260005b8151811015610dc05780611759611754610b3e60019486612a67565b615951565b611764575b01611738565b6001600160a01b03611779610b3e8386612a67565b167fdf1b1bd32a69711488d71554706bb130b1fc63a5fa1a2cd85e8440f84065ba23600080a261175e565b3461022c57604060031936011261022c5760043567ffffffffffffffff811161022c576117d5903690600401610b6f565b6024359167ffffffffffffffff831161022c5761182e61182661180c611802611836963690600401610b6f565b94909536916129c6565b90604082015190605e604a84015160601c93015191929190565b919033614258565b810190613341565b60005b8151811015610dc05761188161187c6118636118558486612a67565b51516001600160a01b031690565b6001600160a01b03166000526007602052604060002090565b613400565b6118956118916040830151151590565b1590565b6119f657906118e06118ad6020600194015160ff1690565b6118da6118ce60206118bf8689612a67565b5101516001600160e01b031690565b6001600160e01b031690565b90614326565b6118fb60406118ef8487612a67565b51015163ffffffff1690565b63ffffffff61192661191d611916610b25611855888b612a67565b5460e01c90565b63ffffffff1690565b9116106119f05761197461193f60406118ef8588612a67565b61196461194a610780565b6001600160e01b03851681529163ffffffff166020830152565b610a18610b256118558689612a67565b7f52f50aa6d1a95a4595361ecf953d095f125d442e4673716dede699e049de148a6001600160a01b036119aa6118558588612a67565b6119e66119bc60406118ef888b612a67565b60405193849316958390929163ffffffff6020916001600160e01b03604085019616845216910152565b0390a25b01611839565b506119ea565b611a3b611a066118558486612a67565b7f06439c6b000000000000000000000000000000000000000000000000000000006000526001600160a01b0316600452602490565b6000fd5b3461022c57604060031936011261022c5761044b611ac7611a5e61027d565b67ffffffffffffffff60243591611a748361021b565b600060a0604051611a8481610741565b828152826020820152826040820152826060820152826080820152015216600052600a6020526040600020906001600160a01b0316600052602052604060002090565b611b43611b3a60405192611ada84610741565b5463ffffffff8116845263ffffffff8160201c16602085015261ffff8160401c166040850152611b21611b148263ffffffff9060501c1690565b63ffffffff166060860152565b63ffffffff607082901c16608085015260901c60ff1690565b151560a0830152565b6040519182918291909160a08060c083019463ffffffff815116845263ffffffff602082015116602085015261ffff604082015116604085015263ffffffff606082015116606085015263ffffffff608082015116608085015201511515910152565b60ff81160361022c57565b359061023c82611ba6565b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c573660238201121561022c57806004013590611bf982610d1b565b90611c07604051928361075d565b82825260246102806020840194028201019036821161022c57602401925b818410611c3557610dc083613436565b833603610280811261022c57610260601f1960405192611c5484610725565b611c5d886102ab565b8452011261022c5761028091602091611c7461078f565b611c7f848901610d3d565b8152611c8d60408901611295565b84820152611c9d60608901611284565b6040820152611cae60808901611284565b6060820152611cbf60a08901611284565b6080820152611cd060c08901611bb1565b60a0820152611ce160e08901611bb1565b60c0820152611cf36101008901611295565b60e0820152611d056101208901611284565b610100820152611d186101408901611295565b610120820152611d2b6101608901611295565b610140820152611d3e610180890161044f565b610160820152611d516101a08901610d3d565b610180820152611d646101c08901611295565b6101a0820152611d776101e08901611284565b6101c0820152611d8a6102008901611284565b6101e0820152611d9d61022089016102ab565b610200820152611db06102408901611284565b610220820152611dc36102608901611284565b61024082015283820152815201930192611c25565b3461022c57600060031936011261022c5760206001600160a01b0360015416604051908152f35b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c576040600319823603011261022c57604051611e3c81610725565b816004013567ffffffffffffffff811161022c57611e609060043691850101611604565b8152602482013567ffffffffffffffff811161022c57610dc0926004611e899236920101611604565b60208201526136a0565b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c573660238201121561022c57806004013590611ed082610d1b565b90611ede604051928361075d565b8282526024602083019360061b8201019036821161022c57602401925b818410611f0b57610dc0836137f2565b60408436031261022c5760206040918251611f2581610725565b8635611f308161021b565b8152611f3d8388016102ab565b83820152815201930192611efb565b3461022c57602060031936011261022c576001600160a01b03600435611f718161021b565b611f79612ca5565b5016600052600760205261044b604060002060ff60405191611f9a836106e8565b546001600160a01b0381168352818160a01c16602084015260a81c16151560408201526040519182918291909160408060608301946001600160a01b03815116845260ff602082015116602085015201511515910152565b3461022c57600060031936011261022c57604051806020600b54918281520190600b6000527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99060005b8181106120535761044b856108a28187038261075d565b825484526020909301926001928301920161203c565b3461022c57602060031936011261022c57604061208b600435610f608161021b565b6120b08251809263ffffffff602080926001600160e01b038151168552015116910152565bf35b3461022c57600060031936011261022c57602060405160128152f35b3461022c57604060031936011261022c576120e761027d565b60243567ffffffffffffffff811161022c57806004019060a0600319823603011261022c5761212d6112738467ffffffffffffffff166000526009602052604060002090565b61213a6118918251151590565b6124fa57606482016121706118916121518361292b565b6001600160a01b03166000526001600b01602052604060002054151590565b6124b95790839160448401956121868785612cc4565b9590506121c760248201916121aa60846121a0858a612975565b9390500188612975565b90896121c06121b98b80612975565b36916129c6565b9389614c68565b92846121d5610fc88361292b565b9889946121f36121ed61022085015163ffffffff1690565b82614fa0565b9b6000808c1561247f57505061225961ffff8561227e996122659998966122999661228c966122506122406101c06122346101a061229f9f015161ffff1690565b97015163ffffffff1690565b9161224a8c61292b565b94612cc4565b96909516615091565b9891989790989461292b565b6001600160a01b03166000526008602052604060002090565b5467ffffffffffffffff1690565b67ffffffffffffffff1690565b90612821565b9560009761ffff6122b661014089015161ffff1690565b16612424575b509461229961228c61020061238a61044b9d6dffffffffffffffffffffffffffff6123826123a29f9e9b61237d6001600160e01b039f9b9c61239a9f61237d9e63ffffffff61231161237d9f61231b94612975565b92905016906139ea565b908b60a0810161233e612338612332835160ff1690565b60ff1690565b85612821565b9360e0830191612350835161ffff1690565b9061ffff821683116123b2575b505050506080015161237d9161191d9163ffffffff16613a28565b613a28565b6139ea565b911690612821565b93015167ffffffffffffffff1690565b911690612834565b6040519081529081906020820190565b61191d94965061237d959361ffff612413612402612378966123fc6123f56123ec60809960ff6123e661241a9b5160ff1690565b166139f7565b965161ffff1690565b61ffff1690565b906138c1565b61229961233260c08d015160ff1690565b91166139ea565b959383955061235d565b9095949897508261244a8b989495986dffffffffffffffffffffffffffff9060701c1690565b6dffffffffffffffffffffffffffff16916124658489612975565b905061247193886152b3565b9697939438969392966122bc565b969593509650505061229961228c61227e6122656124b36124ae61191d61024061229f99015163ffffffff1690565b6127da565b9461292b565b6124c5611a3b9161292b565b7f2502348c000000000000000000000000000000000000000000000000000000006000526001600160a01b0316600452602490565b7f99ac52f20000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff841660045260246000fd5b3461022c57602060031936011261022c576001600160a01b036004356125578161021b565b61255f6140c6565b163381146125c457807fffffffffffffffffffffffff000000000000000000000000000000000000000060005416176000556001600160a01b03600154167fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278600080a3005b7fdad89dca0000000000000000000000000000000000000000000000000000000060005260046000fd5b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c573660238201121561022c5780600401359061262b82610d1b565b90612639604051928361075d565b8282526024602083019360071b8201019036821161022c57602401925b81841061266657610dc083613a42565b8336036080811261022c576060601f196040519261268384610725565b873561268e8161021b565b8452011261022c576080916020916040516126a8816106e8565b838801356126b58161021b565b815260408801356126c581611ba6565b8482015260608801356126d781610d33565b604082015283820152815201930192612656565b3461022c57604060031936011261022c576004356127088161021b565b612710610294565b9067ffffffffffffffff82169182600052600960205260ff604060002054161561277d5761274061276192613b92565b92600052600960205263ffffffff60016040600020015460901c1690614fa0565b604080516001600160e01b039384168152919092166020820152f35b827f99ac52f20000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b90662386f26fc10000820291808304662386f26fc1000014901517156127fc57565b6127ab565b90655af3107a4000820291808304655af3107a400014901517156127fc57565b818102929181159184041417156127fc57565b811561283e570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b612897612891610bcf94936001600160e01b0361288a8195613b92565b1690612821565b92613b92565b1690612834565b906128a882610d1b565b6128b5604051918261075d565b828152601f196128c58294610d1b565b019060005b8281106128d657505050565b8060606020809385010152016128ca565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b91908110156129265760061b0190565b6128e7565b35610bcf8161021b565b91908110156129265760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618136030182121561022c570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561022c570180359067ffffffffffffffff821161022c5760200191813603831361022c57565b92919267ffffffffffffffff821161070457604051916129f0601f8201601f19166020018461075d565b82948184528183011161022c578281602093846000960137010152565b9061023c604051612a1d81610741565b925463ffffffff8082168552602082811c821690860152604082811c61ffff1690860152605082901c81166060860152607082901c16608085015260901c60ff16151560a0840152565b80518210156129265760209160051b010190565b909291612ac8612a9f8367ffffffffffffffff166000526009602052604060002090565b5460081b7fffffffff000000000000000000000000000000000000000000000000000000001690565b90612ad28161289e565b9560005b828110612ae7575050505050505090565b612afa612af5828489612916565b61292b565b8388612b14612b0a858484612935565b6040810190612975565b905060208111612c2a575b508392612b4e612b486121b9612b3e600198612b8997612b8497612935565b6020810190612975565b89613c0a565b612b6c8967ffffffffffffffff16600052600a602052604060002090565b906001600160a01b0316600052602052604060002090565b612a0d565b60a081015115612bee57612bd2612baa6060612bc493015163ffffffff1690565b6040805163ffffffff909216602083015290928391820190565b03601f19810183528261075d565b612bdc828b612a67565b52612be7818a612a67565b5001612ad6565b50612bc4612bd2612c2584612c178a67ffffffffffffffff166000526009602052604060002090565b015460101c63ffffffff1690565b612baa565b915050612c6261191d612c5584612b6c8b67ffffffffffffffff16600052600a602052604060002090565b5460701c63ffffffff1690565b10612c6f57838838612b1f565b7f36f536ca000000000000000000000000000000000000000000000000000000006000526001600160a01b031660045260246000fd5b60405190612cb2826106e8565b60006040838281528260208201520152565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561022c570180359067ffffffffffffffff821161022c57602001918160061b3603831361022c57565b35906001600160e01b038216820361022c57565b60408136031261022c57612d5b602060405192612d4884610725565b8035612d538161021b565b845201612d18565b602082015290565b60408136031261022c57612d5b602060405192612d7f84610725565b612d53816102ab565b90612d916140c6565b60005b8251811015612ee15780612daa60019285612a67565b517f32a4ba3fa3351b11ad555d4c8ec70a744e8705607077a946807030d64b6ab1a360a06001600160a01b038351169260608101936001600160a01b0380865116957fffff000000000000000000000000000000000000000000000000000000000000612e4860208601947fffffffffffffffffffff00000000000000000000000000000000000000000000865116604088019a848c5116926158b9565b977fffffffffffffffffffff000000000000000000000000000000000000000000006080870195612eb4875115158c600052600460205260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b8560405198511688525116602087015251166040850152511660608301525115156080820152a201612d94565b509050565b60405190612ef382610725565b60006020838281520152565b90604051612f0c81610725565b91546001600160e01b038116835260e01c6020830152565b9061023c6130846001612f3561078f565b946130236130198254612f51612f4b8260ff1690565b15158a52565b61ffff600882901c1660208a015263ffffffff601882901c1660408a015263ffffffff603882901c1660608a015263ffffffff605882901c1660808a015260ff607882901c1660a08a015260ff608082901c1660c08a015261ffff608882901c1660e08a015263ffffffff609882901c166101008a015261ffff60b882901c166101208a015261ffff60c882901c166101408a01527fffffffff00000000000000000000000000000000000000000000000000000000600882901b166101608a015260f81c90565b1515610180880152565b015461ffff81166101a086015263ffffffff601082901c166101c086015263ffffffff603082901c166101e086015267ffffffffffffffff605082901c1661020086015263ffffffff609082901c1661022086015260b01c63ffffffff1690565b63ffffffff16610240840152565b9061309b6140c6565b6000915b805183101561328d576130b28382612a67565b51906130c6825167ffffffffffffffff1690565b946020600093019367ffffffffffffffff8716935b85518051821015613278576130f282602092612a67565b510151613103611855838951612a67565b8151602083015163ffffffff90811691168181101561323f575050608082015163ffffffff16602081106131fe575090867f94967ae9ea7729ad4f54021c1981765d2b1d954f7c92fbec340aa0a54f46b8b56001600160a01b038461318d858f60019998612b6c6131889267ffffffffffffffff16600052600a602052604060002090565b614104565b6131f560405192839216958291909160a08060c083019463ffffffff815116845263ffffffff602082015116602085015261ffff604082015116604085015263ffffffff606082015116606085015263ffffffff608082015116608085015201511515910152565b0390a3016130db565b7f24ecdc02000000000000000000000000000000000000000000000000000000006000526001600160a01b0390911660045263ffffffff1660245260446000fd5b7f0b4f67a20000000000000000000000000000000000000000000000000000000060005263ffffffff9081166004521660245260446000fd5b5050955092509260019150019192909261309f565b50905060005b815181101561333d57806132bb6132ac60019385612a67565b515167ffffffffffffffff1690565b67ffffffffffffffff6001600160a01b036132ea60206132db8689612a67565b5101516001600160a01b031690565b600061330e82612b6c8767ffffffffffffffff16600052600a602052604060002090565b551691167f4de5b1bcbca6018c11303a2c3f4a4b4f22a1c741d8c4ba430d246ac06c5ddf8b600080a301613293565b5050565b60208183031261022c5780359067ffffffffffffffff821161022c570181601f8201121561022c5780359061337582610d1b565b92613383604051948561075d565b8284526020606081860194028301019181831161022c57602001925b8284106133ad575050505090565b60608483031261022c5760206060916040516133c8816106e8565b86356133d38161021b565b81526133e0838801612d18565b838201526133f060408801611284565b604082015281520193019261339f565b9060405161340d816106e8565b604060ff8294546001600160a01b0381168452818160a01c16602085015260a81c161515910152565b9061343f6140c6565b60005b8251811015612ee1576134558184612a67565b5160206134656132ac8487612a67565b9101519067ffffffffffffffff811680158015613681575b8015613653575b80156135a6575b61356e579161353482600195946134e46134bf612a9f6135399767ffffffffffffffff166000526009602052604060002090565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b61353f577f71e9302ab4e912a9678ae7f5a8542856706806f2817e1bf2a20b171e265cb4ad604051806135178782611065565b0390a267ffffffffffffffff166000526009602052604060002090565b614433565b01613442565b7f2431cc0363f2f66b21782c7e3d54dd9085927981a21bd0cc6be45a51b19689e3604051806135178782611065565b7fc35aa79d0000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff821660045260246000fd5b507fffffffff000000000000000000000000000000000000000000000000000000006135f66101608501517fffffffff000000000000000000000000000000000000000000000000000000001690565b167f2812d52c000000000000000000000000000000000000000000000000000000008114159081613628575b5061348b565b7f1e10bdc4000000000000000000000000000000000000000000000000000000009150141538613622565b506101e083015163ffffffff1663ffffffff61367961191d606087015163ffffffff1690565b911611613484565b5063ffffffff6136996101e085015163ffffffff1690565b161561347d565b6136a86140c6565b60208101519160005b835181101561373557806136ca610b3e60019387612a67565b6136ec6136e76001600160a01b0383165b6001600160a01b031690565b615bec565b6136f8575b50016136b1565b6040516001600160a01b039190911681527fc3803387881faad271c47728894e3e36fac830ffc8602ca6fc07733cbda7758090602090a1386136f1565b5091505160005b815181101561333d57613752610b3e8284612a67565b906001600160a01b038216156137c8577feb1b9b92e50b7f88f9ff25d56765095ac6e91540eee214906f4036a908ffbdef6137bf836137a461379f6136db6001976001600160a01b031690565b615b73565b506040516001600160a01b0390911681529081906020820190565b0390a10161373c565b7f8579befe0000000000000000000000000000000000000000000000000000000060005260046000fd5b6137fa6140c6565b60005b815181101561333d57806001600160a01b0361381b60019385612a67565b5151167fbb77da6f7210cdd16904228a9360133d1d7dfff99b1bc75f128da5b53e28f97d6138b867ffffffffffffffff60206138578689612a67565b51015116836000526008602052604060002067ffffffffffffffff82167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008254161790556040519182918291909167ffffffffffffffff6020820193169052565b0390a2016137fd565b919082039182116127fc57565b6138d6612ee6565b506138fc6138f7826001600160a01b03166000526006602052604060002090565b612eff565b602081019161391b61391561191d855163ffffffff1690565b426138c1565b63ffffffff7f000000000000000000000000000000000000000000000000000000000001518016116139c35761187c613967916001600160a01b03166000526007602052604060002090565b6139776118916040830151151590565b80156139c9575b6139c35761398b90614b01565b9163ffffffff6139b361191d6139a8602087015163ffffffff1690565b935163ffffffff1690565b9116106139be575090565b905090565b50905090565b506001600160a01b036139e382516001600160a01b031690565b161561397e565b919082018092116127fc57565b9061ffff8091169116029061ffff82169182036127fc57565b63ffffffff60209116019063ffffffff82116127fc57565b9063ffffffff8091169116019063ffffffff82116127fc57565b90613a4b6140c6565b60005b8251811015612ee15780613a6460019285612a67565b517fe6a7a17d710bf0b2cd05e5397dc6f97a5da4ee79e31e234bf5f965ee2bd9a5bf613b8960206001600160a01b038451169301518360005260076020526040600020613ae96001600160a01b0383511682906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b602082015181547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff74ff000000000000000000000000000000000000000075ff0000000000000000000000000000000000000000006040870151151560a81b169360a01b169116171790556040519182918291909160408060608301946001600160a01b03815116845260ff602082015116602085015201511515910152565b0390a201613a4e565b613b9b816138ce565b9063ffffffff602083015116158015613bf8575b613bc15750516001600160e01b031690565b6001600160a01b03907f06439c6b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b506001600160e01b0382511615613baf565b907fffffffff0000000000000000000000000000000000000000000000000000000082167f2812d52c000000000000000000000000000000000000000000000000000000008114613cd8577f1e10bdc40000000000000000000000000000000000000000000000000000000014613ccb577f2ee82075000000000000000000000000000000000000000000000000000000006000527fffffffff00000000000000000000000000000000000000000000000000000000821660045260246000fd5b61023c9150600190615378565b5090506020815103613d1157613cf76020825183010160208301615369565b6001600160a01b038111908115613d4b575b50613d115750565b613d47906040519182917f8d666f6000000000000000000000000000000000000000000000000000000000835260048301615358565b0390fd5b61040091501038613d09565b917fffffffff0000000000000000000000000000000000000000000000000000000083167f2812d52c000000000000000000000000000000000000000000000000000000008114613e25577f1e10bdc40000000000000000000000000000000000000000000000000000000014613e18577f2ee82075000000000000000000000000000000000000000000000000000000006000527fffffffff00000000000000000000000000000000000000000000000000000000831660045260246000fd5b61023c9250151590615378565b505090506020815103613d1157613cf76020825183010160208301615369565b33600052600360205260406000205415613e5b57565b7fd86ad9cf000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b611273613eb09196949395929667ffffffffffffffff166000526009602052604060002090565b946101608601947f2812d52c000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000613f2388517fffffffff000000000000000000000000000000000000000000000000000000001690565b16146140815750507f1e10bdc4000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000613f9786517fffffffff000000000000000000000000000000000000000000000000000000001690565b161461401857611a3b613fca85517fffffffff000000000000000000000000000000000000000000000000000000001690565b7f2ee82075000000000000000000000000000000000000000000000000000000006000527fffffffff0000000000000000000000000000000000000000000000000000000016600452602490565b61406c93506121b960606140568763ffffffff61404d6101806140458661407a9b9d015163ffffffff1690565b930151151590565b91168587615754565b0151604051958691602083019190602083019252565b03601f19810186528561075d565b9160019190565b945094916140a7916140a161191d6101e0610bcf96015163ffffffff1690565b916154d5565b936140be60206140b6876155f6565b960151151590565b9336916129c6565b6001600160a01b036001541633036140da57565b7f2b5c74de0000000000000000000000000000000000000000000000000000000060005260046000fd5b815181546020808501516040808701517fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000090941663ffffffff958616179190921b67ffffffff00000000161791901b69ffff000000000000000016178255606083015161023c936142149260a0926141b6911685547fffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffff1660509190911b6dffffffff0000000000000000000016178555565b61420d6141ca608083015163ffffffff1690565b85547fffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffff1660709190911b71ffffffff000000000000000000000000000016178555565b0151151590565b81547fffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff1690151560901b72ff00000000000000000000000000000000000016179055565b91929092614268828286866158b9565b600052600460205260ff60406000205416156142845750505050565b6040517f097e17ff0000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201529390921660248401527fffffffffffffffffffff0000000000000000000000000000000000000000000090911660448301527fffff000000000000000000000000000000000000000000000000000000000000166064820152608490fd5b604d81116127fc57600a0a90565b60ff1660120160ff81116127fc5760ff169060248211156143c1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82019182116127fc5761437761437d92614318565b90612834565b6001600160e01b038111614397576001600160e01b031690565b7f10cb51d10000000000000000000000000000000000000000000000000000000060005260046000fd5b9060240390602482116127fc576122996143da92614318565b61437d565b9060ff80911691160160ff81116127fc5760ff169060248211156143c1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82019182116127fc5761437761437d92614318565b90614a4d610240600161023c9461447e61444d8651151590565b829060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b6144c4614490602087015161ffff1690565b82547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff1660089190911b62ffff0016178255565b6145106144d8604087015163ffffffff1690565b82547fffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff1660189190911b66ffffffff00000016178255565b614560614524606087015163ffffffff1690565b82547fffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffff1660389190911b6affffffff0000000000000016178255565b6145b4614574608087015163ffffffff1690565b82547fffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffff1660589190911b6effffffff000000000000000000000016178255565b6146066145c560a087015160ff1690565b82547fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff1660789190911b6fff00000000000000000000000000000016178255565b61465961461760c087015160ff1690565b82547fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff1660809190911b70ff0000000000000000000000000000000016178255565b6146af61466b60e087015161ffff1690565b82547fffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffff1660889190911b72ffff000000000000000000000000000000000016178255565b61470c6146c461010087015163ffffffff1690565b82547fffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffff1660989190911b76ffffffff0000000000000000000000000000000000000016178255565b61476961471f61012087015161ffff1690565b82547fffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff1660b89190911b78ffff000000000000000000000000000000000000000000000016178255565b6147c861477c61014087015161ffff1690565b82547fffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff1660c89190911b7affff0000000000000000000000000000000000000000000000000016178255565b6148496147f96101608701517fffffffff000000000000000000000000000000000000000000000000000000001690565b82547fff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff1660089190911c7effffffff00000000000000000000000000000000000000000000000000000016178255565b6148aa61485a610180870151151590565b82547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690151560f81b7fff0000000000000000000000000000000000000000000000000000000000000016178255565b01926148ee6148bf6101a083015161ffff1690565b859061ffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000825416179055565b61493a6149036101c083015163ffffffff1690565b85547fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff1660109190911b65ffffffff000016178555565b61498a61494f6101e083015163ffffffff1690565b85547fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff1660309190911b69ffffffff00000000000016178555565b6149e66149a361020083015167ffffffffffffffff1690565b85547fffffffffffffffffffffffffffff0000000000000000ffffffffffffffffffff1660509190911b71ffffffffffffffff0000000000000000000016178555565b614a426149fb61022083015163ffffffff1690565b85547fffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffff1660909190911b75ffffffff00000000000000000000000000000000000016178555565b015163ffffffff1690565b7fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff79ffffffff0000000000000000000000000000000000000000000083549260b01b169116179055565b519069ffffffffffffffffffff8216820361022c57565b908160a091031261022c57614ac281614a97565b91602082015191604081015191610bcf608060608401519301614a97565b6040513d6000823e3d90fd5b9081602091031261022c5751610bcf81611ba6565b614b09612ee6565b50614b216136db6136db83516001600160a01b031690565b90604051907ffeaf968c00000000000000000000000000000000000000000000000000000000825260a082600481865afa928315614c2957600092600094614c2e575b5060008312614397576020600491604051928380927f313ce5670000000000000000000000000000000000000000000000000000000082525afa928315614c2957610bcf9363ffffffff93614bca93600092614bf3575b506020015160ff165b906143df565b92614be5614bd6610780565b6001600160e01b039095168552565b1663ffffffff166020830152565b614bc4919250614c1a602091823d8411614c22575b614c12818361075d565b810190614aec565b929150614bbb565b503d614c08565b614ae0565b909350614c5491925060a03d60a011614c61575b614c4c818361075d565b810190614aae565b5093925050919238614b64565b503d614c42565b9291949390614c8161191d604086015163ffffffff1690565b808211614f70575050602083015161ffff16808611614f3a5750610160830194614ccb86517fffffffff000000000000000000000000000000000000000000000000000000001690565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f2812d52c000000000000000000000000000000000000000000000000000000008103614d8d5750505082610bcf9492614d5d92614d386101e0614d889997015163ffffffff1690565b9063ffffffff614d556101806140b6606088015163ffffffff1690565b941692615965565b519384925b517fffffffff000000000000000000000000000000000000000000000000000000001690565b613d57565b91949392917f1e10bdc40000000000000000000000000000000000000000000000000000000003614eeb575090829163ffffffff614de3610180614ddb6060614deb98015163ffffffff1690565b950151151590565b931691615754565b90151580614edf575b614eb5576080810180515160408111614e83575060208201519051519067ffffffffffffffff9081169081831c16614e4957505091610bcf91614e4161191d614d88955163ffffffff1690565b938492614d62565b7fafa933080000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff1660045260245260446000fd5b7f8a0d71f700000000000000000000000000000000000000000000000000000000600052600452604060245260446000fd5b7f5bed51920000000000000000000000000000000000000000000000000000000060005260046000fd5b50606081015115614df4565b7f2ee82075000000000000000000000000000000000000000000000000000000006000527fffffffff000000000000000000000000000000000000000000000000000000001660045260246000fd5b7fd88dddd600000000000000000000000000000000000000000000000000000000600052600486905261ffff1660245260446000fd5b7f869337890000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b67ffffffffffffffff8116600052600560205260406000209160405192614fc684610725565b546001600160e01b038116845260e01c9182602085015263ffffffff82169283615000575b50505050610bcf90516001600160e01b031690565b63ffffffff1642908103939084116127fc57831161501e5780614feb565b7ff08bcb3e0000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff1660045263ffffffff1660245260445260646000fd5b60408136031261022c5760206040519161507a83610725565b80356150858161021b565b83520135602082015290565b9694919695929390956000946000986000986000965b8088106150bb575050505050505050929190565b9091929394959697999a6150d86150d38a848b612916565b615061565b9a615126612b848d61510f6151018967ffffffffffffffff16600052600a602052604060002090565b91516001600160a01b031690565b6001600160a01b0316600052602052604060002090565b9161513761189160a0850151151590565b6152805760009c60408401906151526123f5835161ffff1690565b615208575b5050606083015163ffffffff1661516d91613a28565b9c60808301516151809063ffffffff1690565b61518991613a28565b9b82516151999063ffffffff1690565b63ffffffff166151a8906127da565b600193908083106151fc57506124ae61191d60206151cb93015163ffffffff1690565b8082116151eb57506151dc916139ea565b985b01969594939291906150a7565b90506151f6916139ea565b986151de565b9150506151f6916139ea565b90612299615271939f61525f6152689460208f8e6123f595506001600160a01b0361523a85516001600160a01b031690565b91166001600160a01b03821614615279576152559150613b92565b915b0151906159cd565b925161ffff1690565b620186a0900490565b9b3880615157565b5091615257565b999b50600191506152a7846152a16152ad9361529b8b6127da565b906139ea565b9b613a28565b9c613a10565b9a6151de565b91939093806101e00193846101e0116127fc5761012081029080820461012014901517156127fc576101e09101018093116127fc576123f5610140615349610bcf966dffffffffffffffffffffffffffff6123826153346153216153539a63ffffffff6122999a16906139ea565b6122996123f56101208c015161ffff1690565b61529b61191d6101008b015163ffffffff1690565b93015161ffff1690565b612801565b906020610bcf9281815201906102f1565b9081602091031261022c575190565b9060208251036153e0576153895750565b60208180518101031261022c576020810151156153a35750565b613d47906040519182917fff828faa00000000000000000000000000000000000000000000000000000000835260206004840181815201906102f1565b6040517fff828faa0000000000000000000000000000000000000000000000000000000081526020600482015280613d4760248201856102f1565b919091357fffffffff000000000000000000000000000000000000000000000000000000008116926004811061544f575050565b7fffffffff00000000000000000000000000000000000000000000000000000000929350829060040360031b1b161690565b909291928360041161022c57831161022c57600401916003190190565b9060041161022c5790600490565b9081604091031261022c576020604051916154c683610725565b805183520151612d5b81610d33565b916154de612ee6565b5081156155d4575061551f6121b982806155197fffffffff00000000000000000000000000000000000000000000000000000000958761541b565b95615481565b91167f181dcf1000000000000000000000000000000000000000000000000000000000810361555c575080602080610bcf935183010191016154ac565b7f97a657c900000000000000000000000000000000000000000000000000000000146155ac577f5247fdce0000000000000000000000000000000000000000000000000000000060005260046000fd5b806020806155bf93518301019101615369565b6155c7610780565b9081526000602082015290565b91505067ffffffffffffffff6155e8610780565b911681526000602082015290565b6020604051917f181dcf1000000000000000000000000000000000000000000000000000000000828401528051602484015201511515604482015260448152610bcf60648261075d565b6040519061564d82610709565b60606080836000815260006020820152600060408201526000838201520152565b60208183031261022c5780359067ffffffffffffffff821161022c57019060a08282031261022c57604051916156a383610709565b6156ac81611284565b83526156ba602082016102ab565b602084015260408101356156cd81610d33565b60408401526060810135606084015260808101359067ffffffffffffffff821161022c57019080601f8301121561022c57813561570981610d1b565b92615717604051948561075d565b81845260208085019260051b82010192831161022c57602001905b82821061574457505050608082015290565b8135815260209182019101615732565b61575c615640565b50811561588f577f1f3b3aba000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000006157b86157b2858561549e565b9061541b565b160361586557816157d4926157cc92615481565b81019061566e565b918061584f575b6158255763ffffffff6157f2835163ffffffff1690565b16116157fb5790565b7f2e2b0c290000000000000000000000000000000000000000000000000000000060005260046000fd5b7fee433e990000000000000000000000000000000000000000000000000000000060005260046000fd5b506158606118916040840151151590565b6157db565b7f5247fdce0000000000000000000000000000000000000000000000000000000060005260046000fd5b7fb00b53dc0000000000000000000000000000000000000000000000000000000060005260046000fd5b604080516001600160a01b039283166020820190815292909316908301527fffffffffffffffffffff0000000000000000000000000000000000000000000090921660608201527fffff0000000000000000000000000000000000000000000000000000000000009092166080830152906159378160a08101612bc4565b51902090565b6001600160a01b03610bcf9116600b615a7a565b6001600160a01b03610bcf9116600b615bae565b9063ffffffff6159829395949561597a612ee6565b5016916154d5565b918251116159a35780615997575b6158255790565b50602081015115615990565b7f4c4fc93a0000000000000000000000000000000000000000000000000000000060005260046000fd5b670de0b6b3a7640000916001600160e01b036159e99216612821565b0490565b80548210156129265760005260206000200190600090565b91615a1f918354906000199060031b92831b921b19161790565b9055565b80548015615a4b576000190190615a3a82826159ed565b60001982549160031b1b1916905555565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001810191806000528260205260406000205492831515600014615b2c5760001984018481116127fc5783549360001985019485116127fc576000958583615add97615ace9503615ae3575b505050615a23565b90600052602052604060002090565b55600190565b615b13615b0d91615b04615afa615b2395886159ed565b90549060031b1c90565b928391876159ed565b90615a05565b8590600052602052604060002090565b55388080615ac6565b50505050600090565b805490680100000000000000008210156107045781615b5c916001615a1f940181556159ed565b81939154906000199060031b92831b921b19161790565b600081815260036020526040902054615ba857615b91816002615b35565b600254906000526003602052604060002055600190565b50600090565b6000828152600182016020526040902054615be55780615bd083600193615b35565b80549260005201602052604060002055600190565b5050600090565b600081815260036020526040902054908115615be5576000198201908282116127fc576002549260001984019384116127fc578383615add9460009603615c4c575b505050615c3b6002615a23565b600390600052602052604060002090565b615c3b615b0d91615c64615afa615c6e9560026159ed565b92839160026159ed565b55388080615c2e56fea164736f6c634300081a000a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000ad78ebc5ac6200000000000000000000000000000e4ab69c077896252fafbd49efd26b5d171a3241000000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000419f616ca684b44cb5d9700a8158741e82be774000000000000000000000000000000000000000000000000000000000000000020000000000000000000000004200000000000000000000000000000000000006000000000000000000000000e4ab69c077896252fafbd49efd26b5d171a32410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000e4ab69c077896252fafbd49efd26b5d171a324100000000000000000000000000000000000000000000000000c7d713b49da000000000000000000000000000042000000000000000000000000000000000000060000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : staticConfig (tuple):
Arg [1] : maxFeeJuelsPerMsg (uint96): 200000000000000000000
Arg [2] : linkToken (address): 0xE4aB69C077896252FAFBD49EFD26B5D171A32410
Arg [3] : tokenPriceStalenessThreshold (uint32): 86400
Arg [1] : priceUpdaters (address[]): 0x419f616cA684B44cB5d9700a8158741e82bE7740
Arg [2] : feeTokens (address[]): 0x4200000000000000000000000000000000000006,0xE4aB69C077896252FAFBD49EFD26B5D171A32410
Arg [3] : tokenPriceFeeds (tuple[]):
Arg [4] : tokenTransferFeeConfigArgs (tuple[]):
Arg [5] : premiumMultiplierWeiPerEthArgs (tuple[]):
Arg [1] : token (address): 0xE4aB69C077896252FAFBD49EFD26B5D171A32410
Arg [2] : premiumMultiplierWeiPerEth (uint64): 900000000000000000
Arg [1] : token (address): 0x4200000000000000000000000000000000000006
Arg [2] : premiumMultiplierWeiPerEth (uint64): 1000000000000000000
Arg [6] : destChainConfigArgs (tuple[]):
-----Encoded View---------------
22 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000ad78ebc5ac6200000
Arg [1] : 000000000000000000000000e4ab69c077896252fafbd49efd26b5d171a32410
Arg [2] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [5] : 00000000000000000000000000000000000000000000000000000000000001c0
Arg [6] : 00000000000000000000000000000000000000000000000000000000000001e0
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000200
Arg [8] : 00000000000000000000000000000000000000000000000000000000000002a0
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [10] : 000000000000000000000000419f616ca684b44cb5d9700a8158741e82be7740
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [12] : 0000000000000000000000004200000000000000000000000000000000000006
Arg [13] : 000000000000000000000000e4ab69c077896252fafbd49efd26b5d171a32410
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [16] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [17] : 000000000000000000000000e4ab69c077896252fafbd49efd26b5d171a32410
Arg [18] : 0000000000000000000000000000000000000000000000000c7d713b49da0000
Arg [19] : 0000000000000000000000004200000000000000000000000000000000000006
Arg [20] : 0000000000000000000000000000000000000000000000000de0b6b3a7640000
Arg [21] : 0000000000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.

