From 26e5812ea56a3c359c6716fdd0d89d83002398e8 Mon Sep 17 00:00:00 2001 From: "app-token-issuer-infra-releng[bot]" <120227048+app-token-issuer-infra-releng[bot]@users.noreply.github.com> Date: Fri, 27 Dec 2024 19:05:22 +0000 Subject: [PATCH] Update gethwrappers --- core/gethwrappers/ccip/generated/fee_quoter/fee_quoter.go | 2 +- .../generated-wrapper-dependency-versions-do-not-edit.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/gethwrappers/ccip/generated/fee_quoter/fee_quoter.go b/core/gethwrappers/ccip/generated/fee_quoter/fee_quoter.go index cb696b08cc4..34abcc12200 100644 --- a/core/gethwrappers/ccip/generated/fee_quoter/fee_quoter.go +++ b/core/gethwrappers/ccip/generated/fee_quoter/fee_quoter.go @@ -157,7 +157,7 @@ type KeystoneFeedsPermissionHandlerPermission struct { var FeeQuoterMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"uint96\",\"name\":\"maxFeeJuelsPerMsg\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"linkToken\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"tokenPriceStalenessThreshold\",\"type\":\"uint32\"}],\"internalType\":\"structFeeQuoter.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\":\"structFeeQuoter.TokenPriceFeedConfig\",\"name\":\"feedConfig\",\"type\":\"tuple\"}],\"internalType\":\"structFeeQuoter.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\":\"structFeeQuoter.TokenTransferFeeConfig\",\"name\":\"tokenTransferFeeConfig\",\"type\":\"tuple\"}],\"internalType\":\"structFeeQuoter.TokenTransferFeeConfigSingleTokenArgs[]\",\"name\":\"tokenTransferFeeConfigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structFeeQuoter.TokenTransferFeeConfigArgs[]\",\"name\":\"tokenTransferFeeConfigArgs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"premiumMultiplierWeiPerEth\",\"type\":\"uint64\"}],\"internalType\":\"structFeeQuoter.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\":\"uint16\",\"name\":\"destGasPerPayloadByte\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destDataAvailabilityOverheadGas\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerDataAvailabilityByte\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"destDataAvailabilityMultiplierBps\",\"type\":\"uint16\"},{\"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\":\"networkFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"gasPriceStalenessThreshold\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"enforceOutOfOrder\",\"type\":\"bool\"},{\"internalType\":\"bytes4\",\"name\":\"chainFamilySelector\",\"type\":\"bytes4\"}],\"internalType\":\"structFeeQuoter.DestChainConfig\",\"name\":\"destChainConfig\",\"type\":\"tuple\"}],\"internalType\":\"structFeeQuoter.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\":[],\"name\":\"FirstSolExtraArgsAddressCannotBeWritable\",\"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\":\"InvalidExtraArgsTag\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minFeeUSDCents\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeeUSDCents\",\"type\":\"uint256\"}],\"name\":\"InvalidFeeRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidStaticConfig\",\"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\":[],\"name\":\"SolExtraArgsMustBeProvided\",\"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\":\"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\":false,\"internalType\":\"bytes4\",\"name\":\"chainFamilySelector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isAdded\",\"type\":\"bool\"}],\"name\":\"ChainFamilySelectorModified\",\"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\":\"uint16\",\"name\":\"destGasPerPayloadByte\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destDataAvailabilityOverheadGas\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerDataAvailabilityByte\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"destDataAvailabilityMultiplierBps\",\"type\":\"uint16\"},{\"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\":\"networkFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"gasPriceStalenessThreshold\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"enforceOutOfOrder\",\"type\":\"bool\"},{\"internalType\":\"bytes4\",\"name\":\"chainFamilySelector\",\"type\":\"bytes4\"}],\"indexed\":false,\"internalType\":\"structFeeQuoter.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\":\"uint16\",\"name\":\"destGasPerPayloadByte\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destDataAvailabilityOverheadGas\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerDataAvailabilityByte\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"destDataAvailabilityMultiplierBps\",\"type\":\"uint16\"},{\"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\":\"networkFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"gasPriceStalenessThreshold\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"enforceOutOfOrder\",\"type\":\"bool\"},{\"internalType\":\"bytes4\",\"name\":\"chainFamilySelector\",\"type\":\"bytes4\"}],\"indexed\":false,\"internalType\":\"structFeeQuoter.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\":\"structFeeQuoter.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\":\"structKeystoneFeedsPermissionHandler.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\":\"structFeeQuoter.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\":\"structAuthorizedCallers.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\":\"uint16\",\"name\":\"destGasPerPayloadByte\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destDataAvailabilityOverheadGas\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerDataAvailabilityByte\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"destDataAvailabilityMultiplierBps\",\"type\":\"uint16\"},{\"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\":\"networkFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"gasPriceStalenessThreshold\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"enforceOutOfOrder\",\"type\":\"bool\"},{\"internalType\":\"bytes4\",\"name\":\"chainFamilySelector\",\"type\":\"bytes4\"}],\"internalType\":\"structFeeQuoter.DestChainConfig\",\"name\":\"destChainConfig\",\"type\":\"tuple\"}],\"internalType\":\"structFeeQuoter.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\":\"structFeeQuoter.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\":\"structFeeQuoter.TokenTransferFeeConfig\",\"name\":\"tokenTransferFeeConfig\",\"type\":\"tuple\"}],\"internalType\":\"structFeeQuoter.TokenTransferFeeConfigSingleTokenArgs[]\",\"name\":\"tokenTransferFeeConfigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structFeeQuoter.TokenTransferFeeConfigArgs[]\",\"name\":\"tokenTransferFeeConfigArgs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"structFeeQuoter.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\":\"uint16\",\"name\":\"destGasPerPayloadByte\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destDataAvailabilityOverheadGas\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerDataAvailabilityByte\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"destDataAvailabilityMultiplierBps\",\"type\":\"uint16\"},{\"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\":\"networkFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"gasPriceStalenessThreshold\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"enforceOutOfOrder\",\"type\":\"bool\"},{\"internalType\":\"bytes4\",\"name\":\"chainFamilySelector\",\"type\":\"bytes4\"}],\"internalType\":\"structFeeQuoter.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\":\"structInternal.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\":\"structFeeQuoter.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\":\"structInternal.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\":\"structFeeQuoter.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\":\"structInternal.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\":\"structFeeQuoter.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\":\"structClient.EVMTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"}],\"internalType\":\"structClient.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\":\"bytes\",\"name\":\"messageData\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"},{\"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\":\"structInternal.EVM2AnyTokenTransfer[]\",\"name\":\"onRampTokenTransfers\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"sourceTokenAmounts\",\"type\":\"tuple[]\"}],\"name\":\"processMessageArgs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"msgFeeJuels\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isOutOfOrderExecution\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"convertedExtraArgs\",\"type\":\"bytes\"},{\"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\":\"structKeystoneFeedsPermissionHandler.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\":\"structInternal.TokenPriceUpdate[]\",\"name\":\"tokenPriceUpdates\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint224\",\"name\":\"usdPerUnitGas\",\"type\":\"uint224\"}],\"internalType\":\"structInternal.GasPriceUpdate[]\",\"name\":\"gasPriceUpdates\",\"type\":\"tuple[]\"}],\"internalType\":\"structInternal.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\":\"structFeeQuoter.TokenPriceFeedConfig\",\"name\":\"feedConfig\",\"type\":\"tuple\"}],\"internalType\":\"structFeeQuoter.TokenPriceFeedUpdate[]\",\"name\":\"tokenPriceFeedUpdates\",\"type\":\"tuple[]\"}],\"name\":\"updateTokenPriceFeeds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60e060405234610fd8576179bb803803806100198161124a565b9283398101908082036101208112610fd857606013610fd85761003a61120c565b81516001600160601b0381168103610fd857815261005a6020830161126f565b906020810191825261006e60408401611283565b6040820190815260608401516001600160401b038111610fd857856100949186016112ab565b60808501519094906001600160401b038111610fd857866100b69183016112ab565b60a08201519096906001600160401b038111610fd85782019181601f84011215610fd85782516100ed6100e882611294565b61124a565b9360208086848152019260071b82010190848211610fd857602001915b8183106111915750505060c08101516001600160401b038111610fd85781019782601f8a011215610fd8578851986101446100e88b611294565b996020808c838152019160051b83010191858311610fd85760208101915b83831061102f575050505060e08201516001600160401b038111610fd85782019183601f84011215610fd857825161019c6100e882611294565b9360208086848152019260061b82010190868211610fd857602001915b818310610ff357505050610100810151906001600160401b038211610fd8570183601f82011215610fd8578051906101f36100e883611294565b946020610240818886815201940283010191818311610fd857602001925b828410610e3c57505050503315610e2b57600180546001600160a01b031916331790556020986102408a61124a565b9760008952600036813761025261122b565b998a52888b8b015260005b89518110156102c4576001906001600160a01b0361027b828d611336565b51168d6102878261162b565b610294575b50500161025d565b7fc3803387881faad271c47728894e3e36fac830ffc8602ca6fc07733cbda7758091604051908152a1388d61028c565b508a985089519660005b885181101561033f576001600160a01b036102e9828b611336565b511690811561032e577feb1b9b92e50b7f88f9ff25d56765095ac6e91540eee214906f4036a908ffbdef8c836103206001956113ba565b50604051908152a1016102ce565b6342bcdf7f60e11b60005260046000fd5b5089959697508860018060a01b03835116158015610e19575b8015610e0a575b610df95791516001600160a01b031660a05290516001600160601b03166080525163ffffffff1660c0526103916113f9565b5061039a611480565b506103a48461124a565b9360008552600036813760005b8551811015610420576001906103d96001600160a01b036103d2838a611336565b511661157a565b6103e4575b016103b1565b818060a01b036103f48289611336565b51167f1795838dc8ab2ffc5f431a1729a6afa0b587f982f7b2be0b9d7187a1ef547f91600080a26103de565b508694508560005b8451811015610497576001906104506001600160a01b036104498389611336565b5116611502565b61045b575b01610428565b818060a01b0361046b8288611336565b51167fdf1b1bd32a69711488d71554706bb130b1fc63a5fa1a2cd85e8440f84065ba23600080a2610455565b508593508460005b855181101561055957806104b560019288611336565b517fe6a7a17d710bf0b2cd05e5397dc6f97a5da4ee79e31e234bf5f965ee2bd9a5bf606087858060a01b03845116930151836000526007895260406000209060ff878060a01b038251169283898060a01b03198254161781558b8301908151604082549501948460a81b8651151560a81b16918560a01b9060a01b169061ffff60a01b19161717905560405193845251168a8301525115156040820152a20161049f565b50828460005b8451811015610aa4576105728186611336565b51836001600160401b036105868489611336565b5151169101519080158015610a91575b8015610a73575b610a5f579081600193926000526009865263ffffffff60e01b846040600020015460381b161560001461091457807f525e3d4e0c31cef19cf9426af8d2c0ddd2d576359ca26bed92aac5fadda462656040518061070d868291909161020061022082019380511515835261ffff602082015116602084015263ffffffff604082015116604084015263ffffffff606082015116606084015263ffffffff608082015116608084015261ffff60a08201511660a084015263ffffffff60c08201511660c084015261ffff60e08201511660e084015261ffff6101008201511661010084015261ffff6101208201511661012084015263ffffffff6101408201511661014084015263ffffffff6101608201511661016084015260018060401b036101808201511661018084015263ffffffff6101a0820151166101a084015263ffffffff6101c0820151166101c08401526101e081015115156101e08401528163ffffffff60e01b91015116910152565b0390a25b600052600985528260406000208251151581549062ffff008986015160081b169166ffffffff000000604087015160181b166affffffff00000000000000606088015160381b16906effffffff0000000000000000000000608089015160581b169361ffff60781b60a08a015160781b169163ffffffff60881b60c08b015160881b169061ffff60a81b60e08c015160a81b169361ffff60b81b6101008d015160b81b16968c61012061ffff60c81b91015160c81b16988d61014063ffffffff60d81b91015160d81b169a63ffffffff60d81b199861ffff60c81b199761ffff60b81b199661ffff60a81b199563ffffffff60881b199461ffff60781b19936effffffff0000000000000000000000199260ff6affffffff000000000000001992169066ffffffffffffff1916171617161716171617161716171617161717178155019063ffffffff80610160830151161663ffffffff198354161782556101808101519082546fffffffff0000000000000000000000006101a083015160601b169063ffffffff60801b6101c084015160801b16916101e0840151151560a01b9363ffffffff60a81b9061020063ffffffff60a81b91015160381c16169463ffffffff60a81b199260ff60a01b19916401000000008b60601b03908d1b16906401000000008b60a01b03191617161716179060ff60a01b16171790550161055f565b807f283b699f411baff8f1c29fe49f32a828c8151596244b8e7e4c164edd6569a83560405180610a57868291909161020061022082019380511515835261ffff602082015116602084015263ffffffff604082015116604084015263ffffffff606082015116606084015263ffffffff608082015116608084015261ffff60a08201511660a084015263ffffffff60c08201511660c084015261ffff60e08201511660e084015261ffff6101008201511661010084015261ffff6101208201511661012084015263ffffffff6101408201511661014084015263ffffffff6101608201511661016084015260018060401b036101808201511661018084015263ffffffff6101a0820151166101a084015263ffffffff6101c0820151166101c08401526101e081015115156101e08401528163ffffffff60e01b91015116910152565b0390a2610711565b63c35aa79d60e01b60005260045260246000fd5b5063ffffffff6101608301511663ffffffff6060840151161061059d565b5063ffffffff6101608301511615610596565b508260005b8151811015610b29576001906001600160a01b03610ac78285611336565b5151167fbb77da6f7210cdd16904228a9360133d1d7dfff99b1bc75f128da5b53e28f97d86848060401b0381610afd8689611336565b510151168360005260088252604060002081878060401b0319825416179055604051908152a201610aa9565b50506001610b368361124a565b9160008352600091610df4575b81925b8151841015610d3257610b598483611336565b5180516001600160401b0316929086019190845b8784518051831015610d215782610b8391611336565b51015184516001600160a01b0390610b9c908490611336565b5151169063ffffffff8151168a82019063ffffffff8251169081811015610d0c575050608082019063ffffffff8251168c8110610cf557507f94967ae9ea7729ad4f54021c1981765d2b1d954f7c92fbec340aa0a54f46b8b560c08d8098979563ffffffff600198968f8f9761ffff6040838b879552600a89528181208f808f9160a01b0316825289522091838751169784891685198554161784558482519285549560408b019469ffff0000000000000000865160401b169b60608101986dffffffff000000000000000000008a5160501b169060a08d8860701b905160701b1693019e8f60ff60901b9051151560901b169460ff60901b199267ffffffff000000008a60701b19928c1b169060016401000000009060701b0319161716171617171790556040519a8b5251169089015251166040870152511660608501525116608083015251151560a0820152a301909150610b6d565b6312766e0160e11b8b52600485905260245260448afd5b6305a7b3d160e11b8b52600452602452604489fd5b505050925093600191500192610b46565b905083825b8251811015610db5576001906001600160401b03610d558286611336565b515116828060a01b0384610d698488611336565b5101511690808752600a855260408720848060a01b038316885285528660408120557f4de5b1bcbca6018c11303a2c3f4a4b4f22a1c741d8c4ba430d246ac06c5ddf8b8780a301610d37565b6040516162fb90816116c082396080518181816104e1015261300c015260a0518181816105240152612fb0015260c05181818161054b0152613ec30152f35b610b43565b63d794ef9560e01b60005260046000fd5b5063ffffffff8251161561035f565b5080516001600160601b031615610358565b639b15e16f60e01b60005260046000fd5b8382036102408112610fd857610220610e5361122b565b91610e5d87611313565b8352601f190112610fd8576040519161022083016001600160401b03811184821017610fdd57604052610e9260208701611306565b8352610ea060408701611327565b6020840152610eb160608701611283565b6040840152610ec260808701611283565b6060840152610ed360a08701611283565b6080840152610ee460c08701611327565b60a0840152610ef560e08701611283565b60c0840152610f076101008701611327565b60e0840152610f196101208701611327565b610100840152610f2c6101408701611327565b610120840152610f3f6101608701611283565b610140840152610f526101808701611283565b610160840152610f656101a08701611313565b610180840152610f786101c08701611283565b6101a0840152610f8b6101e08701611283565b6101c0840152610f9e6102008701611306565b6101e0840152610220860151916001600160e01b031983168303610fd8578360209361020061024096015283820152815201930192610211565b600080fd5b634e487b7160e01b600052604160045260246000fd5b604083880312610fd857602060409161100a61122b565b6110138661126f565b8152611020838701611313565b838201528152019201916101b9565b82516001600160401b038111610fd85782016040818903601f190112610fd85761105761122b565b9061106460208201611313565b825260408101516001600160401b038111610fd857602091010188601f82011215610fd85780516110976100e882611294565b91602060e08185858152019302820101908b8211610fd857602001915b8183106110d35750505091816020938480940152815201920191610162565b828c0360e08112610fd85760c06110e861122b565b916110f28661126f565b8352601f190112610fd8576040519160c08301916001600160401b03831184841017610fdd5760e09360209360405261112c848801611283565b815261113a60408801611283565b8482015261114a60608801611327565b604082015261115b60808801611283565b606082015261116c60a08801611283565b608082015261117d60c08801611306565b60a0820152838201528152019201916110b4565b82850360808112610fd85760606111a661122b565b916111b08661126f565b8352601f190112610fd8576111c361120c565b916111d06020860161126f565b835260408501519160ff83168303610fd857836020938460809601526111f860608801611306565b60408201528382015281520192019161010a565b60405190606082016001600160401b03811183821017610fdd57604052565b60408051919082016001600160401b03811183821017610fdd57604052565b6040519190601f01601f191682016001600160401b03811183821017610fdd57604052565b51906001600160a01b0382168203610fd857565b519063ffffffff82168203610fd857565b6001600160401b038111610fdd5760051b60200190565b9080601f83011215610fd85781516112c56100e882611294565b9260208085848152019260051b820101928311610fd857602001905b8282106112ee5750505090565b602080916112fb8461126f565b8152019101906112e1565b51908115158203610fd857565b51906001600160401b0382168203610fd857565b519061ffff82168203610fd857565b805182101561134a5760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b805482101561134a5760005260206000200190600090565b80549068010000000000000000821015610fdd578161139f9160016113b694018155611360565b819391549060031b91821b91600019901b19161790565b9055565b806000526003602052604060002054156000146113f3576113dc816002611378565b600254906000526003602052604060002055600190565b50600090565b630a04b54b60e21b600052600e6020527f111ba3cd680000f1ec0c4b0ae54873944cfb232d3ff40f918c486ec4e15b68a15461147b57611441630a04b54b60e21b600d611378565b600d54630a04b54b60e21b600052600e6020527f111ba3cd680000f1ec0c4b0ae54873944cfb232d3ff40f918c486ec4e15b68a155600190565b600090565b630b537f0760e21b600052600e6020527f08bdb46d000b9e7ae6e4d17d3637a08203bc1056efb5def807ad9dae5ec7d7bf5461147b576114c8630b537f0760e21b600d611378565b600d54630b537f0760e21b600052600e6020527f08bdb46d000b9e7ae6e4d17d3637a08203bc1056efb5def807ad9dae5ec7d7bf55600190565b80600052600c602052604060002054156000146113f35761152481600b611378565b600b5490600052600c602052604060002055600190565b805480156115645760001901906115528282611360565b8154906000199060031b1b1916905555565b634e487b7160e01b600052603160045260246000fd5b6000818152600c6020526040902054801561162457600019810181811161160e57600b5460001981019190821161160e578181036115d4575b5050506115c0600b61153b565b600052600c60205260006040812055600190565b6115f66115e561139f93600b611360565b90549060031b1c928392600b611360565b9055600052600c6020526040600020553880806115b3565b634e487b7160e01b600052601160045260246000fd5b5050600090565b600081815260036020526040902054801561162457600019810181811161160e5760025460001981019190821161160e57808203611685575b505050611671600261153b565b600052600360205260006040812055600190565b6116a761169661139f936002611360565b90549060031b1c9283926002611360565b9055600052600360205260406000205538808061166456fe6080604052600436101561001257600080fd5b60003560e01c806241e5be1461020657806301ffc9a714610201578063061877e3146101fc57806306285c69146101f7578063097a87a1146101f2578063181f5a77146101ed5780632451a627146101e8578063325c868e146101e35780633937306f146101de57806341ed29e7146101d957806345ac924d146101d45780634ab35b0b146101cf578063514e8cff146101ca5780636cb5f3dd146101c55780636def4ce7146101c0578063770e2dc4146101bb57806379ba5097146101b65780637afac322146101b1578063805f2132146101ac57806382b49eb0146101a75780638da5cb5b146101a257806391a2749a1461019d578063a69c64c014610198578063bf78e03f14610193578063cdc73d511461018e578063d02641a014610189578063d63d3af214610184578063d8694ccd1461017f578063f2fde38b1461017a578063fbe3f778146101755763ffdb4b371461017057600080fd5b612c3c565b612b03565b612a04565b6125d8565b61259e565b612522565b61248d565b6123a2565b6122cb565b6121fb565b6121a9565b612017565b611cd6565b611b65565b611a15565b6117b2565b611643565b6112dd565b6111e6565b61117b565b611076565b610eae565b610aef565b610ab5565b610a14565b610947565b610754565b610487565b610414565b6102d2565b610248565b73ffffffffffffffffffffffffffffffffffffffff81160361022957565b600080fd5b6044359061023b8261020b565b565b359061023b8261020b565b346102295760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022957602061029d6004356102888161020b565b602435604435916102988361020b565b612df1565b604051908152f35b35907fffffffff000000000000000000000000000000000000000000000000000000008216820361022957565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610229576004357fffffffff0000000000000000000000000000000000000000000000000000000081168103610229577fffffffff00000000000000000000000000000000000000000000000000000000602091167f805f21320000000000000000000000000000000000000000000000000000000081149081156103ea575b81156103c0575b8115610396575b506040519015158152f35b7f01ffc9a7000000000000000000000000000000000000000000000000000000009150143861038b565b7f181f5a770000000000000000000000000000000000000000000000000000000081149150610384565b7fd113cb6c000000000000000000000000000000000000000000000000000000008114915061037d565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295773ffffffffffffffffffffffffffffffffffffffff6004356104648161020b565b166000526008602052602067ffffffffffffffff60406000205416604051908152f35b346102295760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610229576104be612e3a565b5060606040516104cd81610872565b63ffffffff6bffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169182815273ffffffffffffffffffffffffffffffffffffffff60406020830192827f00000000000000000000000000000000000000000000000000000000000000001684520191837f00000000000000000000000000000000000000000000000000000000000000001683526040519485525116602084015251166040820152f35b9181601f840112156102295782359167ffffffffffffffff8311610229576020838186019501011161022957565b6024359067ffffffffffffffff8216820361022957565b6004359067ffffffffffffffff8216820361022957565b359067ffffffffffffffff8216820361022957565b9181601f840112156102295782359167ffffffffffffffff8311610229576020808501948460051b01011161022957565b9181601f840112156102295782359167ffffffffffffffff8311610229576020808501948460061b01011161022957565b919082519283825260005b8481106106a05750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b80602080928401015182828601015201610661565b9290916106d692845215156020840152608060408401526080830190610656565b906060818303910152815180825260208201916020808360051b8301019401926000915b83831061070957505050505090565b9091929394602080610745837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528951610656565b970193019301919392906106fa565b346102295760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff8111610229576107a3903690600401610583565b906107ac6105b1565b916107b561022e565b9160643560843567ffffffffffffffff8111610229576107d9903690600401610583565b60a49291923567ffffffffffffffff8111610229576107fc9036906004016105f4565b93909260c4359767ffffffffffffffff89116102295761083f9961082761082f9a3690600401610625565b999098612ebe565b90604094929451948594856106b5565b0390f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff82111761088e57604052565b610843565b60a0810190811067ffffffffffffffff82111761088e57604052565b6040810190811067ffffffffffffffff82111761088e57604052565b60c0810190811067ffffffffffffffff82111761088e57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761088e57604052565b6040519061023b6040836108e7565b6040519061023b610220836108e7565b346102295760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295761083f604080519061098881836108e7565b601382527f46656551756f74657220312e362e302d64657600000000000000000000000000602083015251918291602083526020830190610656565b602060408183019282815284518094520192019060005b8181106109e85750505090565b825173ffffffffffffffffffffffffffffffffffffffff168452602093840193909201916001016109db565b346102295760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760405180602060025491828152019060026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace9060005b818110610a9f5761083f85610a93818703826108e7565b604051918291826109c4565b8254845260209093019260019283019201610a7c565b346102295760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022957602060405160248152f35b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff811161022957806004019060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc823603011261022957610b69614522565b610b738280613103565b4263ffffffff1692915060005b818110610d4d57505060240190610b978284613103565b92905060005b838110610ba657005b80610bc5610bc0600193610bba868a613103565b90613186565b6131fb565b7fdd84a3fa9ef9409f550d54d6affec7e9c480c878c6ab27b78912a03e1b371c6e67ffffffffffffffff610d14610cf16020850194610ce3610c2387517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b610c52610c2e610928565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092168252565b63ffffffff8c166020820152610c8d610c73845167ffffffffffffffff1690565b67ffffffffffffffff166000526005602052604060002090565b815160209092015160e01b7fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216919091179055565b5167ffffffffffffffff1690565b93517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9290921682524260208301529190931692a201610b9d565b80610d66610d61600193610bba8980613103565b6131c4565b7f52f50aa6d1a95a4595361ecf953d095f125d442e4673716dede699e049de148a73ffffffffffffffffffffffffffffffffffffffff610e48610cf16020850194610e2e610dd087517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b610ddb610c2e610928565b63ffffffff8d166020820152610c8d610e08845173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff166000526006602052604060002090565b5173ffffffffffffffffffffffffffffffffffffffff1690565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9290921682524260208301529190931692a201610b80565b67ffffffffffffffff811161088e5760051b60200190565b8015150361022957565b359061023b82610e99565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff8111610229573660238201121561022957806004013590610f0982610e81565b90610f1760405192836108e7565b828252602460a06020840194028201019036821161022957602401925b818410610f4657610f4483613220565b005b60a0843603126102295760405190610f5d82610893565b8435610f688161020b565b825260208501357fffffffffffffffffffff00000000000000000000000000000000000000000000811681036102295760208301526040850135907fffff000000000000000000000000000000000000000000000000000000000000821682036102295782602092604060a0950152610fe36060880161023d565b6060820152610ff460808801610ea3565b6080820152815201930192610f34565b602060408183019282815284518094520192019060005b8181106110285750505090565b909192602060408261106b600194885163ffffffff602080927bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8151168552015116910152565b01940192910161101b565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff8111610229576110c59036906004016105f4565b6110ce81610e81565b916110dc60405193846108e7565b8183527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061110983610e81565b0160005b81811061116457505060005b828110156111565760019061113a6111358260051b85016133d2565b613e62565b61114482876133a5565b5261114f81866133a5565b5001611119565b6040518061083f8682611004565b60209061116f6133b9565b8282880101520161110d565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760206111c06004356111bb8161020b565b6141b8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405191168152f35b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295767ffffffffffffffff6112266105c8565b61122e6133b9565b5016600052600560205260406000206040519061124a826108af565b547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116825260e01c6020820152604051809161083f82604081019263ffffffff602080927bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8151168552015116910152565b359061ffff8216820361022957565b63ffffffff81160361022957565b359061023b826112c4565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff811161022957366023820112156102295780600401359061133882610e81565b9061134660405192836108e7565b82825260246102406020840194028201019036821161022957602401925b81841061137457610f4483613416565b8336036102408112610229576102207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051926113b1846108af565b6113ba886105df565b8452011261022957610240916020916113d1610937565b6113dc848901610ea3565b81526113ea604089016112b5565b848201526113fa606089016112d2565b604082015261140b608089016112d2565b606082015261141c60a089016112d2565b608082015261142d60c089016112b5565b60a082015261143e60e089016112d2565b60c082015261145061010089016112b5565b60e082015261146261012089016112b5565b61010082015261147561014089016112b5565b61012082015261148861016089016112d2565b61014082015261149b61018089016112d2565b6101608201526114ae6101a089016105df565b6101808201526114c16101c089016112d2565b6101a08201526114d46101e089016112d2565b6101c08201526114e76102008901610ea3565b6101e08201526114fa61022089016102a5565b61020082015283820152815201930192611364565b61023b909291926102008061022083019561152c84825115159052565b60208181015161ffff169085015260408181015163ffffffff169085015260608181015163ffffffff169085015260808181015163ffffffff169085015260a08181015161ffff169085015260c08181015163ffffffff169085015260e08181015161ffff16908501526101008181015161ffff16908501526101208181015161ffff16908501526101408181015163ffffffff16908501526101608181015163ffffffff16908501526101808181015167ffffffffffffffff16908501526101a08181015163ffffffff16908501526101c08181015163ffffffff16908501526101e08181015115159085015201517fffffffff0000000000000000000000000000000000000000000000000000000016910152565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295761083f6117166117116116836105c8565b6000610200611690610937565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015282610120820152826101408201528261016082015282610180820152826101a0820152826101c0820152826101e0820152015267ffffffffffffffff166000526009602052604060002090565b613606565b6040519182918261150f565b81601f820112156102295780359061173982610e81565b9261174760405194856108e7565b82845260208085019360061b8301019181831161022957602001925b828410611771575050505090565b604084830312610229576020604091825161178b816108af565b611794876105df565b8152828701356117a38161020b565b83820152815201930192611763565b346102295760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff8111610229573660238201121561022957806004013561180c81610e81565b9161181a60405193846108e7565b8183526024602084019260051b820101903682116102295760248101925b828410611869576024358567ffffffffffffffff821161022957611863610f44923690600401611722565b90613782565b833567ffffffffffffffff811161022957820160407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc823603011261022957604051906118b5826108af565b6118c1602482016105df565b8252604481013567ffffffffffffffff811161022957602491010136601f820112156102295780356118f281610e81565b9161190060405193846108e7565b818352602060e081850193028201019036821161022957602001915b81831061193b5750505091816020938480940152815201930192611838565b82360360e081126102295760c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060405192611976846108af565b86356119818161020b565b845201126102295760e09160209160405161199b816108cb565b838701356119a8816112c4565b815260408701356119b8816112c4565b848201526119c8606088016112b5565b604082015260808701356119db816112c4565b606082015260a08701356119ee816112c4565b608082015260c0870135611a0181610e99565b60a08201528382015281520192019161191c565b346102295760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760005473ffffffffffffffffffffffffffffffffffffffff81163303611ad4577fffffffffffffffffffffffff00000000000000000000000000000000000000006001549133828416176001551660005573ffffffffffffffffffffffffffffffffffffffff3391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b7f02b543c60000000000000000000000000000000000000000000000000000000060005260046000fd5b9080601f83011215610229578135611b1581610e81565b92611b2360405194856108e7565b81845260208085019260051b82010192831161022957602001905b828210611b4b5750505090565b602080918335611b5a8161020b565b815201910190611b3e565b346102295760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff811161022957611bb4903690600401611afe565b60243567ffffffffffffffff811161022957611bd4903690600401611afe565b90611bdd614566565b60005b8151811015611c595780611c01611bfc610e2e600194866133a5565b615cd8565b611c0c575b01611be0565b73ffffffffffffffffffffffffffffffffffffffff611c2e610e2e83866133a5565b167f1795838dc8ab2ffc5f431a1729a6afa0b587f982f7b2be0b9d7187a1ef547f91600080a2611c06565b8260005b8151811015610f445780611c7e611c79610e2e600194866133a5565b615cf9565b611c89575b01611c5d565b73ffffffffffffffffffffffffffffffffffffffff611cab610e2e83866133a5565b167fdf1b1bd32a69711488d71554706bb130b1fc63a5fa1a2cd85e8440f84065ba23600080a2611c83565b346102295760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff811161022957611d25903690600401610583565b6024359167ffffffffffffffff831161022957611d7e611d76611d5c611d52611d86963690600401610583565b9490953691612e59565b90604082015190605e604a84015160601c93015191929190565b919033614d04565b810190613a7b565b60005b8151811015610f4457611deb611de6611dc0611da584866133a5565b515173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff166000526007602052604060002090565b613b3c565b611dff611dfb6040830151151590565b1590565b611fc15790611e74611e176020600194015160ff1690565b611e6e611e4d6020611e2986896133a5565b5101517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b90614de3565b611e8f6040611e8384876133a5565b51015163ffffffff1690565b63ffffffff611eba611eb1611eaa610e08611da5888b6133a5565b5460e01c90565b63ffffffff1690565b911610611fbb57611f1d611ed36040611e8385886133a5565b611f0d611ede610928565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff851681529163ffffffff166020830152565b610c8d610e08611da586896133a5565b7f52f50aa6d1a95a4595361ecf953d095f125d442e4673716dede699e049de148a73ffffffffffffffffffffffffffffffffffffffff611f60611da585886133a5565b611fb1611f726040611e83888b6133a5565b60405193849316958390929163ffffffff6020917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff604085019616845216910152565b0390a25b01611d89565b50611fb5565b612013611fd1611da584866133a5565b7f06439c6b0000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff16600452602490565b6000fd5b346102295760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295761083f6120ca6120546105c8565b67ffffffffffffffff6024359161206a8361020b565b600060a060405161207a816108cb565b828152826020820152826040820152826060820152826080820152015216600052600a60205260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b61214661213d604051926120dd846108cb565b5463ffffffff8116845263ffffffff8160201c16602085015261ffff8160401c1660408501526121246121178263ffffffff9060501c1690565b63ffffffff166060860152565b63ffffffff607082901c16608085015260901c60ff1690565b151560a0830152565b6040519182918291909160a08060c083019463ffffffff815116845263ffffffff602082015116602085015261ffff604082015116604085015263ffffffff606082015116606085015263ffffffff608082015116608085015201511515910152565b346102295760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022957602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff81116102295760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc823603011261022957604051612274816108af565b816004013567ffffffffffffffff8111610229576122989060043691850101611afe565b8152602482013567ffffffffffffffff811161022957610f449260046122c19236920101611afe565b6020820152613bd9565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff811161022957366023820112156102295780600401359061232682610e81565b9061233460405192836108e7565b8282526024602083019360061b8201019036821161022957602401925b81841061236157610f4483613d79565b604084360312610229576020604091825161237b816108af565b86356123868161020b565b81526123938388016105df565b83820152815201930192612351565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295773ffffffffffffffffffffffffffffffffffffffff6004356123f28161020b565b6123fa612e3a565b5016600052600760205261083f604060002060ff6040519161241b83610872565b5473ffffffffffffffffffffffffffffffffffffffff81168352818160a01c16602084015260a81c161515604082015260405191829182919091604080606083019473ffffffffffffffffffffffffffffffffffffffff815116845260ff602082015116602085015201511515910152565b346102295760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022957604051806020600b54918281520190600b6000527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99060005b81811061250c5761083f85610a93818703826108e7565b82548452602090930192600192830192016124f5565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760406125626004356111358161020b565b61259c8251809263ffffffff602080927bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8151168552015116910152565bf35b346102295760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022957602060405160128152f35b346102295760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295761260f6105c8565b6024359067ffffffffffffffff821161022957816004019060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8436030112610229576126746117118267ffffffffffffffff166000526009602052604060002090565b91612682611dfb8451151590565b6129cc5760648401906126c6611dfb61269a846133d2565b73ffffffffffffffffffffffffffffffffffffffff166000526001600b01602052604060002054151590565b61297e5760448501936126d98583613103565b949050602487019661270c6126ee8986613fb2565b9050876127056126fe8880613fb2565b3691612e59565b918661510d565b6127186111bb866133d2565b9661273461272e6101c086015163ffffffff1690565b846151cd565b9260008089156129565750509061276291896127596127528a6133d2565b9389613103565b9390928861531a565b9591955b60009861ffff61277c61010089015161ffff1690565b166128ef575b50886128d2896128d28a8f8f986128c461289e6128988f61083f9f6128df9f6101807bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9f6128d79f936dffffffffffffffffffffffffffff61287461288b9561286e8961284b9f61288b9f608461286061287b9a63ffffffff61284b9f85826128518a61284b61284460a061283a612858986128689f612830899161282a60808a015163ffffffff1690565b9b613fb2565b9290501690614003565b93015161ffff1690565b61ffff1690565b90612da5565b9116614003565b911690614003565b950190613fb2565b90615632565b90614003565b9116612da5565b93015167ffffffffffffffff1690565b67ffffffffffffffff1690565b966133d2565b73ffffffffffffffffffffffffffffffffffffffff166000526008602052604060002090565b5467ffffffffffffffff1690565b614003565b911690612db8565b6040519081529081906020820190565b8597929a9950928181999594889d98979361291c89956dffffffffffffffffffffffffffff9060701c1690565b6dffffffffffffffffffffffffffff16916129378b86613fb2565b90506129439387615591565b9a9b9398965091509293979a959a612782565b9150959150612978612973611eb16101a088015163ffffffff1690565b612d5e565b95612766565b61201361298a836133d2565b7f2502348c0000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff16600452602490565b7f99ac52f20000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff821660045260246000fd5b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295773ffffffffffffffffffffffffffffffffffffffff600435612a548161020b565b612a5c614566565b16338114612ace57807fffffffffffffffffffffffff0000000000000000000000000000000000000000600054161760005573ffffffffffffffffffffffffffffffffffffffff600154167fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278600080a3005b7fdad89dca0000000000000000000000000000000000000000000000000000000060005260046000fd5b60ff81160361022957565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff8111610229573660238201121561022957806004013590612b5e82610e81565b90612b6c60405192836108e7565b8282526024602083019360071b8201019036821161022957602401925b818410612b9957610f4483614010565b833603608081126102295760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060405192612bd4846108af565b8735612bdf8161020b565b8452011261022957608091602091604051612bf981610872565b83880135612c068161020b565b81526040880135612c1681612af8565b848201526060880135612c2881610e99565b604082015283820152815201930192612b89565b346102295760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022957600435612c778161020b565b612c7f6105b1565b9067ffffffffffffffff82169182600052600960205260ff6040600020541615612d0157612caf612cd0926141b8565b92600052600960205263ffffffff60016040600020015460801c16906151cd565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152f35b827f99ac52f20000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b90662386f26fc10000820291808304662386f26fc100001490151715612d8057565b612d2f565b90655af3107a4000820291808304655af3107a40001490151715612d8057565b81810292918115918404141715612d8057565b8115612dc2570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b612e30612e2a612e3794937bffffffffffffffffffffffffffffffffffffffffffffffffffffffff612e2381956141b8565b1690612da5565b926141b8565b1690612db8565b90565b60405190612e4782610872565b60006040838281528260208201520152565b92919267ffffffffffffffff821161088e5760405191612ea1601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016602001846108e7565b829481845281830111610229578281602093846000960137010152565b612ed6919b9895939b9a97949a999692993691612e59565b606060009067ffffffffffffffff8b1682526009602052612ef960408320613606565b927fffffffff00000000000000000000000000000000000000000000000000000000612f496102008601517fffffffff000000000000000000000000000000000000000000000000000000001690565b167f2812d52c0000000000000000000000000000000000000000000000000000000081036130a5575050505090612f8f611eb1610160612f959594015163ffffffff1690565b91615a0c565b96612fac6020612fa48a615b2d565b990151151590565b985b7f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff821614600014613095575050955b7f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff8116881161305557509061304e9493929161430e565b9193929190565b7f6a92a4830000000000000000000000000000000000000000000000000000000060005260048890526bffffffffffffffffffffffff1660245260446000fd5b9161309f92612df1565b9561300a565b7f2d4dfc1c00000000000000000000000000000000000000000000000000000000909e95929d9694939e146130de575b50505050612fae565b6130f1949d506130f6959c5051926157d2565b615872565b96600198388080806130d5565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610229570180359067ffffffffffffffff821161022957602001918160061b3603831361022957565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b91908110156131965760061b0190565b613157565b35907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8216820361022957565b604081360312610229576131f36020604051926131e0846108af565b80356131eb8161020b565b84520161319b565b602082015290565b604081360312610229576131f3602060405192613217846108af565b6131eb816105df565b90613229614566565b60005b82518110156133935780613242600192856133a5565b517f32a4ba3fa3351b11ad555d4c8ec70a744e8705607077a946807030d64b6ab1a360a073ffffffffffffffffffffffffffffffffffffffff83511692606081019373ffffffffffffffffffffffffffffffffffffffff80865116957fffff0000000000000000000000000000000000000000000000000000000000006132fa60208601947fffffffffffffffffffff00000000000000000000000000000000000000000000865116604088019a848c511692615c47565b977fffffffffffffffffffff000000000000000000000000000000000000000000006080870195613366875115158c600052600460205260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b8560405198511688525116602087015251166040850152511660608301525115156080820152a20161322c565b509050565b8051156131965760200190565b80518210156131965760209160051b010190565b604051906133c6826108af565b60006020838281520152565b35612e378161020b565b906040516133e9816108af565b91547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116835260e01c6020830152565b9061341f614566565b60005b82518110156133935761343581846133a5565b51602061345461344584876133a5565b515167ffffffffffffffff1690565b9101519067ffffffffffffffff8116801580156135e7575b80156135b9575b613581579161354782600195946134f76134d2886134a861354c9867ffffffffffffffff166000526009602052604060002090565b015460381b7fffffffff000000000000000000000000000000000000000000000000000000001690565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b613552577f525e3d4e0c31cef19cf9426af8d2c0ddd2d576359ca26bed92aac5fadda462656040518061352a878261150f565b0390a267ffffffffffffffff166000526009602052604060002090565b6145b5565b01613422565b7f283b699f411baff8f1c29fe49f32a828c8151596244b8e7e4c164edd6569a8356040518061352a878261150f565b7fc35aa79d0000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff821660045260246000fd5b5061016083015163ffffffff1663ffffffff6135df611eb1606087015163ffffffff1690565b911611613473565b5063ffffffff6135ff61016085015163ffffffff1690565b161561346c565b9061023b6137586001613617610937565b946136d56136c7825461363361362d8260ff1690565b15158a52565b61ffff600882901c1660208a015263ffffffff601882901c1660408a015263ffffffff603882901c1660608a015263ffffffff605882901c1660808a015261ffff607882901c1660a08a015263ffffffff608882901c1660c08a015261ffff60a882901c1660e08a015261ffff60b882901c166101008a015261ffff60c882901c166101208a015260d81c63ffffffff1690565b63ffffffff16610140880152565b015463ffffffff811661016086015267ffffffffffffffff602082901c1661018086015263ffffffff606082901c166101a086015263ffffffff608082901c166101c086015261373060a082901c60ff1615156101e0870152565b60381b7fffffffff000000000000000000000000000000000000000000000000000000001690565b7fffffffff0000000000000000000000000000000000000000000000000000000016610200840152565b9061378b614566565b6000915b80518310156139bc576137a283826133a5565b51906137b6825167ffffffffffffffff1690565b946020600093019367ffffffffffffffff8716935b855180518210156139a7576137e2826020926133a5565b5101516137f3611da58389516133a5565b8151602083015163ffffffff90811691168181101561396e575050608082015163ffffffff1660208110613920575090867f94967ae9ea7729ad4f54021c1981765d2b1d954f7c92fbec340aa0a54f46b8b573ffffffffffffffffffffffffffffffffffffffff846138af858f600199986138856138aa9267ffffffffffffffff16600052600a602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b614b7a565b61391760405192839216958291909160a08060c083019463ffffffff815116845263ffffffff602082015116602085015261ffff604082015116604085015263ffffffff606082015116606085015263ffffffff608082015116608085015201511515910152565b0390a3016137cb565b7f24ecdc020000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff90911660045263ffffffff1660245260446000fd5b7f0b4f67a20000000000000000000000000000000000000000000000000000000060005263ffffffff9081166004521660245260446000fd5b5050955092509260019150019192909261378f565b50905060005b8151811015613a7757806139db613445600193856133a5565b67ffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff613a246020613a0886896133a5565b51015173ffffffffffffffffffffffffffffffffffffffff1690565b6000613a48826138858767ffffffffffffffff16600052600a602052604060002090565b551691167f4de5b1bcbca6018c11303a2c3f4a4b4f22a1c741d8c4ba430d246ac06c5ddf8b600080a3016139c2565b5050565b6020818303126102295780359067ffffffffffffffff8211610229570181601f8201121561022957803590613aaf82610e81565b92613abd60405194856108e7565b8284526020606081860194028301019181831161022957602001925b828410613ae7575050505090565b606084830312610229576020606091604051613b0281610872565b8635613b0d8161020b565b8152613b1a83880161319b565b838201526040870135613b2c816112c4565b6040820152815201930192613ad9565b90604051613b4981610872565b604060ff82945473ffffffffffffffffffffffffffffffffffffffff81168452818160a01c16602085015260a81c161515910152565b9061023b604051613b8f816108cb565b925463ffffffff8082168552602082811c821690860152604082811c61ffff1690860152605082901c81166060860152607082901c16608085015260901c60ff16151560a0840152565b613be1614566565b60208101519160005b8351811015613c955780613c03610e2e600193876133a5565b613c3f613c3a73ffffffffffffffffffffffffffffffffffffffff83165b73ffffffffffffffffffffffffffffffffffffffff1690565b616227565b613c4b575b5001613bea565b60405173ffffffffffffffffffffffffffffffffffffffff9190911681527fc3803387881faad271c47728894e3e36fac830ffc8602ca6fc07733cbda7758090602090a138613c44565b5091505160005b8151811015613a7757613cb2610e2e82846133a5565b9073ffffffffffffffffffffffffffffffffffffffff821615613d4f577feb1b9b92e50b7f88f9ff25d56765095ac6e91540eee214906f4036a908ffbdef613d4683613d1e613d19613c2160019773ffffffffffffffffffffffffffffffffffffffff1690565b6161ae565b5060405173ffffffffffffffffffffffffffffffffffffffff90911681529081906020820190565b0390a101613c9c565b7f8579befe0000000000000000000000000000000000000000000000000000000060005260046000fd5b613d81614566565b60005b8151811015613a77578073ffffffffffffffffffffffffffffffffffffffff613daf600193856133a5565b5151167fbb77da6f7210cdd16904228a9360133d1d7dfff99b1bc75f128da5b53e28f97d613e4c67ffffffffffffffff6020613deb86896133a5565b51015116836000526008602052604060002067ffffffffffffffff82167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008254161790556040519182918291909167ffffffffffffffff6020820193169052565b0390a201613d84565b91908203918211612d8057565b613e6a6133b9565b50613e9d613e988273ffffffffffffffffffffffffffffffffffffffff166000526006602052604060002090565b6133dc565b6020810191613ebc613eb6611eb1855163ffffffff1690565b42613e55565b63ffffffff7f00000000000000000000000000000000000000000000000000000000000000001611613f7157611de6613f159173ffffffffffffffffffffffffffffffffffffffff166000526007602052604060002090565b613f25611dfb6040830151151590565b8015613f77575b613f7157613f3990614f84565b9163ffffffff613f61611eb1613f56602087015163ffffffff1690565b935163ffffffff1690565b911610613f6c575090565b905090565b50905090565b5073ffffffffffffffffffffffffffffffffffffffff613fab825173ffffffffffffffffffffffffffffffffffffffff1690565b1615613f2c565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610229570180359067ffffffffffffffff82116102295760200191813603831361022957565b91908201809211612d8057565b90614019614566565b60005b82518110156133935780614032600192856133a5565b517fe6a7a17d710bf0b2cd05e5397dc6f97a5da4ee79e31e234bf5f965ee2bd9a5bf6141af602073ffffffffffffffffffffffffffffffffffffffff84511693015183600052600760205260406000206140de73ffffffffffffffffffffffffffffffffffffffff835116829073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b602082015181547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1660a09190911b74ff000000000000000000000000000000000000000016177fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff75ff0000000000000000000000000000000000000000006040850151151560a81b16911617905560405191829182919091604080606083019473ffffffffffffffffffffffffffffffffffffffff815116845260ff602082015116602085015201511515910152565b0390a20161401c565b6141c181613e62565b9063ffffffff602083015116158015614240575b6141fc5750517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff907f06439c6b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff825116156141d5565b9061427182610e81565b61427e60405191826108e7565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06142ac8294610e81565b019060005b8281106142bd57505050565b8060606020809385010152016142b1565b91908110156131965760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6181360301821215610229570190565b90929161433460016134a88467ffffffffffffffff166000526009602052604060002090565b9061433e81614267565b9560005b828110614353575050505050505090565b614366614361828489613186565b6133d2565b83886143806143768584846142ce565b6040810190613fb2565b90506020811161449a575b5083926143ba6143b46126fe6143aa6001986143dd976143d8976142ce565b6020810190613fb2565b89615b77565b6138858967ffffffffffffffff16600052600a602052604060002090565b613b7f565b60a081015115614460576144446143fe606061441893015163ffffffff1690565b6040805163ffffffff909216602083015290928391820190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826108e7565b61444e828b6133a5565b52614459818a6133a5565b5001614342565b506144186144446144956144888967ffffffffffffffff166000526009602052604060002090565b5460d81c63ffffffff1690565b6143fe565b9150506144d2611eb16144c5846138858b67ffffffffffffffff16600052600a602052604060002090565b5460701c63ffffffff1690565b106144df5783883861438b565b7f36f536ca0000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff1660045260246000fd5b3360005260036020526040600020541561453857565b7fd86ad9cf000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff60015416330361458757565b7f2b5c74de0000000000000000000000000000000000000000000000000000000060005260046000fd5b9055565b90614b30610200600161023b946146006145cf8651151590565b829060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b614646614612602087015161ffff1690565b82547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff1660089190911b62ffff0016178255565b61469261465a604087015163ffffffff1690565b82547fffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff1660189190911b66ffffffff00000016178255565b6146e26146a6606087015163ffffffff1690565b82547fffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffff1660389190911b6affffffff0000000000000016178255565b6147366146f6608087015163ffffffff1690565b82547fffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffff1660589190911b6effffffff000000000000000000000016178255565b61478a61474860a087015161ffff1690565b82547fffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffff1660789190911b70ffff00000000000000000000000000000016178255565b6147e461479e60c087015163ffffffff1690565b82547fffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffff1660889190911b74ffffffff000000000000000000000000000000000016178255565b61483e6147f660e087015161ffff1690565b82547fffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffff1660a89190911b76ffff00000000000000000000000000000000000000000016178255565b61489b61485161010087015161ffff1690565b82547fffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff1660b89190911b78ffff000000000000000000000000000000000000000000000016178255565b6148fa6148ae61012087015161ffff1690565b82547fffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff1660c89190911b7affff0000000000000000000000000000000000000000000000000016178255565b61495f61490f61014087015163ffffffff1690565b82547fff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff1660d89190911b7effffffff00000000000000000000000000000000000000000000000000000016178255565b01926149a761497661016083015163ffffffff1690565b859063ffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000825416179055565b6149fd6149c061018083015167ffffffffffffffff1690565b85547fffffffffffffffffffffffffffffffffffffffff0000000000000000ffffffff1660209190911b6bffffffffffffffff0000000016178555565b614a53614a126101a083015163ffffffff1690565b85547fffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff1660609190911b6fffffffff00000000000000000000000016178555565b614aad614a686101c083015163ffffffff1690565b85547fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff1660809190911b73ffffffff0000000000000000000000000000000016178555565b614b09614abe6101e0830151151590565b85805490917fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90911690151560a01b74ff000000000000000000000000000000000000000016179055565b01517fffffffff000000000000000000000000000000000000000000000000000000001690565b81547fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff1660389190911c78ffffffff00000000000000000000000000000000000000000016179055565b614cc060a061023b93614bbf63ffffffff825116859063ffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000825416179055565b60208181015185546040808501517fffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff9092169290931b67ffffffff000000001691909117911b69ffff0000000000000000161784556060810151614c629063ffffffff1685547fffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffff1660509190911b6dffffffff0000000000000000000016178555565b614cb9614c76608083015163ffffffff1690565b85547fffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffff1660709190911b71ffffffff000000000000000000000000000016178555565b0151151590565b81547fffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff1690151560901b72ff00000000000000000000000000000000000016179055565b91929092614d1482828686615c47565b600052600460205260ff6040600020541615614d305750505050565b6040517f097e17ff00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201529390921660248401527fffffffffffffffffffff0000000000000000000000000000000000000000000090911660448301527fffff000000000000000000000000000000000000000000000000000000000000166064820152608490fd5b0390fd5b604d8111612d8057600a0a90565b60ff1660120160ff8111612d805760ff16906024821115614ea8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8201918211612d8057614e34614e3a92614dd5565b90612db8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111614e7e577bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b7f10cb51d10000000000000000000000000000000000000000000000000000000060005260046000fd5b906024039060248211612d805761284b614ec192614dd5565b614e3a565b9060ff80911691160160ff8111612d805760ff16906024821115614ea8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8201918211612d8057614e34614e3a92614dd5565b519069ffffffffffffffffffff8216820361022957565b908160a091031261022957614f4581614f1a565b91602082015191604081015191612e37608060608401519301614f1a565b6040513d6000823e3d90fd5b908160209103126102295751612e3781612af8565b614f8c6133b9565b50614fb1613c21613c21835173ffffffffffffffffffffffffffffffffffffffff1690565b90604051907ffeaf968c00000000000000000000000000000000000000000000000000000000825260a082600481865afa9283156150ce576000926000946150d3575b5060008312614e7e576020600491604051928380927f313ce5670000000000000000000000000000000000000000000000000000000082525afa9283156150ce57612e379363ffffffff9361505a93600092615098575b506020015160ff165b90614ec6565b9261508a615066610928565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9095168552565b1663ffffffff166020830152565b6150549192506150bf602091823d84116150c7575b6150b781836108e7565b810190614f6f565b92915061504b565b503d6150ad565b614f63565b9093506150f991925060a03d60a011615106575b6150f181836108e7565b810190614f31565b5093925050919238614ff4565b503d6150e7565b919063ffffffff60408401511680821161519d57505061ffff60208301511690818111615167575050907fffffffff0000000000000000000000000000000000000000000000000000000061020061023b93015116615b77565b61ffff92507fd88dddd6000000000000000000000000000000000000000000000000000000006000526004521660245260446000fd5b7f869337890000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b67ffffffffffffffff81166000526005602052604060002091604051926151f3846108af565b547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116845260e01c9182602085015263ffffffff82169283615257575b50505050612e3790517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff164290810393908411612d80578311615275578061522d565b7ff08bcb3e0000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff1660045263ffffffff1660245260445260646000fd5b604081360312610229576020604051916152d1836108af565b80356152dc8161020b565b83520135602082015290565b63ffffffff60209116019063ffffffff8211612d8057565b9063ffffffff8091169116019063ffffffff8211612d8057565b929593909491956000936000976000976000955b8087106153415750505050505050929190565b90919293949596989961535d61535889848a613186565b6152b8565b996153c56143d88c6153a16153868867ffffffffffffffff16600052600a602052604060002090565b915173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b916153d6611dfb60a0850151151590565b6155455760009b60408401906153f1612844835161ffff1690565b6154a6575b5050606083015163ffffffff1661540c91615300565b9b608083015161541f9063ffffffff1690565b61542891615300565b9a82516154389063ffffffff1690565b63ffffffff1661544790612d5e565b6001939080831061549a5750612973611eb1602061546a93015163ffffffff1690565b808211615489575061547b91614003565b975b0195949392919061532e565b905061549491614003565b9761547d565b91505061549491614003565b9061284b612844615536949f61552d9460208e61552493508d73ffffffffffffffffffffffffffffffffffffffff6154f2855173ffffffffffffffffffffffffffffffffffffffff1690565b911673ffffffffffffffffffffffffffffffffffffffff82161461553e5761551a91506141b8565b915b015190615d1a565b925161ffff1690565b620186a0900490565b9a38806153f6565b509161551c565b989a506001915061558561556c61558b9261286e6129736128446101208c015161ffff1690565b9961557f61014089015163ffffffff1690565b90615300565b9b6152e8565b9961547d565b91939093806101e00193846101e011612d80576101208102908082046101201490151715612d80576101e0910101809311612d805761284461010061283a612e37966dffffffffffffffffffffffffffff6156256156116155ff61562d9a63ffffffff61284b9a1690614003565b61284b61284460e08c015161ffff1690565b61286e611eb160c08b015163ffffffff1690565b911690612da5565b612d85565b6102008301517fffffffff00000000000000000000000000000000000000000000000000000000169291907f2812d52c0000000000000000000000000000000000000000000000000000000084036156925761568e9350615d4f565b5190565b91927f2d4dfc1c00000000000000000000000000000000000000000000000000000000036157a857906156e3916156c76157b8565b506156dd611eb161016086015163ffffffff1690565b91615eb3565b90602082015180511515908161578a575b506157615763ffffffff615720611eb16060615714865163ffffffff1690565b94015163ffffffff1690565b9116116157375751612e379063ffffffff16611eb1565b7f4c4fc93a0000000000000000000000000000000000000000000000000000000060005260046000fd5b7eb90b030000000000000000000000000000000000000000000000000000000060005260046000fd5b6157a2915061579a602091613398565b510151151590565b386156f4565b5050610160015163ffffffff1690565b604051906157c5826108af565b6060602083600081520152565b6157de916156c76157b8565b91151580615865575b61583b576020820151805115159081615825575b506157615763ffffffff61581b611eb16060615714865163ffffffff1690565b9116116157375790565b615835915061579a602091613398565b386157fb565b7f82c071a00000000000000000000000000000000000000000000000000000000060005260046000fd5b50602082015151156157e7565b604051907f3f2538fa00000000000000000000000000000000000000000000000000000000602083015260206024830152816020608482019263ffffffff81511660448401520151604060648301528051809352602060a4830191019260005b81811061590c575050612e379250037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826108e7565b845180518452602090810151151581850152909401938593506040909201916001016158d2565b919091357fffffffff0000000000000000000000000000000000000000000000000000000081169260048110615967575050565b7fffffffff00000000000000000000000000000000000000000000000000000000929350829060040360031b1b161690565b909291928360041161022957831161022957600401917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0190565b90816020910312610229575190565b90816040910312610229576020604051916159fd836108af565b8051835201516131f381610e99565b91615a156133b9565b508115615b0b5750615a566126fe8280615a507fffffffff000000000000000000000000000000000000000000000000000000009587615933565b95615999565b91167f181dcf10000000000000000000000000000000000000000000000000000000008103615a93575080602080612e37935183010191016159e3565b7f97a657c90000000000000000000000000000000000000000000000000000000014615ae3577f5247fdce0000000000000000000000000000000000000000000000000000000060005260046000fd5b80602080615af6935183010191016159d4565b615afe610928565b9081526000602082015290565b91505067ffffffffffffffff615b1f610928565b911681526000602082015290565b6020604051917f181dcf1000000000000000000000000000000000000000000000000000000000828401528051602484015201511515604482015260448152612e376064826108e7565b7fffffffff00000000000000000000000000000000000000000000000000000000167f2812d52c0000000000000000000000000000000000000000000000000000000014615bc25750565b6020815103615c0557615bde60208251830101602083016159d4565b73ffffffffffffffffffffffffffffffffffffffff8111908115615c3b575b50615c055750565b614dd1906040519182917f8d666f6000000000000000000000000000000000000000000000000000000000835260048301615f67565b61040091501038615bfd565b6040805173ffffffffffffffffffffffffffffffffffffffff9283166020820190815292909316908301527fffffffffffffffffffff0000000000000000000000000000000000000000000090921660608201527fffff000000000000000000000000000000000000000000000000000000000000909216608083015290615cd28160a08101614418565b51902090565b73ffffffffffffffffffffffffffffffffffffffff612e379116600b61605b565b73ffffffffffffffffffffffffffffffffffffffff612e379116600b6161e9565b670de0b6b3a7640000917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff615d4b9216612da5565b0490565b615d6e91615d5b6133b9565b5063ffffffff6101608501511691615a0c565b90815163ffffffff806060840151161610615737576101e00151151580615dc1575b615d975790565b7fee433e990000000000000000000000000000000000000000000000000000000060005260046000fd5b50602081015115615d90565b6020818303126102295780519067ffffffffffffffff82116102295701906040828203126102295760405191615e02836108af565b8051615e0d816112c4565b835260208101519067ffffffffffffffff8211610229570181601f8201121561022957805190615e3c82610e81565b92615e4a60405194856108e7565b82845260208085019360061b8301019181831161022957602001925b828410615e795750505050602082015290565b6040848303126102295760206040918251615e93816108af565b8651815282870151615ea481610e99565b83820152815201930192615e66565b9091615ebd6157b8565b508215615ee557506126fe82612e3793615ed693615999565b60208082518301019101615dcd565b915050602060405190615ef881836108e7565b600082527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018160005b828110615f5157505050615f4b63ffffffff615f3d610928565b9416849063ffffffff169052565b82015290565b615f596133b9565b828287010152018290615f23565b906020612e37928181520190610656565b80548210156131965760005260206000200190600090565b916145b1918354907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9060031b92831b921b19161790565b8054801561602c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190615ffd8282615f78565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160031b1b1916905555565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001810191806000528260205260406000205492831515600014616149577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8401848111612d80578354937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8501948511612d805760009585836160fa976160eb9503616100575b505050615fc8565b90600052602052604060002090565b55600190565b61613061612a916161216161176161409588615f78565b90549060031b1c90565b92839187615f78565b90615f90565b8590600052602052604060002090565b553880806160e3565b50505050600090565b8054906801000000000000000082101561088e57816161799160016145b194018155615f78565b81939154907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9060031b92831b921b19161790565b6000818152600360205260409020546161e3576161cc816002616152565b600254906000526003602052604060002055600190565b50600090565b6000828152600182016020526040902054616220578061620b83600193616152565b80549260005201602052604060002055600190565b5050600090565b600081815260036020526040902054908115616220577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820190828211612d8057600254927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8401938411612d805783836160fa94600096036162c3575b5050506162b26002615fc8565b600390600052602052604060002090565b6162b261612a916162db6161176162e5956002615f78565b9283916002615f78565b553880806162a556fea164736f6c634300081a000a", + Bin: "0x60e060405234610fc6576178a08038038061001981611238565b9283398101908082036101208112610fc657606013610fc65761003a6111fa565b81516001600160601b0381168103610fc657815261005a6020830161125d565b906020810191825261006e60408401611271565b6040820190815260608401516001600160401b038111610fc65785610094918601611299565b60808501519094906001600160401b038111610fc657866100b6918301611299565b60a08201519096906001600160401b038111610fc65782019181601f84011215610fc65782516100ed6100e882611282565b611238565b9360208086848152019260071b82010190848211610fc657602001915b81831061117f5750505060c08101516001600160401b038111610fc65781019782601f8a011215610fc6578851986101446100e88b611282565b996020808c838152019160051b83010191858311610fc65760208101915b83831061101d575050505060e08201516001600160401b038111610fc65782019183601f84011215610fc657825161019c6100e882611282565b9360208086848152019260061b82010190868211610fc657602001915b818310610fe157505050610100810151906001600160401b038211610fc6570183601f82011215610fc6578051906101f36100e883611282565b946020610240818886815201940283010191818311610fc657602001925b828410610e2a57505050503315610e1957600180546001600160a01b031916331790556020986102408a611238565b97600089526000368137610252611219565b998a52888b8b015260005b89518110156102c4576001906001600160a01b0361027b828d611324565b51168d61028782611510565b610294575b50500161025d565b7fc3803387881faad271c47728894e3e36fac830ffc8602ca6fc07733cbda7758091604051908152a1388d61028c565b508a985089519660005b885181101561033f576001600160a01b036102e9828b611324565b511690811561032e577feb1b9b92e50b7f88f9ff25d56765095ac6e91540eee214906f4036a908ffbdef8c83610320600195611498565b50604051908152a1016102ce565b6342bcdf7f60e11b60005260046000fd5b5089959697508860018060a01b03835116158015610e07575b8015610df8575b610de75791516001600160a01b031660a05290516001600160601b03166080525163ffffffff1660c05261039284611238565b9360008552600036813760005b855181101561040e576001906103c76001600160a01b036103c0838a611324565b51166113a5565b6103d2575b0161039f565b818060a01b036103e28289611324565b51167f1795838dc8ab2ffc5f431a1729a6afa0b587f982f7b2be0b9d7187a1ef547f91600080a26103cc565b508694508560005b84518110156104855760019061043e6001600160a01b036104378389611324565b51166114d7565b610449575b01610416565b818060a01b036104598288611324565b51167fdf1b1bd32a69711488d71554706bb130b1fc63a5fa1a2cd85e8440f84065ba23600080a2610443565b508593508460005b855181101561054757806104a360019288611324565b517fe6a7a17d710bf0b2cd05e5397dc6f97a5da4ee79e31e234bf5f965ee2bd9a5bf606087858060a01b03845116930151836000526007895260406000209060ff878060a01b038251169283898060a01b03198254161781558b8301908151604082549501948460a81b8651151560a81b16918560a01b9060a01b169061ffff60a01b19161717905560405193845251168a8301525115156040820152a20161048d565b50828460005b8451811015610a92576105608186611324565b51836001600160401b036105748489611324565b5151169101519080158015610a7f575b8015610a61575b610a4d579081600193926000526009865263ffffffff60e01b846040600020015460381b161560001461090257807f525e3d4e0c31cef19cf9426af8d2c0ddd2d576359ca26bed92aac5fadda46265604051806106fb868291909161020061022082019380511515835261ffff602082015116602084015263ffffffff604082015116604084015263ffffffff606082015116606084015263ffffffff608082015116608084015261ffff60a08201511660a084015263ffffffff60c08201511660c084015261ffff60e08201511660e084015261ffff6101008201511661010084015261ffff6101208201511661012084015263ffffffff6101408201511661014084015263ffffffff6101608201511661016084015260018060401b036101808201511661018084015263ffffffff6101a0820151166101a084015263ffffffff6101c0820151166101c08401526101e081015115156101e08401528163ffffffff60e01b91015116910152565b0390a25b600052600985528260406000208251151581549062ffff008986015160081b169166ffffffff000000604087015160181b166affffffff00000000000000606088015160381b16906effffffff0000000000000000000000608089015160581b169361ffff60781b60a08a015160781b169163ffffffff60881b60c08b015160881b169061ffff60a81b60e08c015160a81b169361ffff60b81b6101008d015160b81b16968c61012061ffff60c81b91015160c81b16988d61014063ffffffff60d81b91015160d81b169a63ffffffff60d81b199861ffff60c81b199761ffff60b81b199661ffff60a81b199563ffffffff60881b199461ffff60781b19936effffffff0000000000000000000000199260ff6affffffff000000000000001992169066ffffffffffffff1916171617161716171617161716171617161717178155019063ffffffff80610160830151161663ffffffff198354161782556101808101519082546fffffffff0000000000000000000000006101a083015160601b169063ffffffff60801b6101c084015160801b16916101e0840151151560a01b9363ffffffff60a81b9061020063ffffffff60a81b91015160381c16169463ffffffff60a81b199260ff60a01b19916401000000008b60601b03908d1b16906401000000008b60a01b03191617161716179060ff60a01b16171790550161054d565b807f283b699f411baff8f1c29fe49f32a828c8151596244b8e7e4c164edd6569a83560405180610a45868291909161020061022082019380511515835261ffff602082015116602084015263ffffffff604082015116604084015263ffffffff606082015116606084015263ffffffff608082015116608084015261ffff60a08201511660a084015263ffffffff60c08201511660c084015261ffff60e08201511660e084015261ffff6101008201511661010084015261ffff6101208201511661012084015263ffffffff6101408201511661014084015263ffffffff6101608201511661016084015260018060401b036101808201511661018084015263ffffffff6101a0820151166101a084015263ffffffff6101c0820151166101c08401526101e081015115156101e08401528163ffffffff60e01b91015116910152565b0390a26106ff565b63c35aa79d60e01b60005260045260246000fd5b5063ffffffff6101608301511663ffffffff6060840151161061058b565b5063ffffffff6101608301511615610584565b508260005b8151811015610b17576001906001600160a01b03610ab58285611324565b5151167fbb77da6f7210cdd16904228a9360133d1d7dfff99b1bc75f128da5b53e28f97d86848060401b0381610aeb8689611324565b510151168360005260088252604060002081878060401b0319825416179055604051908152a201610a97565b50506001610b2483611238565b9160008352600091610de2575b81925b8151841015610d2057610b478483611324565b5180516001600160401b0316929086019190845b8784518051831015610d0f5782610b7191611324565b51015184516001600160a01b0390610b8a908490611324565b5151169063ffffffff8151168a82019063ffffffff8251169081811015610cfa575050608082019063ffffffff8251168c8110610ce357507f94967ae9ea7729ad4f54021c1981765d2b1d954f7c92fbec340aa0a54f46b8b560c08d8098979563ffffffff600198968f8f9761ffff6040838b879552600a89528181208f808f9160a01b0316825289522091838751169784891685198554161784558482519285549560408b019469ffff0000000000000000865160401b169b60608101986dffffffff000000000000000000008a5160501b169060a08d8860701b905160701b1693019e8f60ff60901b9051151560901b169460ff60901b199267ffffffff000000008a60701b19928c1b169060016401000000009060701b0319161716171617171790556040519a8b5251169089015251166040870152511660608501525116608083015251151560a0820152a301909150610b5b565b6312766e0160e11b8b52600485905260245260448afd5b6305a7b3d160e11b8b52600452602452604489fd5b505050925093600191500192610b34565b905083825b8251811015610da3576001906001600160401b03610d438286611324565b515116828060a01b0384610d578488611324565b5101511690808752600a855260408720848060a01b038316885285528660408120557f4de5b1bcbca6018c11303a2c3f4a4b4f22a1c741d8c4ba430d246ac06c5ddf8b8780a301610d25565b6040516162fb90816115a582396080518181816104e1015261300c015260a0518181816105240152612fb0015260c05181818161054b0152613ec30152f35b610b31565b63d794ef9560e01b60005260046000fd5b5063ffffffff8251161561035f565b5080516001600160601b031615610358565b639b15e16f60e01b60005260046000fd5b8382036102408112610fc657610220610e41611219565b91610e4b87611301565b8352601f190112610fc6576040519161022083016001600160401b03811184821017610fcb57604052610e80602087016112f4565b8352610e8e60408701611315565b6020840152610e9f60608701611271565b6040840152610eb060808701611271565b6060840152610ec160a08701611271565b6080840152610ed260c08701611315565b60a0840152610ee360e08701611271565b60c0840152610ef56101008701611315565b60e0840152610f076101208701611315565b610100840152610f1a6101408701611315565b610120840152610f2d6101608701611271565b610140840152610f406101808701611271565b610160840152610f536101a08701611301565b610180840152610f666101c08701611271565b6101a0840152610f796101e08701611271565b6101c0840152610f8c61020087016112f4565b6101e0840152610220860151916001600160e01b031983168303610fc6578360209361020061024096015283820152815201930192610211565b600080fd5b634e487b7160e01b600052604160045260246000fd5b604083880312610fc6576020604091610ff8611219565b6110018661125d565b815261100e838701611301565b838201528152019201916101b9565b82516001600160401b038111610fc65782016040818903601f190112610fc657611045611219565b9061105260208201611301565b825260408101516001600160401b038111610fc657602091010188601f82011215610fc65780516110856100e882611282565b91602060e08185858152019302820101908b8211610fc657602001915b8183106110c15750505091816020938480940152815201920191610162565b828c0360e08112610fc65760c06110d6611219565b916110e08661125d565b8352601f190112610fc6576040519160c08301916001600160401b03831184841017610fcb5760e09360209360405261111a848801611271565b815261112860408801611271565b8482015261113860608801611315565b604082015261114960808801611271565b606082015261115a60a08801611271565b608082015261116b60c088016112f4565b60a0820152838201528152019201916110a2565b82850360808112610fc6576060611194611219565b9161119e8661125d565b8352601f190112610fc6576111b16111fa565b916111be6020860161125d565b835260408501519160ff83168303610fc657836020938460809601526111e6606088016112f4565b60408201528382015281520192019161010a565b60405190606082016001600160401b03811183821017610fcb57604052565b60408051919082016001600160401b03811183821017610fcb57604052565b6040519190601f01601f191682016001600160401b03811183821017610fcb57604052565b51906001600160a01b0382168203610fc657565b519063ffffffff82168203610fc657565b6001600160401b038111610fcb5760051b60200190565b9080601f83011215610fc65781516112b36100e882611282565b9260208085848152019260051b820101928311610fc657602001905b8282106112dc5750505090565b602080916112e98461125d565b8152019101906112cf565b51908115158203610fc657565b51906001600160401b0382168203610fc657565b519061ffff82168203610fc657565b80518210156113385760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b80548210156113385760005260206000200190600090565b8054801561138f57600019019061137d828261134e565b8154906000199060031b1b1916905555565b634e487b7160e01b600052603160045260246000fd5b6000818152600c6020526040902054801561146657600019810181811161145057600b54600019810191908211611450578181036113ff575b5050506113eb600b611366565b600052600c60205260006040812055600190565b61143861141061142193600b61134e565b90549060031b1c928392600b61134e565b819391549060031b91821b91600019901b19161790565b9055600052600c6020526040600020553880806113de565b634e487b7160e01b600052601160045260246000fd5b5050600090565b80549068010000000000000000821015610fcb57816114219160016114949401815561134e565b9055565b806000526003602052604060002054156000146114d1576114ba81600261146d565b600254906000526003602052604060002055600190565b50600090565b80600052600c602052604060002054156000146114d1576114f981600b61146d565b600b5490600052600c602052604060002055600190565b6000818152600360205260409020548015611466576000198101818111611450576002546000198101919082116114505780820361156a575b5050506115566002611366565b600052600360205260006040812055600190565b61158c61157b61142193600261134e565b90549060031b1c928392600261134e565b9055600052600360205260406000205538808061154956fe6080604052600436101561001257600080fd5b60003560e01c806241e5be1461020657806301ffc9a714610201578063061877e3146101fc57806306285c69146101f7578063097a87a1146101f2578063181f5a77146101ed5780632451a627146101e8578063325c868e146101e35780633937306f146101de57806341ed29e7146101d957806345ac924d146101d45780634ab35b0b146101cf578063514e8cff146101ca5780636cb5f3dd146101c55780636def4ce7146101c0578063770e2dc4146101bb57806379ba5097146101b65780637afac322146101b1578063805f2132146101ac57806382b49eb0146101a75780638da5cb5b146101a257806391a2749a1461019d578063a69c64c014610198578063bf78e03f14610193578063cdc73d511461018e578063d02641a014610189578063d63d3af214610184578063d8694ccd1461017f578063f2fde38b1461017a578063fbe3f778146101755763ffdb4b371461017057600080fd5b612c3c565b612b03565b612a04565b6125d8565b61259e565b612522565b61248d565b6123a2565b6122cb565b6121fb565b6121a9565b612017565b611cd6565b611b65565b611a15565b6117b2565b611643565b6112dd565b6111e6565b61117b565b611076565b610eae565b610aef565b610ab5565b610a14565b610947565b610754565b610487565b610414565b6102d2565b610248565b73ffffffffffffffffffffffffffffffffffffffff81160361022957565b600080fd5b6044359061023b8261020b565b565b359061023b8261020b565b346102295760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022957602061029d6004356102888161020b565b602435604435916102988361020b565b612df1565b604051908152f35b35907fffffffff000000000000000000000000000000000000000000000000000000008216820361022957565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610229576004357fffffffff0000000000000000000000000000000000000000000000000000000081168103610229577fffffffff00000000000000000000000000000000000000000000000000000000602091167f805f21320000000000000000000000000000000000000000000000000000000081149081156103ea575b81156103c0575b8115610396575b506040519015158152f35b7f01ffc9a7000000000000000000000000000000000000000000000000000000009150143861038b565b7f181f5a770000000000000000000000000000000000000000000000000000000081149150610384565b7fd113cb6c000000000000000000000000000000000000000000000000000000008114915061037d565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295773ffffffffffffffffffffffffffffffffffffffff6004356104648161020b565b166000526008602052602067ffffffffffffffff60406000205416604051908152f35b346102295760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610229576104be612e3a565b5060606040516104cd81610872565b63ffffffff6bffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169182815273ffffffffffffffffffffffffffffffffffffffff60406020830192827f00000000000000000000000000000000000000000000000000000000000000001684520191837f00000000000000000000000000000000000000000000000000000000000000001683526040519485525116602084015251166040820152f35b9181601f840112156102295782359167ffffffffffffffff8311610229576020838186019501011161022957565b6024359067ffffffffffffffff8216820361022957565b6004359067ffffffffffffffff8216820361022957565b359067ffffffffffffffff8216820361022957565b9181601f840112156102295782359167ffffffffffffffff8311610229576020808501948460051b01011161022957565b9181601f840112156102295782359167ffffffffffffffff8311610229576020808501948460061b01011161022957565b919082519283825260005b8481106106a05750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b80602080928401015182828601015201610661565b9290916106d692845215156020840152608060408401526080830190610656565b906060818303910152815180825260208201916020808360051b8301019401926000915b83831061070957505050505090565b9091929394602080610745837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086600196030187528951610656565b970193019301919392906106fa565b346102295760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff8111610229576107a3903690600401610583565b906107ac6105b1565b916107b561022e565b9160643560843567ffffffffffffffff8111610229576107d9903690600401610583565b60a49291923567ffffffffffffffff8111610229576107fc9036906004016105f4565b93909260c4359767ffffffffffffffff89116102295761083f9961082761082f9a3690600401610625565b999098612ebe565b90604094929451948594856106b5565b0390f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff82111761088e57604052565b610843565b60a0810190811067ffffffffffffffff82111761088e57604052565b6040810190811067ffffffffffffffff82111761088e57604052565b60c0810190811067ffffffffffffffff82111761088e57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761088e57604052565b6040519061023b6040836108e7565b6040519061023b610220836108e7565b346102295760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295761083f604080519061098881836108e7565b601382527f46656551756f74657220312e362e302d64657600000000000000000000000000602083015251918291602083526020830190610656565b602060408183019282815284518094520192019060005b8181106109e85750505090565b825173ffffffffffffffffffffffffffffffffffffffff168452602093840193909201916001016109db565b346102295760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760405180602060025491828152019060026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace9060005b818110610a9f5761083f85610a93818703826108e7565b604051918291826109c4565b8254845260209093019260019283019201610a7c565b346102295760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022957602060405160248152f35b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff811161022957806004019060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc823603011261022957610b69614522565b610b738280613103565b4263ffffffff1692915060005b818110610d4d57505060240190610b978284613103565b92905060005b838110610ba657005b80610bc5610bc0600193610bba868a613103565b90613186565b6131fb565b7fdd84a3fa9ef9409f550d54d6affec7e9c480c878c6ab27b78912a03e1b371c6e67ffffffffffffffff610d14610cf16020850194610ce3610c2387517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b610c52610c2e610928565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092168252565b63ffffffff8c166020820152610c8d610c73845167ffffffffffffffff1690565b67ffffffffffffffff166000526005602052604060002090565b815160209092015160e01b7fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216919091179055565b5167ffffffffffffffff1690565b93517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9290921682524260208301529190931692a201610b9d565b80610d66610d61600193610bba8980613103565b6131c4565b7f52f50aa6d1a95a4595361ecf953d095f125d442e4673716dede699e049de148a73ffffffffffffffffffffffffffffffffffffffff610e48610cf16020850194610e2e610dd087517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b610ddb610c2e610928565b63ffffffff8d166020820152610c8d610e08845173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff166000526006602052604060002090565b5173ffffffffffffffffffffffffffffffffffffffff1690565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9290921682524260208301529190931692a201610b80565b67ffffffffffffffff811161088e5760051b60200190565b8015150361022957565b359061023b82610e99565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff8111610229573660238201121561022957806004013590610f0982610e81565b90610f1760405192836108e7565b828252602460a06020840194028201019036821161022957602401925b818410610f4657610f4483613220565b005b60a0843603126102295760405190610f5d82610893565b8435610f688161020b565b825260208501357fffffffffffffffffffff00000000000000000000000000000000000000000000811681036102295760208301526040850135907fffff000000000000000000000000000000000000000000000000000000000000821682036102295782602092604060a0950152610fe36060880161023d565b6060820152610ff460808801610ea3565b6080820152815201930192610f34565b602060408183019282815284518094520192019060005b8181106110285750505090565b909192602060408261106b600194885163ffffffff602080927bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8151168552015116910152565b01940192910161101b565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff8111610229576110c59036906004016105f4565b6110ce81610e81565b916110dc60405193846108e7565b8183527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061110983610e81565b0160005b81811061116457505060005b828110156111565760019061113a6111358260051b85016133d2565b613e62565b61114482876133a5565b5261114f81866133a5565b5001611119565b6040518061083f8682611004565b60209061116f6133b9565b8282880101520161110d565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760206111c06004356111bb8161020b565b6141b8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405191168152f35b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295767ffffffffffffffff6112266105c8565b61122e6133b9565b5016600052600560205260406000206040519061124a826108af565b547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116825260e01c6020820152604051809161083f82604081019263ffffffff602080927bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8151168552015116910152565b359061ffff8216820361022957565b63ffffffff81160361022957565b359061023b826112c4565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff811161022957366023820112156102295780600401359061133882610e81565b9061134660405192836108e7565b82825260246102406020840194028201019036821161022957602401925b81841061137457610f4483613416565b8336036102408112610229576102207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051926113b1846108af565b6113ba886105df565b8452011261022957610240916020916113d1610937565b6113dc848901610ea3565b81526113ea604089016112b5565b848201526113fa606089016112d2565b604082015261140b608089016112d2565b606082015261141c60a089016112d2565b608082015261142d60c089016112b5565b60a082015261143e60e089016112d2565b60c082015261145061010089016112b5565b60e082015261146261012089016112b5565b61010082015261147561014089016112b5565b61012082015261148861016089016112d2565b61014082015261149b61018089016112d2565b6101608201526114ae6101a089016105df565b6101808201526114c16101c089016112d2565b6101a08201526114d46101e089016112d2565b6101c08201526114e76102008901610ea3565b6101e08201526114fa61022089016102a5565b61020082015283820152815201930192611364565b61023b909291926102008061022083019561152c84825115159052565b60208181015161ffff169085015260408181015163ffffffff169085015260608181015163ffffffff169085015260808181015163ffffffff169085015260a08181015161ffff169085015260c08181015163ffffffff169085015260e08181015161ffff16908501526101008181015161ffff16908501526101208181015161ffff16908501526101408181015163ffffffff16908501526101608181015163ffffffff16908501526101808181015167ffffffffffffffff16908501526101a08181015163ffffffff16908501526101c08181015163ffffffff16908501526101e08181015115159085015201517fffffffff0000000000000000000000000000000000000000000000000000000016910152565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295761083f6117166117116116836105c8565b6000610200611690610937565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015282610120820152826101408201528261016082015282610180820152826101a0820152826101c0820152826101e0820152015267ffffffffffffffff166000526009602052604060002090565b613606565b6040519182918261150f565b81601f820112156102295780359061173982610e81565b9261174760405194856108e7565b82845260208085019360061b8301019181831161022957602001925b828410611771575050505090565b604084830312610229576020604091825161178b816108af565b611794876105df565b8152828701356117a38161020b565b83820152815201930192611763565b346102295760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff8111610229573660238201121561022957806004013561180c81610e81565b9161181a60405193846108e7565b8183526024602084019260051b820101903682116102295760248101925b828410611869576024358567ffffffffffffffff821161022957611863610f44923690600401611722565b90613782565b833567ffffffffffffffff811161022957820160407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc823603011261022957604051906118b5826108af565b6118c1602482016105df565b8252604481013567ffffffffffffffff811161022957602491010136601f820112156102295780356118f281610e81565b9161190060405193846108e7565b818352602060e081850193028201019036821161022957602001915b81831061193b5750505091816020938480940152815201930192611838565b82360360e081126102295760c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060405192611976846108af565b86356119818161020b565b845201126102295760e09160209160405161199b816108cb565b838701356119a8816112c4565b815260408701356119b8816112c4565b848201526119c8606088016112b5565b604082015260808701356119db816112c4565b606082015260a08701356119ee816112c4565b608082015260c0870135611a0181610e99565b60a08201528382015281520192019161191c565b346102295760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760005473ffffffffffffffffffffffffffffffffffffffff81163303611ad4577fffffffffffffffffffffffff00000000000000000000000000000000000000006001549133828416176001551660005573ffffffffffffffffffffffffffffffffffffffff3391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b7f02b543c60000000000000000000000000000000000000000000000000000000060005260046000fd5b9080601f83011215610229578135611b1581610e81565b92611b2360405194856108e7565b81845260208085019260051b82010192831161022957602001905b828210611b4b5750505090565b602080918335611b5a8161020b565b815201910190611b3e565b346102295760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff811161022957611bb4903690600401611afe565b60243567ffffffffffffffff811161022957611bd4903690600401611afe565b90611bdd614566565b60005b8151811015611c595780611c01611bfc610e2e600194866133a5565b615cd8565b611c0c575b01611be0565b73ffffffffffffffffffffffffffffffffffffffff611c2e610e2e83866133a5565b167f1795838dc8ab2ffc5f431a1729a6afa0b587f982f7b2be0b9d7187a1ef547f91600080a2611c06565b8260005b8151811015610f445780611c7e611c79610e2e600194866133a5565b615cf9565b611c89575b01611c5d565b73ffffffffffffffffffffffffffffffffffffffff611cab610e2e83866133a5565b167fdf1b1bd32a69711488d71554706bb130b1fc63a5fa1a2cd85e8440f84065ba23600080a2611c83565b346102295760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff811161022957611d25903690600401610583565b6024359167ffffffffffffffff831161022957611d7e611d76611d5c611d52611d86963690600401610583565b9490953691612e59565b90604082015190605e604a84015160601c93015191929190565b919033614d04565b810190613a7b565b60005b8151811015610f4457611deb611de6611dc0611da584866133a5565b515173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff166000526007602052604060002090565b613b3c565b611dff611dfb6040830151151590565b1590565b611fc15790611e74611e176020600194015160ff1690565b611e6e611e4d6020611e2986896133a5565b5101517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b90614de3565b611e8f6040611e8384876133a5565b51015163ffffffff1690565b63ffffffff611eba611eb1611eaa610e08611da5888b6133a5565b5460e01c90565b63ffffffff1690565b911610611fbb57611f1d611ed36040611e8385886133a5565b611f0d611ede610928565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff851681529163ffffffff166020830152565b610c8d610e08611da586896133a5565b7f52f50aa6d1a95a4595361ecf953d095f125d442e4673716dede699e049de148a73ffffffffffffffffffffffffffffffffffffffff611f60611da585886133a5565b611fb1611f726040611e83888b6133a5565b60405193849316958390929163ffffffff6020917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff604085019616845216910152565b0390a25b01611d89565b50611fb5565b612013611fd1611da584866133a5565b7f06439c6b0000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff16600452602490565b6000fd5b346102295760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295761083f6120ca6120546105c8565b67ffffffffffffffff6024359161206a8361020b565b600060a060405161207a816108cb565b828152826020820152826040820152826060820152826080820152015216600052600a60205260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b61214661213d604051926120dd846108cb565b5463ffffffff8116845263ffffffff8160201c16602085015261ffff8160401c1660408501526121246121178263ffffffff9060501c1690565b63ffffffff166060860152565b63ffffffff607082901c16608085015260901c60ff1690565b151560a0830152565b6040519182918291909160a08060c083019463ffffffff815116845263ffffffff602082015116602085015261ffff604082015116604085015263ffffffff606082015116606085015263ffffffff608082015116608085015201511515910152565b346102295760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022957602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff81116102295760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc823603011261022957604051612274816108af565b816004013567ffffffffffffffff8111610229576122989060043691850101611afe565b8152602482013567ffffffffffffffff811161022957610f449260046122c19236920101611afe565b6020820152613bd9565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff811161022957366023820112156102295780600401359061232682610e81565b9061233460405192836108e7565b8282526024602083019360061b8201019036821161022957602401925b81841061236157610f4483613d79565b604084360312610229576020604091825161237b816108af565b86356123868161020b565b81526123938388016105df565b83820152815201930192612351565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295773ffffffffffffffffffffffffffffffffffffffff6004356123f28161020b565b6123fa612e3a565b5016600052600760205261083f604060002060ff6040519161241b83610872565b5473ffffffffffffffffffffffffffffffffffffffff81168352818160a01c16602084015260a81c161515604082015260405191829182919091604080606083019473ffffffffffffffffffffffffffffffffffffffff815116845260ff602082015116602085015201511515910152565b346102295760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022957604051806020600b54918281520190600b6000527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99060005b81811061250c5761083f85610a93818703826108e7565b82548452602090930192600192830192016124f5565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760406125626004356111358161020b565b61259c8251809263ffffffff602080927bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8151168552015116910152565bf35b346102295760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022957602060405160128152f35b346102295760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295761260f6105c8565b6024359067ffffffffffffffff821161022957816004019060a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8436030112610229576126746117118267ffffffffffffffff166000526009602052604060002090565b91612682611dfb8451151590565b6129cc5760648401906126c6611dfb61269a846133d2565b73ffffffffffffffffffffffffffffffffffffffff166000526001600b01602052604060002054151590565b61297e5760448501936126d98583613103565b949050602487019661270c6126ee8986613fb2565b9050876127056126fe8880613fb2565b3691612e59565b918661510d565b6127186111bb866133d2565b9661273461272e6101c086015163ffffffff1690565b846151cd565b9260008089156129565750509061276291896127596127528a6133d2565b9389613103565b9390928861531a565b9591955b60009861ffff61277c61010089015161ffff1690565b166128ef575b50886128d2896128d28a8f8f986128c461289e6128988f61083f9f6128df9f6101807bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9f6128d79f936dffffffffffffffffffffffffffff61287461288b9561286e8961284b9f61288b9f608461286061287b9a63ffffffff61284b9f85826128518a61284b61284460a061283a612858986128689f612830899161282a60808a015163ffffffff1690565b9b613fb2565b9290501690614003565b93015161ffff1690565b61ffff1690565b90612da5565b9116614003565b911690614003565b950190613fb2565b90615632565b90614003565b9116612da5565b93015167ffffffffffffffff1690565b67ffffffffffffffff1690565b966133d2565b73ffffffffffffffffffffffffffffffffffffffff166000526008602052604060002090565b5467ffffffffffffffff1690565b614003565b911690612db8565b6040519081529081906020820190565b8597929a9950928181999594889d98979361291c89956dffffffffffffffffffffffffffff9060701c1690565b6dffffffffffffffffffffffffffff16916129378b86613fb2565b90506129439387615591565b9a9b9398965091509293979a959a612782565b9150959150612978612973611eb16101a088015163ffffffff1690565b612d5e565b95612766565b61201361298a836133d2565b7f2502348c0000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff16600452602490565b7f99ac52f20000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff821660045260246000fd5b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295773ffffffffffffffffffffffffffffffffffffffff600435612a548161020b565b612a5c614566565b16338114612ace57807fffffffffffffffffffffffff0000000000000000000000000000000000000000600054161760005573ffffffffffffffffffffffffffffffffffffffff600154167fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278600080a3005b7fdad89dca0000000000000000000000000000000000000000000000000000000060005260046000fd5b60ff81160361022957565b346102295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102295760043567ffffffffffffffff8111610229573660238201121561022957806004013590612b5e82610e81565b90612b6c60405192836108e7565b8282526024602083019360071b8201019036821161022957602401925b818410612b9957610f4483614010565b833603608081126102295760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe060405192612bd4846108af565b8735612bdf8161020b565b8452011261022957608091602091604051612bf981610872565b83880135612c068161020b565b81526040880135612c1681612af8565b848201526060880135612c2881610e99565b604082015283820152815201930192612b89565b346102295760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261022957600435612c778161020b565b612c7f6105b1565b9067ffffffffffffffff82169182600052600960205260ff6040600020541615612d0157612caf612cd0926141b8565b92600052600960205263ffffffff60016040600020015460801c16906151cd565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152f35b827f99ac52f20000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b90662386f26fc10000820291808304662386f26fc100001490151715612d8057565b612d2f565b90655af3107a4000820291808304655af3107a40001490151715612d8057565b81810292918115918404141715612d8057565b8115612dc2570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b612e30612e2a612e3794937bffffffffffffffffffffffffffffffffffffffffffffffffffffffff612e2381956141b8565b1690612da5565b926141b8565b1690612db8565b90565b60405190612e4782610872565b60006040838281528260208201520152565b92919267ffffffffffffffff821161088e5760405191612ea1601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016602001846108e7565b829481845281830111610229578281602093846000960137010152565b612ed6919b9895939b9a97949a999692993691612e59565b606060009067ffffffffffffffff8b1682526009602052612ef960408320613606565b927fffffffff00000000000000000000000000000000000000000000000000000000612f496102008601517fffffffff000000000000000000000000000000000000000000000000000000001690565b167f2812d52c0000000000000000000000000000000000000000000000000000000081036130a5575050505090612f8f611eb1610160612f959594015163ffffffff1690565b91615a0c565b96612fac6020612fa48a615b2d565b990151151590565b985b7f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff821614600014613095575050955b7f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff8116881161305557509061304e9493929161430e565b9193929190565b7f6a92a4830000000000000000000000000000000000000000000000000000000060005260048890526bffffffffffffffffffffffff1660245260446000fd5b9161309f92612df1565b9561300a565b7f2d4dfc1c00000000000000000000000000000000000000000000000000000000909e95929d9694939e146130de575b50505050612fae565b6130f1949d506130f6959c5051926157d2565b615872565b96600198388080806130d5565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610229570180359067ffffffffffffffff821161022957602001918160061b3603831361022957565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b91908110156131965760061b0190565b613157565b35907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8216820361022957565b604081360312610229576131f36020604051926131e0846108af565b80356131eb8161020b565b84520161319b565b602082015290565b604081360312610229576131f3602060405192613217846108af565b6131eb816105df565b90613229614566565b60005b82518110156133935780613242600192856133a5565b517f32a4ba3fa3351b11ad555d4c8ec70a744e8705607077a946807030d64b6ab1a360a073ffffffffffffffffffffffffffffffffffffffff83511692606081019373ffffffffffffffffffffffffffffffffffffffff80865116957fffff0000000000000000000000000000000000000000000000000000000000006132fa60208601947fffffffffffffffffffff00000000000000000000000000000000000000000000865116604088019a848c511692615c47565b977fffffffffffffffffffff000000000000000000000000000000000000000000006080870195613366875115158c600052600460205260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b8560405198511688525116602087015251166040850152511660608301525115156080820152a20161322c565b509050565b8051156131965760200190565b80518210156131965760209160051b010190565b604051906133c6826108af565b60006020838281520152565b35612e378161020b565b906040516133e9816108af565b91547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116835260e01c6020830152565b9061341f614566565b60005b82518110156133935761343581846133a5565b51602061345461344584876133a5565b515167ffffffffffffffff1690565b9101519067ffffffffffffffff8116801580156135e7575b80156135b9575b613581579161354782600195946134f76134d2886134a861354c9867ffffffffffffffff166000526009602052604060002090565b015460381b7fffffffff000000000000000000000000000000000000000000000000000000001690565b7fffffffff000000000000000000000000000000000000000000000000000000001690565b613552577f525e3d4e0c31cef19cf9426af8d2c0ddd2d576359ca26bed92aac5fadda462656040518061352a878261150f565b0390a267ffffffffffffffff166000526009602052604060002090565b6145b5565b01613422565b7f283b699f411baff8f1c29fe49f32a828c8151596244b8e7e4c164edd6569a8356040518061352a878261150f565b7fc35aa79d0000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff821660045260246000fd5b5061016083015163ffffffff1663ffffffff6135df611eb1606087015163ffffffff1690565b911611613473565b5063ffffffff6135ff61016085015163ffffffff1690565b161561346c565b9061023b6137586001613617610937565b946136d56136c7825461363361362d8260ff1690565b15158a52565b61ffff600882901c1660208a015263ffffffff601882901c1660408a015263ffffffff603882901c1660608a015263ffffffff605882901c1660808a015261ffff607882901c1660a08a015263ffffffff608882901c1660c08a015261ffff60a882901c1660e08a015261ffff60b882901c166101008a015261ffff60c882901c166101208a015260d81c63ffffffff1690565b63ffffffff16610140880152565b015463ffffffff811661016086015267ffffffffffffffff602082901c1661018086015263ffffffff606082901c166101a086015263ffffffff608082901c166101c086015261373060a082901c60ff1615156101e0870152565b60381b7fffffffff000000000000000000000000000000000000000000000000000000001690565b7fffffffff0000000000000000000000000000000000000000000000000000000016610200840152565b9061378b614566565b6000915b80518310156139bc576137a283826133a5565b51906137b6825167ffffffffffffffff1690565b946020600093019367ffffffffffffffff8716935b855180518210156139a7576137e2826020926133a5565b5101516137f3611da58389516133a5565b8151602083015163ffffffff90811691168181101561396e575050608082015163ffffffff1660208110613920575090867f94967ae9ea7729ad4f54021c1981765d2b1d954f7c92fbec340aa0a54f46b8b573ffffffffffffffffffffffffffffffffffffffff846138af858f600199986138856138aa9267ffffffffffffffff16600052600a602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b614b7a565b61391760405192839216958291909160a08060c083019463ffffffff815116845263ffffffff602082015116602085015261ffff604082015116604085015263ffffffff606082015116606085015263ffffffff608082015116608085015201511515910152565b0390a3016137cb565b7f24ecdc020000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff90911660045263ffffffff1660245260446000fd5b7f0b4f67a20000000000000000000000000000000000000000000000000000000060005263ffffffff9081166004521660245260446000fd5b5050955092509260019150019192909261378f565b50905060005b8151811015613a7757806139db613445600193856133a5565b67ffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff613a246020613a0886896133a5565b51015173ffffffffffffffffffffffffffffffffffffffff1690565b6000613a48826138858767ffffffffffffffff16600052600a602052604060002090565b551691167f4de5b1bcbca6018c11303a2c3f4a4b4f22a1c741d8c4ba430d246ac06c5ddf8b600080a3016139c2565b5050565b6020818303126102295780359067ffffffffffffffff8211610229570181601f8201121561022957803590613aaf82610e81565b92613abd60405194856108e7565b8284526020606081860194028301019181831161022957602001925b828410613ae7575050505090565b606084830312610229576020606091604051613b0281610872565b8635613b0d8161020b565b8152613b1a83880161319b565b838201526040870135613b2c816112c4565b6040820152815201930192613ad9565b90604051613b4981610872565b604060ff82945473ffffffffffffffffffffffffffffffffffffffff81168452818160a01c16602085015260a81c161515910152565b9061023b604051613b8f816108cb565b925463ffffffff8082168552602082811c821690860152604082811c61ffff1690860152605082901c81166060860152607082901c16608085015260901c60ff16151560a0840152565b613be1614566565b60208101519160005b8351811015613c955780613c03610e2e600193876133a5565b613c3f613c3a73ffffffffffffffffffffffffffffffffffffffff83165b73ffffffffffffffffffffffffffffffffffffffff1690565b616227565b613c4b575b5001613bea565b60405173ffffffffffffffffffffffffffffffffffffffff9190911681527fc3803387881faad271c47728894e3e36fac830ffc8602ca6fc07733cbda7758090602090a138613c44565b5091505160005b8151811015613a7757613cb2610e2e82846133a5565b9073ffffffffffffffffffffffffffffffffffffffff821615613d4f577feb1b9b92e50b7f88f9ff25d56765095ac6e91540eee214906f4036a908ffbdef613d4683613d1e613d19613c2160019773ffffffffffffffffffffffffffffffffffffffff1690565b6161ae565b5060405173ffffffffffffffffffffffffffffffffffffffff90911681529081906020820190565b0390a101613c9c565b7f8579befe0000000000000000000000000000000000000000000000000000000060005260046000fd5b613d81614566565b60005b8151811015613a77578073ffffffffffffffffffffffffffffffffffffffff613daf600193856133a5565b5151167fbb77da6f7210cdd16904228a9360133d1d7dfff99b1bc75f128da5b53e28f97d613e4c67ffffffffffffffff6020613deb86896133a5565b51015116836000526008602052604060002067ffffffffffffffff82167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008254161790556040519182918291909167ffffffffffffffff6020820193169052565b0390a201613d84565b91908203918211612d8057565b613e6a6133b9565b50613e9d613e988273ffffffffffffffffffffffffffffffffffffffff166000526006602052604060002090565b6133dc565b6020810191613ebc613eb6611eb1855163ffffffff1690565b42613e55565b63ffffffff7f00000000000000000000000000000000000000000000000000000000000000001611613f7157611de6613f159173ffffffffffffffffffffffffffffffffffffffff166000526007602052604060002090565b613f25611dfb6040830151151590565b8015613f77575b613f7157613f3990614f84565b9163ffffffff613f61611eb1613f56602087015163ffffffff1690565b935163ffffffff1690565b911610613f6c575090565b905090565b50905090565b5073ffffffffffffffffffffffffffffffffffffffff613fab825173ffffffffffffffffffffffffffffffffffffffff1690565b1615613f2c565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610229570180359067ffffffffffffffff82116102295760200191813603831361022957565b91908201809211612d8057565b90614019614566565b60005b82518110156133935780614032600192856133a5565b517fe6a7a17d710bf0b2cd05e5397dc6f97a5da4ee79e31e234bf5f965ee2bd9a5bf6141af602073ffffffffffffffffffffffffffffffffffffffff84511693015183600052600760205260406000206140de73ffffffffffffffffffffffffffffffffffffffff835116829073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b602082015181547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1660a09190911b74ff000000000000000000000000000000000000000016177fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff75ff0000000000000000000000000000000000000000006040850151151560a81b16911617905560405191829182919091604080606083019473ffffffffffffffffffffffffffffffffffffffff815116845260ff602082015116602085015201511515910152565b0390a20161401c565b6141c181613e62565b9063ffffffff602083015116158015614240575b6141fc5750517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff907f06439c6b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff825116156141d5565b9061427182610e81565b61427e60405191826108e7565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06142ac8294610e81565b019060005b8281106142bd57505050565b8060606020809385010152016142b1565b91908110156131965760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6181360301821215610229570190565b90929161433460016134a88467ffffffffffffffff166000526009602052604060002090565b9061433e81614267565b9560005b828110614353575050505050505090565b614366614361828489613186565b6133d2565b83886143806143768584846142ce565b6040810190613fb2565b90506020811161449a575b5083926143ba6143b46126fe6143aa6001986143dd976143d8976142ce565b6020810190613fb2565b89615b77565b6138858967ffffffffffffffff16600052600a602052604060002090565b613b7f565b60a081015115614460576144446143fe606061441893015163ffffffff1690565b6040805163ffffffff909216602083015290928391820190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826108e7565b61444e828b6133a5565b52614459818a6133a5565b5001614342565b506144186144446144956144888967ffffffffffffffff166000526009602052604060002090565b5460d81c63ffffffff1690565b6143fe565b9150506144d2611eb16144c5846138858b67ffffffffffffffff16600052600a602052604060002090565b5460701c63ffffffff1690565b106144df5783883861438b565b7f36f536ca0000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff1660045260246000fd5b3360005260036020526040600020541561453857565b7fd86ad9cf000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff60015416330361458757565b7f2b5c74de0000000000000000000000000000000000000000000000000000000060005260046000fd5b9055565b90614b30610200600161023b946146006145cf8651151590565b829060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b614646614612602087015161ffff1690565b82547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff1660089190911b62ffff0016178255565b61469261465a604087015163ffffffff1690565b82547fffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff1660189190911b66ffffffff00000016178255565b6146e26146a6606087015163ffffffff1690565b82547fffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffff1660389190911b6affffffff0000000000000016178255565b6147366146f6608087015163ffffffff1690565b82547fffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffff1660589190911b6effffffff000000000000000000000016178255565b61478a61474860a087015161ffff1690565b82547fffffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffff1660789190911b70ffff00000000000000000000000000000016178255565b6147e461479e60c087015163ffffffff1690565b82547fffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffff1660889190911b74ffffffff000000000000000000000000000000000016178255565b61483e6147f660e087015161ffff1690565b82547fffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffff1660a89190911b76ffff00000000000000000000000000000000000000000016178255565b61489b61485161010087015161ffff1690565b82547fffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff1660b89190911b78ffff000000000000000000000000000000000000000000000016178255565b6148fa6148ae61012087015161ffff1690565b82547fffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff1660c89190911b7affff0000000000000000000000000000000000000000000000000016178255565b61495f61490f61014087015163ffffffff1690565b82547fff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff1660d89190911b7effffffff00000000000000000000000000000000000000000000000000000016178255565b01926149a761497661016083015163ffffffff1690565b859063ffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000825416179055565b6149fd6149c061018083015167ffffffffffffffff1690565b85547fffffffffffffffffffffffffffffffffffffffff0000000000000000ffffffff1660209190911b6bffffffffffffffff0000000016178555565b614a53614a126101a083015163ffffffff1690565b85547fffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff1660609190911b6fffffffff00000000000000000000000016178555565b614aad614a686101c083015163ffffffff1690565b85547fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff1660809190911b73ffffffff0000000000000000000000000000000016178555565b614b09614abe6101e0830151151590565b85805490917fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90911690151560a01b74ff000000000000000000000000000000000000000016179055565b01517fffffffff000000000000000000000000000000000000000000000000000000001690565b81547fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff1660389190911c78ffffffff00000000000000000000000000000000000000000016179055565b614cc060a061023b93614bbf63ffffffff825116859063ffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000825416179055565b60208181015185546040808501517fffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffff9092169290931b67ffffffff000000001691909117911b69ffff0000000000000000161784556060810151614c629063ffffffff1685547fffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffff1660509190911b6dffffffff0000000000000000000016178555565b614cb9614c76608083015163ffffffff1690565b85547fffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffff1660709190911b71ffffffff000000000000000000000000000016178555565b0151151590565b81547fffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff1690151560901b72ff00000000000000000000000000000000000016179055565b91929092614d1482828686615c47565b600052600460205260ff6040600020541615614d305750505050565b6040517f097e17ff00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201529390921660248401527fffffffffffffffffffff0000000000000000000000000000000000000000000090911660448301527fffff000000000000000000000000000000000000000000000000000000000000166064820152608490fd5b0390fd5b604d8111612d8057600a0a90565b60ff1660120160ff8111612d805760ff16906024821115614ea8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8201918211612d8057614e34614e3a92614dd5565b90612db8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111614e7e577bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b7f10cb51d10000000000000000000000000000000000000000000000000000000060005260046000fd5b906024039060248211612d805761284b614ec192614dd5565b614e3a565b9060ff80911691160160ff8111612d805760ff16906024821115614ea8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8201918211612d8057614e34614e3a92614dd5565b519069ffffffffffffffffffff8216820361022957565b908160a091031261022957614f4581614f1a565b91602082015191604081015191612e37608060608401519301614f1a565b6040513d6000823e3d90fd5b908160209103126102295751612e3781612af8565b614f8c6133b9565b50614fb1613c21613c21835173ffffffffffffffffffffffffffffffffffffffff1690565b90604051907ffeaf968c00000000000000000000000000000000000000000000000000000000825260a082600481865afa9283156150ce576000926000946150d3575b5060008312614e7e576020600491604051928380927f313ce5670000000000000000000000000000000000000000000000000000000082525afa9283156150ce57612e379363ffffffff9361505a93600092615098575b506020015160ff165b90614ec6565b9261508a615066610928565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9095168552565b1663ffffffff166020830152565b6150549192506150bf602091823d84116150c7575b6150b781836108e7565b810190614f6f565b92915061504b565b503d6150ad565b614f63565b9093506150f991925060a03d60a011615106575b6150f181836108e7565b810190614f31565b5093925050919238614ff4565b503d6150e7565b919063ffffffff60408401511680821161519d57505061ffff60208301511690818111615167575050907fffffffff0000000000000000000000000000000000000000000000000000000061020061023b93015116615b77565b61ffff92507fd88dddd6000000000000000000000000000000000000000000000000000000006000526004521660245260446000fd5b7f869337890000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b67ffffffffffffffff81166000526005602052604060002091604051926151f3846108af565b547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116845260e01c9182602085015263ffffffff82169283615257575b50505050612e3790517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff164290810393908411612d80578311615275578061522d565b7ff08bcb3e0000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff1660045263ffffffff1660245260445260646000fd5b604081360312610229576020604051916152d1836108af565b80356152dc8161020b565b83520135602082015290565b63ffffffff60209116019063ffffffff8211612d8057565b9063ffffffff8091169116019063ffffffff8211612d8057565b929593909491956000936000976000976000955b8087106153415750505050505050929190565b90919293949596989961535d61535889848a613186565b6152b8565b996153c56143d88c6153a16153868867ffffffffffffffff16600052600a602052604060002090565b915173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b916153d6611dfb60a0850151151590565b6155455760009b60408401906153f1612844835161ffff1690565b6154a6575b5050606083015163ffffffff1661540c91615300565b9b608083015161541f9063ffffffff1690565b61542891615300565b9a82516154389063ffffffff1690565b63ffffffff1661544790612d5e565b6001939080831061549a5750612973611eb1602061546a93015163ffffffff1690565b808211615489575061547b91614003565b975b0195949392919061532e565b905061549491614003565b9761547d565b91505061549491614003565b9061284b612844615536949f61552d9460208e61552493508d73ffffffffffffffffffffffffffffffffffffffff6154f2855173ffffffffffffffffffffffffffffffffffffffff1690565b911673ffffffffffffffffffffffffffffffffffffffff82161461553e5761551a91506141b8565b915b015190615d1a565b925161ffff1690565b620186a0900490565b9a38806153f6565b509161551c565b989a506001915061558561556c61558b9261286e6129736128446101208c015161ffff1690565b9961557f61014089015163ffffffff1690565b90615300565b9b6152e8565b9961547d565b91939093806101e00193846101e011612d80576101208102908082046101201490151715612d80576101e0910101809311612d805761284461010061283a612e37966dffffffffffffffffffffffffffff6156256156116155ff61562d9a63ffffffff61284b9a1690614003565b61284b61284460e08c015161ffff1690565b61286e611eb160c08b015163ffffffff1690565b911690612da5565b612d85565b6102008301517fffffffff00000000000000000000000000000000000000000000000000000000169291907f2812d52c0000000000000000000000000000000000000000000000000000000084036156925761568e9350615d4f565b5190565b91927f2d4dfc1c00000000000000000000000000000000000000000000000000000000036157a857906156e3916156c76157b8565b506156dd611eb161016086015163ffffffff1690565b91615eb3565b90602082015180511515908161578a575b506157615763ffffffff615720611eb16060615714865163ffffffff1690565b94015163ffffffff1690565b9116116157375751612e379063ffffffff16611eb1565b7f4c4fc93a0000000000000000000000000000000000000000000000000000000060005260046000fd5b7eb90b030000000000000000000000000000000000000000000000000000000060005260046000fd5b6157a2915061579a602091613398565b510151151590565b386156f4565b5050610160015163ffffffff1690565b604051906157c5826108af565b6060602083600081520152565b6157de916156c76157b8565b91151580615865575b61583b576020820151805115159081615825575b506157615763ffffffff61581b611eb16060615714865163ffffffff1690565b9116116157375790565b615835915061579a602091613398565b386157fb565b7f82c071a00000000000000000000000000000000000000000000000000000000060005260046000fd5b50602082015151156157e7565b604051907f3f2538fa00000000000000000000000000000000000000000000000000000000602083015260206024830152816020608482019263ffffffff81511660448401520151604060648301528051809352602060a4830191019260005b81811061590c575050612e379250037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826108e7565b845180518452602090810151151581850152909401938593506040909201916001016158d2565b919091357fffffffff0000000000000000000000000000000000000000000000000000000081169260048110615967575050565b7fffffffff00000000000000000000000000000000000000000000000000000000929350829060040360031b1b161690565b909291928360041161022957831161022957600401917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0190565b90816020910312610229575190565b90816040910312610229576020604051916159fd836108af565b8051835201516131f381610e99565b91615a156133b9565b508115615b0b5750615a566126fe8280615a507fffffffff000000000000000000000000000000000000000000000000000000009587615933565b95615999565b91167f181dcf10000000000000000000000000000000000000000000000000000000008103615a93575080602080612e37935183010191016159e3565b7f97a657c90000000000000000000000000000000000000000000000000000000014615ae3577f5247fdce0000000000000000000000000000000000000000000000000000000060005260046000fd5b80602080615af6935183010191016159d4565b615afe610928565b9081526000602082015290565b91505067ffffffffffffffff615b1f610928565b911681526000602082015290565b6020604051917f181dcf1000000000000000000000000000000000000000000000000000000000828401528051602484015201511515604482015260448152612e376064826108e7565b7fffffffff00000000000000000000000000000000000000000000000000000000167f2812d52c0000000000000000000000000000000000000000000000000000000014615bc25750565b6020815103615c0557615bde60208251830101602083016159d4565b73ffffffffffffffffffffffffffffffffffffffff8111908115615c3b575b50615c055750565b614dd1906040519182917f8d666f6000000000000000000000000000000000000000000000000000000000835260048301615f67565b61040091501038615bfd565b6040805173ffffffffffffffffffffffffffffffffffffffff9283166020820190815292909316908301527fffffffffffffffffffff0000000000000000000000000000000000000000000090921660608201527fffff000000000000000000000000000000000000000000000000000000000000909216608083015290615cd28160a08101614418565b51902090565b73ffffffffffffffffffffffffffffffffffffffff612e379116600b61605b565b73ffffffffffffffffffffffffffffffffffffffff612e379116600b6161e9565b670de0b6b3a7640000917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff615d4b9216612da5565b0490565b615d6e91615d5b6133b9565b5063ffffffff6101608501511691615a0c565b90815163ffffffff806060840151161610615737576101e00151151580615dc1575b615d975790565b7fee433e990000000000000000000000000000000000000000000000000000000060005260046000fd5b50602081015115615d90565b6020818303126102295780519067ffffffffffffffff82116102295701906040828203126102295760405191615e02836108af565b8051615e0d816112c4565b835260208101519067ffffffffffffffff8211610229570181601f8201121561022957805190615e3c82610e81565b92615e4a60405194856108e7565b82845260208085019360061b8301019181831161022957602001925b828410615e795750505050602082015290565b6040848303126102295760206040918251615e93816108af565b8651815282870151615ea481610e99565b83820152815201930192615e66565b9091615ebd6157b8565b508215615ee557506126fe82612e3793615ed693615999565b60208082518301019101615dcd565b915050602060405190615ef881836108e7565b600082527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018160005b828110615f5157505050615f4b63ffffffff615f3d610928565b9416849063ffffffff169052565b82015290565b615f596133b9565b828287010152018290615f23565b906020612e37928181520190610656565b80548210156131965760005260206000200190600090565b916145b1918354907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9060031b92831b921b19161790565b8054801561602c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190615ffd8282615f78565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82549160031b1b1916905555565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001810191806000528260205260406000205492831515600014616149577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8401848111612d80578354937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8501948511612d805760009585836160fa976160eb9503616100575b505050615fc8565b90600052602052604060002090565b55600190565b61613061612a916161216161176161409588615f78565b90549060031b1c90565b92839187615f78565b90615f90565b8590600052602052604060002090565b553880806160e3565b50505050600090565b8054906801000000000000000082101561088e57816161799160016145b194018155615f78565b81939154907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9060031b92831b921b19161790565b6000818152600360205260409020546161e3576161cc816002616152565b600254906000526003602052604060002055600190565b50600090565b6000828152600182016020526040902054616220578061620b83600193616152565b80549260005201602052604060002055600190565b5050600090565b600081815260036020526040902054908115616220577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820190828211612d8057600254927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8401938411612d805783836160fa94600096036162c3575b5050506162b26002615fc8565b600390600052602052604060002090565b6162b261612a916162db6161176162e5956002615f78565b9283916002615f78565b553880806162a556fea164736f6c634300081a000a", } var FeeQuoterABI = FeeQuoterMetaData.ABI diff --git a/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt b/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt index 7c4f0aac67e..f25660a28c8 100644 --- a/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt +++ b/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt @@ -6,7 +6,7 @@ ccip_encoding_utils: ../../../contracts/solc/v0.8.26/ICCIPEncodingUtils/ICCIPEnc ccip_home: ../../../contracts/solc/v0.8.26/CCIPHome/CCIPHome.abi ../../../contracts/solc/v0.8.26/CCIPHome/CCIPHome.bin 8406cd785db043c667b93a5ce300316098d619fe15c8c9ecbd7182b0964c137e ccip_reader_tester: ../../../contracts/solc/v0.8.26/CCIPReaderTester/CCIPReaderTester.abi ../../../contracts/solc/v0.8.26/CCIPReaderTester/CCIPReaderTester.bin 5566701183b0eeb93cf12d08dcedc9c16b52aa51029ca13f4749021735439744 ether_sender_receiver: ../../../contracts/solc/v0.8.26/EtherSenderReceiver/EtherSenderReceiver.abi ../../../contracts/solc/v0.8.26/EtherSenderReceiver/EtherSenderReceiver.bin fbab164d4d69a76ee95518717a9a2356fd1a64475dbe651ba777f1a259b5e450 -fee_quoter: ../../../contracts/solc/v0.8.26/FeeQuoter/FeeQuoter.abi ../../../contracts/solc/v0.8.26/FeeQuoter/FeeQuoter.bin 7e17f3ec92e0ef43a203c56b146d6767cda52341314f68ecbf2cea37ba356a42 +fee_quoter: ../../../contracts/solc/v0.8.26/FeeQuoter/FeeQuoter.abi ../../../contracts/solc/v0.8.26/FeeQuoter/FeeQuoter.bin 743b728eabdb3121661426132f9632efa146a193f77043652b848e63ab1507bb lock_release_token_pool: ../../../contracts/solc/v0.8.26/LockReleaseTokenPool/LockReleaseTokenPool.abi ../../../contracts/solc/v0.8.26/LockReleaseTokenPool/LockReleaseTokenPool.bin b4624ddc3510fd6ff0c0d1061d95bef8802c7d857202de40ed08e77eca568b1c maybe_revert_message_receiver: ../../../contracts/solc/v0.8.26/MaybeRevertMessageReceiver/MaybeRevertMessageReceiver.abi ../../../contracts/solc/v0.8.26/MaybeRevertMessageReceiver/MaybeRevertMessageReceiver.bin 8465ccd6e86136682ff4f650ce7daa67edee77832466452bc2d8030fcd1456e0 message_hasher: ../../../contracts/solc/v0.8.26/MessageHasher/MessageHasher.abi ../../../contracts/solc/v0.8.26/MessageHasher/MessageHasher.bin 802372d2f3366bc909d75a1b1c319f0bc86f3f9c581630038a1a0922d2cacd42