@chainlink/functions-toolkit
Version:
An NPM package with collection of functions that can be used for working with Chainlink Functions.
1,275 lines • 136 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.FunctionsCoordinatorSource = void 0;
exports.FunctionsCoordinatorSource = {
_format: 'hh-sol-artifact-1',
contractName: 'FunctionsCoordinator',
sourceName: 'FunctionsCoordinator.sol',
abi: [
{
inputs: [
{
internalType: 'address',
name: 'router',
type: 'address',
},
{
components: [
{
internalType: 'uint32',
name: 'fulfillmentGasPriceOverEstimationBP',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'feedStalenessSeconds',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'gasOverheadBeforeCallback',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'gasOverheadAfterCallback',
type: 'uint32',
},
{
internalType: 'uint40',
name: 'minimumEstimateGasPriceWei',
type: 'uint40',
},
{
internalType: 'uint16',
name: 'maxSupportedRequestDataVersion',
type: 'uint16',
},
{
internalType: 'uint64',
name: 'fallbackUsdPerUnitLink',
type: 'uint64',
},
{
internalType: 'uint8',
name: 'fallbackUsdPerUnitLinkDecimals',
type: 'uint8',
},
{
internalType: 'uint224',
name: 'fallbackNativePerUnitLink',
type: 'uint224',
},
{
internalType: 'uint32',
name: 'requestTimeoutSeconds',
type: 'uint32',
},
{
internalType: 'uint16',
name: 'donFeeCentsUsd',
type: 'uint16',
},
{
internalType: 'uint16',
name: 'operationFeeCentsUsd',
type: 'uint16',
},
],
internalType: 'struct FunctionsBillingConfig',
name: 'config',
type: 'tuple',
},
{
internalType: 'address',
name: 'linkToNativeFeed',
type: 'address',
},
{
internalType: 'address',
name: 'linkToUsdFeed',
type: 'address',
},
],
stateMutability: 'nonpayable',
type: 'constructor',
},
{
inputs: [],
name: 'EmptyPublicKey',
type: 'error',
},
{
inputs: [],
name: 'InconsistentReportData',
type: 'error',
},
{
inputs: [],
name: 'InsufficientBalance',
type: 'error',
},
{
inputs: [],
name: 'InvalidCalldata',
type: 'error',
},
{
inputs: [
{
internalType: 'string',
name: 'message',
type: 'string',
},
],
name: 'InvalidConfig',
type: 'error',
},
{
inputs: [
{
internalType: 'int256',
name: 'linkWei',
type: 'int256',
},
],
name: 'InvalidLinkWeiPrice',
type: 'error',
},
{
inputs: [],
name: 'InvalidSubscription',
type: 'error',
},
{
inputs: [
{
internalType: 'int256',
name: 'usdLink',
type: 'int256',
},
],
name: 'InvalidUsdLinkPrice',
type: 'error',
},
{
inputs: [
{
internalType: 'address',
name: 'owner',
type: 'address',
},
],
name: 'MustBeSubOwner',
type: 'error',
},
{
inputs: [],
name: 'NoTransmittersSet',
type: 'error',
},
{
inputs: [],
name: 'OnlyCallableByRouter',
type: 'error',
},
{
inputs: [],
name: 'OnlyCallableByRouterOwner',
type: 'error',
},
{
inputs: [],
name: 'PaymentTooLarge',
type: 'error',
},
{
inputs: [
{
internalType: 'string',
name: 'message',
type: 'string',
},
],
name: 'ReportInvalid',
type: 'error',
},
{
inputs: [],
name: 'RouterMustBeSet',
type: 'error',
},
{
inputs: [],
name: 'UnauthorizedPublicKeyChange',
type: 'error',
},
{
inputs: [],
name: 'UnauthorizedSender',
type: 'error',
},
{
inputs: [],
name: 'UnsupportedRequestDataVersion',
type: 'error',
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: 'bytes32',
name: 'requestId',
type: 'bytes32',
},
],
name: 'CommitmentDeleted',
type: 'event',
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: 'uint32',
name: 'previousConfigBlockNumber',
type: 'uint32',
},
{
indexed: false,
internalType: 'bytes32',
name: 'configDigest',
type: 'bytes32',
},
{
indexed: false,
internalType: 'uint64',
name: 'configCount',
type: 'uint64',
},
{
indexed: false,
internalType: 'address[]',
name: 'signers',
type: 'address[]',
},
{
indexed: false,
internalType: 'address[]',
name: 'transmitters',
type: 'address[]',
},
{
indexed: false,
internalType: 'uint8',
name: 'f',
type: 'uint8',
},
{
indexed: false,
internalType: 'bytes',
name: 'onchainConfig',
type: 'bytes',
},
{
indexed: false,
internalType: 'uint64',
name: 'offchainConfigVersion',
type: 'uint64',
},
{
indexed: false,
internalType: 'bytes',
name: 'offchainConfig',
type: 'bytes',
},
],
name: 'ConfigSet',
type: 'event',
},
{
anonymous: false,
inputs: [
{
components: [
{
internalType: 'uint32',
name: 'fulfillmentGasPriceOverEstimationBP',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'feedStalenessSeconds',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'gasOverheadBeforeCallback',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'gasOverheadAfterCallback',
type: 'uint32',
},
{
internalType: 'uint40',
name: 'minimumEstimateGasPriceWei',
type: 'uint40',
},
{
internalType: 'uint16',
name: 'maxSupportedRequestDataVersion',
type: 'uint16',
},
{
internalType: 'uint64',
name: 'fallbackUsdPerUnitLink',
type: 'uint64',
},
{
internalType: 'uint8',
name: 'fallbackUsdPerUnitLinkDecimals',
type: 'uint8',
},
{
internalType: 'uint224',
name: 'fallbackNativePerUnitLink',
type: 'uint224',
},
{
internalType: 'uint32',
name: 'requestTimeoutSeconds',
type: 'uint32',
},
{
internalType: 'uint16',
name: 'donFeeCentsUsd',
type: 'uint16',
},
{
internalType: 'uint16',
name: 'operationFeeCentsUsd',
type: 'uint16',
},
],
indexed: false,
internalType: 'struct FunctionsBillingConfig',
name: 'config',
type: 'tuple',
},
],
name: 'ConfigUpdated',
type: 'event',
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: 'bytes32',
name: 'requestId',
type: 'bytes32',
},
{
indexed: true,
internalType: 'address',
name: 'requestingContract',
type: 'address',
},
{
indexed: false,
internalType: 'address',
name: 'requestInitiator',
type: 'address',
},
{
indexed: false,
internalType: 'uint64',
name: 'subscriptionId',
type: 'uint64',
},
{
indexed: false,
internalType: 'address',
name: 'subscriptionOwner',
type: 'address',
},
{
indexed: false,
internalType: 'bytes',
name: 'data',
type: 'bytes',
},
{
indexed: false,
internalType: 'uint16',
name: 'dataVersion',
type: 'uint16',
},
{
indexed: false,
internalType: 'bytes32',
name: 'flags',
type: 'bytes32',
},
{
indexed: false,
internalType: 'uint64',
name: 'callbackGasLimit',
type: 'uint64',
},
{
components: [
{
internalType: 'bytes32',
name: 'requestId',
type: 'bytes32',
},
{
internalType: 'address',
name: 'coordinator',
type: 'address',
},
{
internalType: 'uint96',
name: 'estimatedTotalCostJuels',
type: 'uint96',
},
{
internalType: 'address',
name: 'client',
type: 'address',
},
{
internalType: 'uint64',
name: 'subscriptionId',
type: 'uint64',
},
{
internalType: 'uint32',
name: 'callbackGasLimit',
type: 'uint32',
},
{
internalType: 'uint72',
name: 'adminFee',
type: 'uint72',
},
{
internalType: 'uint72',
name: 'donFee',
type: 'uint72',
},
{
internalType: 'uint40',
name: 'gasOverheadBeforeCallback',
type: 'uint40',
},
{
internalType: 'uint40',
name: 'gasOverheadAfterCallback',
type: 'uint40',
},
{
internalType: 'uint32',
name: 'timeoutTimestamp',
type: 'uint32',
},
],
indexed: false,
internalType: 'struct FunctionsResponse.Commitment',
name: 'commitment',
type: 'tuple',
},
],
name: 'OracleRequest',
type: 'event',
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: 'bytes32',
name: 'requestId',
type: 'bytes32',
},
{
indexed: false,
internalType: 'address',
name: 'transmitter',
type: 'address',
},
],
name: 'OracleResponse',
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: 'bytes32',
name: 'requestId',
type: 'bytes32',
},
{
indexed: false,
internalType: 'uint96',
name: 'juelsPerGas',
type: 'uint96',
},
{
indexed: false,
internalType: 'uint256',
name: 'l1FeeShareWei',
type: 'uint256',
},
{
indexed: false,
internalType: 'uint96',
name: 'callbackCostJuels',
type: 'uint96',
},
{
indexed: false,
internalType: 'uint72',
name: 'donFeeJuels',
type: 'uint72',
},
{
indexed: false,
internalType: 'uint72',
name: 'adminFeeJuels',
type: 'uint72',
},
{
indexed: false,
internalType: 'uint72',
name: 'operationFeeJuels',
type: 'uint72',
},
],
name: 'RequestBilled',
type: 'event',
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: 'bytes32',
name: 'configDigest',
type: 'bytes32',
},
{
indexed: false,
internalType: 'uint32',
name: 'epoch',
type: 'uint32',
},
],
name: 'Transmitted',
type: 'event',
},
{
inputs: [],
name: 'acceptOwnership',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [
{
internalType: 'bytes32',
name: 'requestId',
type: 'bytes32',
},
],
name: 'deleteCommitment',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [
{
internalType: 'uint64',
name: 'subscriptionId',
type: 'uint64',
},
{
internalType: 'bytes',
name: 'data',
type: 'bytes',
},
{
internalType: 'uint32',
name: 'callbackGasLimit',
type: 'uint32',
},
{
internalType: 'uint256',
name: 'gasPriceWei',
type: 'uint256',
},
],
name: 'estimateCost',
outputs: [
{
internalType: 'uint96',
name: '',
type: 'uint96',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'getAdminFeeJuels',
outputs: [
{
internalType: 'uint72',
name: '',
type: 'uint72',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'getConfig',
outputs: [
{
components: [
{
internalType: 'uint32',
name: 'fulfillmentGasPriceOverEstimationBP',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'feedStalenessSeconds',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'gasOverheadBeforeCallback',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'gasOverheadAfterCallback',
type: 'uint32',
},
{
internalType: 'uint40',
name: 'minimumEstimateGasPriceWei',
type: 'uint40',
},
{
internalType: 'uint16',
name: 'maxSupportedRequestDataVersion',
type: 'uint16',
},
{
internalType: 'uint64',
name: 'fallbackUsdPerUnitLink',
type: 'uint64',
},
{
internalType: 'uint8',
name: 'fallbackUsdPerUnitLinkDecimals',
type: 'uint8',
},
{
internalType: 'uint224',
name: 'fallbackNativePerUnitLink',
type: 'uint224',
},
{
internalType: 'uint32',
name: 'requestTimeoutSeconds',
type: 'uint32',
},
{
internalType: 'uint16',
name: 'donFeeCentsUsd',
type: 'uint16',
},
{
internalType: 'uint16',
name: 'operationFeeCentsUsd',
type: 'uint16',
},
],
internalType: 'struct FunctionsBillingConfig',
name: '',
type: 'tuple',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [
{
internalType: 'bytes',
name: '',
type: 'bytes',
},
],
name: 'getDONFeeJuels',
outputs: [
{
internalType: 'uint72',
name: '',
type: 'uint72',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'getDONPublicKey',
outputs: [
{
internalType: 'bytes',
name: '',
type: 'bytes',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'getOperationFeeJuels',
outputs: [
{
internalType: 'uint72',
name: '',
type: 'uint72',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'getThresholdPublicKey',
outputs: [
{
internalType: 'bytes',
name: '',
type: 'bytes',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'getUsdPerUnitLink',
outputs: [
{
internalType: 'uint256',
name: '',
type: 'uint256',
},
{
internalType: 'uint8',
name: '',
type: 'uint8',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'getWeiPerUnitLink',
outputs: [
{
internalType: 'uint256',
name: '',
type: 'uint256',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'latestConfigDetails',
outputs: [
{
internalType: 'uint32',
name: 'configCount',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'blockNumber',
type: 'uint32',
},
{
internalType: 'bytes32',
name: 'configDigest',
type: 'bytes32',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'latestConfigDigestAndEpoch',
outputs: [
{
internalType: 'bool',
name: 'scanLogs',
type: 'bool',
},
{
internalType: 'bytes32',
name: 'configDigest',
type: 'bytes32',
},
{
internalType: 'uint32',
name: 'epoch',
type: 'uint32',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [
{
internalType: 'address',
name: 'recipient',
type: 'address',
},
{
internalType: 'uint96',
name: 'amount',
type: 'uint96',
},
],
name: 'oracleWithdraw',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [],
name: 'oracleWithdrawAll',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [],
name: 'owner',
outputs: [
{
internalType: 'address',
name: '',
type: 'address',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [
{
internalType: 'address[]',
name: '_signers',
type: 'address[]',
},
{
internalType: 'address[]',
name: '_transmitters',
type: 'address[]',
},
{
internalType: 'uint8',
name: '_f',
type: 'uint8',
},
{
internalType: 'bytes',
name: '_onchainConfig',
type: 'bytes',
},
{
internalType: 'uint64',
name: '_offchainConfigVersion',
type: 'uint64',
},
{
internalType: 'bytes',
name: '_offchainConfig',
type: 'bytes',
},
],
name: 'setConfig',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [
{
internalType: 'bytes',
name: 'donPublicKey',
type: 'bytes',
},
],
name: 'setDONPublicKey',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [
{
internalType: 'bytes',
name: 'thresholdPublicKey',
type: 'bytes',
},
],
name: 'setThresholdPublicKey',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [
{
components: [
{
internalType: 'bytes',
name: 'data',
type: 'bytes',
},
{
internalType: 'bytes32',
name: 'flags',
type: 'bytes32',
},
{
internalType: 'address',
name: 'requestingContract',
type: 'address',
},
{
internalType: 'uint96',
name: 'availableBalance',
type: 'uint96',
},
{
internalType: 'uint72',
name: 'adminFee',
type: 'uint72',
},
{
internalType: 'uint64',
name: 'subscriptionId',
type: 'uint64',
},
{
internalType: 'uint64',
name: 'initiatedRequests',
type: 'uint64',
},
{
internalType: 'uint32',
name: 'callbackGasLimit',
type: 'uint32',
},
{
internalType: 'uint16',
name: 'dataVersion',
type: 'uint16',
},
{
internalType: 'uint64',
name: 'completedRequests',
type: 'uint64',
},
{
internalType: 'address',
name: 'subscriptionOwner',
type: 'address',
},
],
internalType: 'struct FunctionsResponse.RequestMeta',
name: 'request',
type: 'tuple',
},
],
name: 'startRequest',
outputs: [
{
components: [
{
internalType: 'bytes32',
name: 'requestId',
type: 'bytes32',
},
{
internalType: 'address',
name: 'coordinator',
type: 'address',
},
{
internalType: 'uint96',
name: 'estimatedTotalCostJuels',
type: 'uint96',
},
{
internalType: 'address',
name: 'client',
type: 'address',
},
{
internalType: 'uint64',
name: 'subscriptionId',
type: 'uint64',
},
{
internalType: 'uint32',
name: 'callbackGasLimit',
type: 'uint32',
},
{
internalType: 'uint72',
name: 'adminFee',
type: 'uint72',
},
{
internalType: 'uint72',
name: 'donFee',
type: 'uint72',
},
{
internalType: 'uint40',
name: 'gasOverheadBeforeCallback',
type: 'uint40',
},
{
internalType: 'uint40',
name: 'gasOverheadAfterCallback',
type: 'uint40',
},
{
internalType: 'uint32',
name: 'timeoutTimestamp',
type: 'uint32',
},
],
internalType: 'struct FunctionsResponse.Commitment',
name: 'commitment',
type: 'tuple',
},
],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [
{
internalType: 'address',
name: 'to',
type: 'address',
},
],
name: 'transferOwnership',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [
{
internalType: 'bytes32[3]',
name: 'reportContext',
type: 'bytes32[3]',
},
{
internalType: 'bytes',
name: 'report',
type: 'bytes',
},
{
internalType: 'bytes32[]',
name: 'rs',
type: 'bytes32[]',
},
{
internalType: 'bytes32[]',
name: 'ss',
type: 'bytes32[]',
},
{
internalType: 'bytes32',
name: 'rawVs',
type: 'bytes32',
},
],
name: 'transmit',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
{
inputs: [],
name: 'transmitters',
outputs: [
{
internalType: 'address[]',
name: '',
type: 'address[]',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [],
name: 'typeAndVersion',
outputs: [
{
internalType: 'string',
name: '',
type: 'string',
},
],
stateMutability: 'view',
type: 'function',
},
{
inputs: [
{
components: [
{
internalType: 'uint32',
name: 'fulfillmentGasPriceOverEstimationBP',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'feedStalenessSeconds',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'gasOverheadBeforeCallback',
type: 'uint32',
},
{
internalType: 'uint32',
name: 'gasOverheadAfterCallback',
type: 'uint32',
},
{
internalType: 'uint40',
name: 'minimumEstimateGasPriceWei',
type: 'uint40',
},
{
internalType: 'uint16',
name: 'maxSupportedRequestDataVersion',
type: 'uint16',
},
{
internalType: 'uint64',
name: 'fallbackUsdPerUnitLink',
type: 'uint64',
},
{
internalType: 'uint8',
name: 'fallbackUsdPerUnitLinkDecimals',
type: 'uint8',
},
{
internalType: 'uint224',
name: 'fallbackNativePerUnitLink',
type: 'uint224',
},
{
internalType: 'uint32',
name: 'requestTimeoutSeconds',
type: 'uint32',
},
{
internalType: 'uint16',
name: 'donFeeCentsUsd',
type: 'uint16',
},
{
internalType: 'uint16',
name: 'operationFeeCentsUsd',
type: 'uint16',
},
],
internalType: 'struct FunctionsBillingConfig',
name: 'config',
type: 'tuple',
},
],
name: 'updateConfig',
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
},
],
bytecode: '0x60a06040523480156200001157600080fd5b506040516200601f3803806200601f8339810160408190526200003491620004db565b83838383833380600081620000905760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000c357620000c3816200014e565b5050506001600160a01b038116620000ee57604051632530e88560e11b815260040160405180910390fd5b6001600160a01b03908116608052600c80546001600160601b03166c0100000000000000000000000085841602179055600d80546001600160a01b0319169183169190911790556200014083620001f9565b505050505050505062000742565b336001600160a01b03821603620001a85760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000087565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b620002036200039e565b80516008805460208401516040808601516060870151608088015160a089015160c08a015160e08b015160ff16600160f81b026001600160f81b036001600160401b03909216600160b81b02919091166001600160b81b0361ffff938416600160a81b0261ffff60a81b1964ffffffffff909616600160801b029590951666ffffffffffffff60801b1963ffffffff9788166c010000000000000000000000000263ffffffff60601b19998916680100000000000000000299909916600160401b600160801b03199b8916640100000000026001600160401b0319909d169e89169e909e179b909b17999099169b909b1795909517979097169590951717969096161792909217909255610100840151610120850151909316600160e01b026001600160e01b0390931692909217600955610140830151600a80546101608601518416620100000263ffffffff19919091169290931691909117919091179055517f2e2c8535dcc25459d519f2300c114d2d2128bf6399722d04eca078461a3bf33a906200039390839062000639565b60405180910390a150565b620003a8620003aa565b565b6000546001600160a01b03163314620003a85760405162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015260640162000087565b80516001600160a01b03811681146200041e57600080fd5b919050565b60405161018081016001600160401b03811182821017156200045557634e487b7160e01b600052604160045260246000fd5b60405290565b805163ffffffff811681146200041e57600080fd5b805164ffffffffff811681146200041e57600080fd5b805161ffff811681146200041e57600080fd5b80516001600160401b03811681146200041e57600080fd5b805160ff811681146200041e57600080fd5b80516001600160e01b03811681146200041e57600080fd5b6000806000808486036101e0811215620004f457600080fd5b620004ff8662000406565b945061018080601f19830112156200051657600080fd5b6200052062000423565b915062000530602088016200045b565b825262000540604088016200045b565b602083015262000553606088016200045b565b604083015262000566608088016200045b565b60608301526200057960a0880162000470565b60808301526200058c60c0880162000486565b60a08301526200059f60e0880162000499565b60c0830152610100620005b4818901620004b1565b60e0840152610120620005c9818a01620004c3565b828501526101409150620005df828a016200045b565b90840152610160620005f389820162000486565b8285015262000604838a0162000486565b90840152509093506200061d90506101a0860162000406565b91506200062e6101c0860162000406565b905092959194509250565b815163ffffffff1681526101808101602083015162000660602084018263ffffffff169052565b50604083015162000679604084018263ffffffff169052565b50606083015162000692606084018263ffffffff169052565b506080830151620006ac608084018264ffffffffff169052565b5060a0830151620006c360a084018261ffff169052565b5060c0830151620006df60c08401826001600160401b03169052565b5060e0830151620006f560e084018260ff169052565b50610100838101516001600160e01b0316908301526101208084015163ffffffff16908301526101408084015161ffff908116918401919091526101609384015116929091019190915290565b608051615897620007886000396000818161079c01528181610c7d01528181610f110152818161102701528181611b2d015281816129eb015261396901526158976000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c80638da5cb5b116100ee578063d227d24511610097578063e4ddcea611610071578063e4ddcea6146105d5578063f2f22ef1146105eb578063f2fde38b146105f3578063f6ea41f61461060657600080fd5b8063d227d2451461058a578063d328a91e146105ba578063e3d0e712146105c257600080fd5b8063b1dc65a4116100c8578063b1dc65a414610396578063ba9c924d146103a9578063c3f909d4146103bc57600080fd5b80638da5cb5b1461032e578063a631571e14610356578063afcb95d71461037657600080fd5b80637d4807871161015057806381f1b9381161012a57806381f1b938146102a657806381ff7048146102ae57806385b214cf1461031b57600080fd5b80637d480787146102765780637f15e1661461027e578063814118341461029157600080fd5b806366316d8d1161018157806366316d8d1461023c5780637212762f1461024f57806379ba50971461026e57600080fd5b8063083a5466146101a8578063181f5a77146101bd578063626f458c1461020f575b600080fd5b6101bb6101b6366004614010565b61060e565b005b6101f96040518060400160405280601c81526020017f46756e6374696f6e7320436f6f7264696e61746f722076312e332e300000000081525081565b60405161020691906140c0565b60405180910390f35b61022261021d36600461422d565b610663565b60405168ffffffffffffffffff9091168152602001610206565b6101bb61024a3660046142b4565b6106a0565b610257610859565b6040805192835260ff909116602083015201610206565b6101bb610a6c565b6101bb610b69565b6101bb61028c366004614010565b610d69565b610299610db9565b604051610206919061433e565b6101f9610e28565b6102f860015460025463ffffffff74010000000000000000000000000000000000000000830481169378010000000000000000000000000000000000000000000000009093041691565b6040805163ffffffff948516815293909216602084015290820152606001610206565b6101bb610329366004614351565b610ef9565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610206565b61036961036436600461436a565b610fb6565b60405161020691906144bf565b604080516001815260006020820181905291810191909152606001610206565b6101bb6103a4366004614513565b611247565b6101bb6103b736600461467e565b61185e565b61057d6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101829052610140810182905261016081019190915250604080516101808101825260085463ffffffff80821683526401000000008204811660208401526801000000000000000082048116938301939093526c01000000000000000000000000810483166060830152700100000000000000000000000000000000810464ffffffffff1660808301527501000000000000000000000000000000000000000000810461ffff90811660a084015277010000000000000000000000000000000000000000000000820467ffffffffffffffff1660c08401527f010000000000000000000000000000000000000000000000000000000000000090910460ff1660e08301526009547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff81166101008401527c01000000000000000000000000000000000000000000000000000000009004909216610120820152600a5480831661014083015262010000900490911661016082015290565b604051610206919061476a565b61059d610598366004614887565b611b29565b6040516bffffffffffffffffffffffff9091168152602001610206565b6101f9611c97565b6101bb6105d036600461498f565b611cee565b6105dd61286a565b604051908152602001610206565b6102226129ae565b6101bb610601366004614a5c565b6129d3565b6102226129e7565b610616612a78565b6000819003610651576040517f4f42be3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600f61065e828483614b0c565b505050565b600a5460009061069a9060649061067d9061ffff16612afb565b6106879190614c85565b6bffffffffffffffffffffffff16612b48565b92915050565b6106a8612be7565b806bffffffffffffffffffffffff166000036106e25750336000908152600b60205260409020546bffffffffffffffffffffffff1661073c565b336000908152600b60205260409020546bffffffffffffffffffffffff8083169116101561073c576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600b6020526040812080548392906107699084906bffffffffffffffffffffffff16614cb0565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506107be7f000000000000000000000000000000000000000000000000000000000000000090565b6040517f66316d8d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526bffffffffffffffffffffffff8416602483015291909116906366316d8d90604401600060405180830381600087803b15801561083d57600080fd5b505af1158015610851573d6000803e3d6000fd5b505050505050565b600080600080600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f09190614cf6565b5093505092505080426109039190614d46565b600854640100000000900463ffffffff161080156109305750600854640100000000900463ffffffff1615155b1561098d57505060085477010000000000000000000000000000000000000000000000810467ffffffffffffffff16937f010000000000000000000000000000000000000000000000000000000000000090910460ff1692509050565b600082136109cf576040517f56b22ab8