From e753637e01fabb8ea3760eb14204124c8d3b88e1 Mon Sep 17 00:00:00 2001 From: Ryan Hall Date: Tue, 26 Mar 2024 17:00:51 -0300 Subject: [PATCH] optimize transmit path wrt getNativeUSD() (#12598) --- .changeset/few-swans-wonder.md | 5 +++++ contracts/.changeset/six-donuts-reply.md | 5 +++++ .../src/v0.8/automation/dev/v2_3/AutomationRegistry2_3.sol | 3 ++- .../automation_registry_wrapper_2_3.go | 2 +- .../generated-wrapper-dependency-versions-do-not-edit.txt | 2 +- 5 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 .changeset/few-swans-wonder.md create mode 100644 contracts/.changeset/six-donuts-reply.md diff --git a/.changeset/few-swans-wonder.md b/.changeset/few-swans-wonder.md new file mode 100644 index 00000000000..d6c3be39653 --- /dev/null +++ b/.changeset/few-swans-wonder.md @@ -0,0 +1,5 @@ +--- +"chainlink": patch +--- + +small gas fix diff --git a/contracts/.changeset/six-donuts-reply.md b/contracts/.changeset/six-donuts-reply.md new file mode 100644 index 00000000000..a9da93964be --- /dev/null +++ b/contracts/.changeset/six-donuts-reply.md @@ -0,0 +1,5 @@ +--- +"@chainlink/contracts": patch +--- + +small gas fix diff --git a/contracts/src/v0.8/automation/dev/v2_3/AutomationRegistry2_3.sol b/contracts/src/v0.8/automation/dev/v2_3/AutomationRegistry2_3.sol index 42983d59910..2ea9debaf0a 100644 --- a/contracts/src/v0.8/automation/dev/v2_3/AutomationRegistry2_3.sol +++ b/contracts/src/v0.8/automation/dev/v2_3/AutomationRegistry2_3.sol @@ -176,6 +176,7 @@ contract AutomationRegistry2_3 is AutomationRegistryBase2_3, OCR2Abstract, Chain { BillingTokenPaymentParams memory billingTokenParams; + uint256 nativeUSD = _getNativeUSD(hotVars); for (uint256 i = 0; i < report.upkeepIds.length; i++) { if (upkeepTransmitInfo[i].earlyChecksPassed) { if (i == 0 || upkeepTransmitInfo[i].upkeep.billingToken != upkeepTransmitInfo[i - 1].upkeep.billingToken) { @@ -189,7 +190,7 @@ contract AutomationRegistry2_3 is AutomationRegistryBase2_3, OCR2Abstract, Chain l1CostWei: (l1Fee * upkeepTransmitInfo[i].calldataWeight) / transmitVars.totalCalldataWeight, fastGasWei: report.fastGasWei, linkUSD: report.linkUSD, - nativeUSD: _getNativeUSD(hotVars), + nativeUSD: nativeUSD, billingToken: upkeepTransmitInfo[i].upkeep.billingToken, billingTokenParams: billingTokenParams, isTransaction: true diff --git a/core/gethwrappers/generated/automation_registry_wrapper_2_3/automation_registry_wrapper_2_3.go b/core/gethwrappers/generated/automation_registry_wrapper_2_3/automation_registry_wrapper_2_3.go index 9e710d00e7d..60f92fe384f 100644 --- a/core/gethwrappers/generated/automation_registry_wrapper_2_3/automation_registry_wrapper_2_3.go +++ b/core/gethwrappers/generated/automation_registry_wrapper_2_3/automation_registry_wrapper_2_3.go @@ -64,7 +64,7 @@ type AutomationRegistryBase23OnchainConfig struct { var AutomationRegistryMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"contractAutomationRegistryLogicA2_3\",\"name\":\"logicA\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ArrayHasNoEntries\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotCancel\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CheckDataExceedsLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ConfigDigestMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateEntry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitCanOnlyIncrease\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitOutsideRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfFaultyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSignatures\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectNumberOfSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDataLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFeed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecipient\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReport\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTransmitter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTrigger\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTriggerType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MigrationNotPermitted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustSettleOffchain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustSettleOnchain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveSigners\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyActiveTransmitters\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByLINKToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByOwnerOrRegistrar\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByProposedPayee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableByUpkeepPrivilegeManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyFinanceAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySimulatedBackend\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyUnpausedUpkeep\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ParameterLengthError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RegistryPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RepeatedTransmitter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"TargetCheckReverted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyOracles\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TranscoderNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepCancelled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotCanceled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpkeepNotNeeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValueNotChanged\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"privilegeConfig\",\"type\":\"bytes\"}],\"name\":\"AdminPrivilegeConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"gasFeePPB\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"flatFeeMilliCents\",\"type\":\"uint24\"}],\"indexed\":false,\"internalType\":\"structAutomationRegistryBase2_3.BillingOverrides\",\"name\":\"overrides\",\"type\":\"tuple\"}],\"name\":\"BillingConfigOverridden\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"BillingConfigOverrideRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"gasFeePPB\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"flatFeeMilliCents\",\"type\":\"uint24\"},{\"internalType\":\"contractAggregatorV3Interface\",\"name\":\"priceFeed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fallbackPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"minSpend\",\"type\":\"uint96\"}],\"indexed\":false,\"internalType\":\"structAutomationRegistryBase2_3.BillingConfig\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"BillingConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"CancelledUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newModule\",\"type\":\"address\"}],\"name\":\"ChainSpecificModuleUpdated\",\"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\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"dedupKey\",\"type\":\"bytes32\"}],\"name\":\"DedupKeyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assetAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"FeesWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"FundsAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"FundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"InsufficientFundsUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"payees\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"payments\",\"type\":\"uint256[]\"}],\"name\":\"NOPsSettledOffchain\",\"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\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"payees\",\"type\":\"address[]\"}],\"name\":\"PayeesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"PayeeshipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"transmitter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payee\",\"type\":\"address\"}],\"name\":\"PaymentWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"ReorgedUpkeepReport\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"StaleUpkeepReport\",\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"UpkeepAdminTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"atBlockHeight\",\"type\":\"uint64\"}],\"name\":\"UpkeepCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"newCheckData\",\"type\":\"bytes\"}],\"name\":\"UpkeepCheckDataSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"gasLimit\",\"type\":\"uint96\"}],\"name\":\"UpkeepGasLimitSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"UpkeepMigrated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepOffchainConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"totalPayment\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasOverhead\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trigger\",\"type\":\"bytes\"}],\"name\":\"UpkeepPerformed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"privilegeConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepPrivilegeConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startingBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"importedFrom\",\"type\":\"address\"}],\"name\":\"UpkeepReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"performGas\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"UpkeepRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"triggerConfig\",\"type\":\"bytes\"}],\"name\":\"UpkeepTriggerConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"UpkeepUnpaused\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fallbackTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onTokenTransfer\",\"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\":\"onchainConfigBytes\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"checkGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxPerformGas\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxCheckDataSize\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"transcoder\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"reorgProtectionEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint24\",\"name\":\"stalenessSeconds\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"maxPerformDataSize\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxRevertDataSize\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"upkeepPrivilegeManager\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"gasCeilingMultiplier\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"financeAdmin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fallbackGasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fallbackLinkPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fallbackNativePrice\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"registrars\",\"type\":\"address[]\"},{\"internalType\":\"contractIChainModule\",\"name\":\"chainModule\",\"type\":\"address\"}],\"internalType\":\"structAutomationRegistryBase2_3.OnchainConfig\",\"name\":\"onchainConfig\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"},{\"internalType\":\"contractIERC20[]\",\"name\":\"billingTokens\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"gasFeePPB\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"flatFeeMilliCents\",\"type\":\"uint24\"},{\"internalType\":\"contractAggregatorV3Interface\",\"name\":\"priceFeed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fallbackPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"minSpend\",\"type\":\"uint96\"}],\"internalType\":\"structAutomationRegistryBase2_3.BillingConfig[]\",\"name\":\"billingConfigs\",\"type\":\"tuple[]\"}],\"name\":\"setConfigTypeSafe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"}],\"name\":\"simulatePerformUpkeep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"gasUsed\",\"type\":\"uint256\"}],\"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\":\"rawReport\",\"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\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x6101806040523480156200001257600080fd5b50604051620064f9380380620064f983398101604081905262000035916200062f565b80816001600160a01b031663ca30e6036040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009b91906200062f565b826001600160a01b031663226cf83c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200010091906200062f565b836001600160a01b031663614486af6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200013f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016591906200062f565b846001600160a01b0316636709d0e56040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ca91906200062f565b856001600160a01b0316635425d8ac6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000209573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022f91906200062f565b866001600160a01b031663a08714c06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029491906200062f565b876001600160a01b031663c5b964e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f9919062000656565b886001600160a01b031663ac4dc59a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000338573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035e91906200062f565b3380600081620003b55760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620003e857620003e8816200056b565b5050506001600160a01b0380891660805287811660a05286811660c05285811660e052848116610100528316610120526025805483919060ff19166001838181111562000439576200043962000679565b0217905550806001600160a01b0316610140816001600160a01b03168152505060c0516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200049a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c091906200068f565b60ff1660a0516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000504573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200052a91906200068f565b60ff16146200054c576040516301f86e1760e41b815260040160405180910390fd5b5050506001600160a01b039095166101605250620006b4945050505050565b336001600160a01b03821603620005c55760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401620003ac565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6001600160a01b03811681146200062c57600080fd5b50565b6000602082840312156200064257600080fd5b81516200064f8162000616565b9392505050565b6000602082840312156200066957600080fd5b8151600281106200064f57600080fd5b634e487b7160e01b600052602160045260246000fd5b600060208284031215620006a257600080fd5b815160ff811681146200064f57600080fd5b60805160a05160c05160e05161010051610120516101405161016051615dc2620007376000396000818160c9015261017c015260005050600061226a015260005050600050506000613b7301526000505060008181610df301528181610f010152818161102c015281816110760152818161176f01526133680152615dc26000f3fe6080604052600436106100c75760003560e01c8063a4c0ed3611610074578063b1dc65a41161004e578063b1dc65a414610338578063e3d0e71214610358578063f2fde38b14610378576100c7565b8063a4c0ed361461029b578063aed2e929146102bb578063afcb95d7146102f2576100c7565b80637bee169d116100a55780637bee169d146101d657806381ff7048146101f65780638da5cb5b14610270576100c7565b8063181f5a771461010e578063349e8cca1461016d57806379ba5097146101c1575b7f00000000000000000000000000000000000000000000000000000000000000003660008037600080366000845af43d6000803e808015610107573d6000f35b3d6000fd5b005b34801561011a57600080fd5b506101576040518060400160405280601881526020017f4175746f6d6174696f6e526567697374727920322e332e30000000000000000081525081565b6040516101649190614769565b60405180910390f35b34801561017957600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610164565b3480156101cd57600080fd5b5061010c610398565b3480156101e257600080fd5b5061010c6101f1366004614cde565b61049a565b34801561020257600080fd5b5061024d60175460135463ffffffff74010000000000000000000000000000000000000000830481169378010000000000000000000000000000000000000000000000009093041691565b6040805163ffffffff948516815293909216602084015290820152606001610164565b34801561027c57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661019c565b3480156102a757600080fd5b5061010c6102b6366004614e3f565b610ddb565b3480156102c757600080fd5b506102db6102d6366004614e9b565b6110f7565b604080519215158352602083019190915201610164565b3480156102fe57600080fd5b50601354601454604080516000815260208101939093526c0100000000000000000000000090910463ffffffff1690820152606001610164565b34801561034457600080fd5b5061010c610353366004614f2c565b6112a2565b34801561036457600080fd5b5061010c610373366004614fe3565b611583565b34801561038457600080fd5b5061010c6103933660046150b0565b6115bd565b60015473ffffffffffffffffffffffffffffffffffffffff16331461041e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6104a26115d1565b601f885111156104de576040517f25d0209c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8560ff1660000361051b576040517fe77dba5600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8651885114158061053a5750610532866003615103565b60ff16885111155b15610571576040517f1d2d1c5800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80518251146105ac576040517fcf54c06a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105b68282611654565b6105c08888611abc565b604051806101200160405280601460000160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600063ffffffff1681526020018660a0015162ffffff16815260200186610120015161ffff1681526020018760ff168152602001601460000160169054906101000a900460ff1615158152602001601460000160179054906101000a900460ff1615158152602001866080015115158152602001866101e0015173ffffffffffffffffffffffffffffffffffffffff16815250601460008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160106101000a81548162ffffff021916908362ffffff16021790555060608201518160000160136101000a81548161ffff021916908361ffff16021790555060808201518160000160156101000a81548160ff021916908360ff16021790555060a08201518160000160166101000a81548160ff02191690831515021790555060c08201518160000160176101000a81548160ff02191690831515021790555060e08201518160000160186101000a81548160ff0219169083151502179055506101008201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050604051806101600160405280866060015173ffffffffffffffffffffffffffffffffffffffff168152602001866000015163ffffffff168152602001866020015163ffffffff1681526020016016600001601c9054906101000a900463ffffffff1663ffffffff16815260200186610100015173ffffffffffffffffffffffffffffffffffffffff168152602001601660010160149054906101000a900463ffffffff1663ffffffff168152602001601660010160189054906101000a900463ffffffff1663ffffffff168152602001866040015163ffffffff16815260200186610140015173ffffffffffffffffffffffffffffffffffffffff1681526020018660c0015163ffffffff1681526020018660e0015163ffffffff16815250601660008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160186101000a81548163ffffffff021916908363ffffffff160217905550606082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160010160146101000a81548163ffffffff021916908363ffffffff16021790555060c08201518160010160186101000a81548163ffffffff021916908363ffffffff16021790555060e082015181600101601c6101000a81548163ffffffff021916908363ffffffff1602179055506101008201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101208201518160020160146101000a81548163ffffffff021916908363ffffffff1602179055506101408201518160020160186101000a81548163ffffffff021916908363ffffffff160217905550905050846101600151601981905550846101800151601a81905550846101a00151601b819055506000601660010160189054906101000a900463ffffffff169050856101e0015173ffffffffffffffffffffffffffffffffffffffff166357e871e76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bea919061511f565b601780547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000063ffffffff9384160217808255600192601491610c6191859174010000000000000000000000000000000000000000900416615138565b92506101000a81548163ffffffff021916908363ffffffff160217905550600086604051602001610c9291906151a6565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152919052601754909150610cf7904690309074010000000000000000000000000000000000000000900463ffffffff168d8d8d878d8d61217d565b601355600960008181610d0a8282614650565b5050505060005b876101c0015151811015610d6457610d51886101c001518281518110610d3957610d3961532c565b6020026020010151600961222790919063ffffffff16565b5080610d5c8161535b565b915050610d11565b506013546017546040517f1591690b8638f5fb2dbec82ac741805ac5da8b45dc5263f4875b0496fdce4e0592610dc79286927401000000000000000000000000000000000000000090910463ffffffff16908f908f908f9089908f908f90615393565b60405180910390a150505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610e4a576040517fc8bad78d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208114610e84576040517fdfe9309000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e9282840184615429565b6000818152600460205260409020549091506601000000000000900463ffffffff90811614610eed576040517f9c0083a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600460205260409020600201547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff908116911614610f71576040517fc1ab6dc100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260046020526040902060010154610fb090859070010000000000000000000000000000000090046bffffffffffffffffffffffff16615442565b600082815260046020908152604080832060010180546bffffffffffffffffffffffff95909516700100000000000000000000000000000000027fffffffff000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016825260219052205461105f908590615467565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660009081526021602090815260409182902093909355516bffffffffffffffffffffffff871681529087169183917fafd24114486da8ebfc32f3626dada8863652e187461aa74d4bfa734891506203910160405180910390a35050505050565b600080611102612252565b601454760100000000000000000000000000000000000000000000900460ff1615611159576040517f24522f3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600085815260046020908152604091829020825161012081018452815460ff8082161515835261010080830490911615158386015262010000820463ffffffff90811684880181905266010000000000008404821660608601526a010000000000000000000090930473ffffffffffffffffffffffffffffffffffffffff9081166080860181905260018701546fffffffffffffffffffffffffffffffff811660a088015270010000000000000000000000000000000081046bffffffffffffffffffffffff1660c08801527c0100000000000000000000000000000000000000000000000000000000900490921660e0860152600290950154909416908301528451601f890185900485028101850190955287855290936112959389908990819084018382808284376000920191909152506122c192505050565b9097909650945050505050565b60005a60408051610120810182526014546bffffffffffffffffffffffff8116825263ffffffff6c01000000000000000000000000820416602083015262ffffff7001000000000000000000000000000000008204169282019290925261ffff730100000000000000000000000000000000000000830416606082015260ff75010000000000000000000000000000000000000000008304811660808301527601000000000000000000000000000000000000000000008304811615801560a08401527701000000000000000000000000000000000000000000000084048216151560c0840152780100000000000000000000000000000000000000000000000090930416151560e082015260155473ffffffffffffffffffffffffffffffffffffffff16610100820152919250611406576040517f24522f3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600b602052604090205460ff1661144f576040517f1099ed7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6013548a351461148b576040517fdfdcf8e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b608081015161149b90600161547a565b60ff16861415806114ac5750858414155b156114e3576040517f0244f71a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114f38a8a8a8a8a8a8a8a6124dc565b60006114ff8a8a612745565b905060208b0135600881901c63ffffffff1661151c8484876127fe565b836020015163ffffffff168163ffffffff16111561157457601480547fffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff166c0100000000000000000000000063ffffffff8416021790555b50505050505050505050505050565b60008060008580602001905181019061159c9190615651565b9250925092506115b2898989868989888861049a565b505050505050505050565b6115c56115d1565b6115ce816133de565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314611652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610415565b565b60005b6024548110156117125760226000602483815481106116785761167861532c565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001812080547fffffffffff000000000000000000000000000000000000000000000000000000168155600181019190915560020180547fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001690558061170a8161535b565b915050611657565b5061171f60246000614650565b60255460ff1660005b8351811015611ab65760008482815181106117455761174561532c565b6020026020010151905060008483815181106117635761176361532c565b602002602001015190507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156117d9575060018460018111156117d7576117d76157fc565b145b15611810576040517fc1ab6dc100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216158061184b5750604081015173ffffffffffffffffffffffffffffffffffffffff16155b15611882576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff828116600090815260226020526040902054670100000000000000900416156118ec576040517f357d0cc400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6024805460018082019092557f7cd332d19b93bcabe3cce7ca0c18a052f57e5fd03b4758a09f30f5ddc4b22ec40180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8581169182179092556000818152602260209081526040918290208651815488840180518a8701805163ffffffff9095167fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000909416841764010000000062ffffff93841602177fffffffffff0000000000000000000000000000000000000000ffffffffffffff16670100000000000000958b16959095029490941785556060808c0180519b87019b909b556080808d018051600290980180547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff998a1617905589519586529351909216968401969096529251909716948101949094529551918301919091529251909216928201929092527f720a5849025dc4fd0061aed1bb30efd713cde64ce7f8d807953ecca27c8f143c9060a00160405180910390a250508080611aae9061535b565b915050611728565b50505050565b60005b600e54811015611b3357611b20600e8281548110611adf57611adf61532c565b600091825260209091200154601454600e5473ffffffffffffffffffffffffffffffffffffffff909216916bffffffffffffffffffffffff909116906134d3565b5080611b2b8161535b565b915050611abf565b5060255460009060ff16815b600e54811015611ca457600e8181548110611b5c57611b5c61532c565b6000918252602082200154600d805473ffffffffffffffffffffffffffffffffffffffff9092169550600c929184908110611b9957611b9961532c565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff9081168452838201949094526040928301822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001690559286168152600b909252902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556001826001811115611c3b57611c3b6157fc565b148015611c80575073ffffffffffffffffffffffffffffffffffffffff83166000908152600b60205260409020546201000090046bffffffffffffffffffffffff1615155b15611c9257611c90600f84612227565b505b80611c9c8161535b565b915050611b3f565b50611cb1600d6000614650565b611cbd600e6000614650565b6040805160808101825260008082526020820181905291810182905260608101829052905b855181101561214d57600c6000878381518110611d0157611d0161532c565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1615611d6c576040517f77cea0fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16868281518110611d9657611d9661532c565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603611deb576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180604001604052806001151581526020018260ff16815250600c6000888481518110611e1c57611e1c61532c565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260400160002082518154939092015160ff16610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909316929092171790558451859082908110611ec457611ec461532c565b60200260200101519350600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611f34576040517f58a70a0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166000908152600b60209081526040918290208251608081018452905460ff80821615801584526101008304909116938301939093526bffffffffffffffffffffffff6201000082048116948301949094526e01000000000000000000000000000090049092166060830152909250611fef576040517f6a7281ad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180835260ff80831660208086019182526014546bffffffffffffffffffffffff9081166060880190815273ffffffffffffffffffffffffffffffffffffffff8a166000908152600b909352604092839020885181549551948a0151925184166e010000000000000000000000000000027fffffffffffff000000000000000000000000ffffffffffffffffffffffffffff939094166201000002929092167fffffffffffff000000000000000000000000000000000000000000000000ffff94909616610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000090951694909417179190911692909217919091179055836001811115612129576121296157fc565b0361213b57612139600f856136db565b505b806121458161535b565b915050611ce2565b50845161216190600d90602088019061466e565b50835161217590600e90602087019061466e565b505050505050565b6000808a8a8a8a8a8a8a8a8a6040516020016121a19998979695949392919061582b565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905280516020909101207dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e01000000000000000000000000000000000000000000000000000000000000179b9a5050505050505050505050565b60006122498373ffffffffffffffffffffffffffffffffffffffff84166136fd565b90505b92915050565b3273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611652576040517fb60ac5db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601454600090819077010000000000000000000000000000000000000000000000900460ff161561231e576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601480547fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000001790556040517f4585e33b0000000000000000000000000000000000000000000000000000000090612393908590602401614769565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290517f79188d1600000000000000000000000000000000000000000000000000000000815290935073ffffffffffffffffffffffffffffffffffffffff8616906379188d169061246690879087906004016158c0565b60408051808303816000875af1158015612484573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a891906158d9565b601480547fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff16905590969095509350505050565b600087876040516124ee929190615907565b604051908190038120612505918b90602001615917565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201208383019092526000808452908301819052909250906000805b888110156126dc576001858783602081106125715761257161532c565b61257e91901a601b61547a565b8c8c858181106125905761259061532c565b905060200201358b8b868181106125a9576125a961532c565b90506020020135604051600081526020016040526040516125e6949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015612608573d6000803e3d6000fd5b5050604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081015173ffffffffffffffffffffffffffffffffffffffff81166000908152600c602090815290849020838501909452925460ff80821615158085526101009092041693830193909352909550935090506126b6576040517f0f4c073700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826020015160080260ff166001901b8401935080806126d49061535b565b915050612554565b50827e01010101010101010101010101010101010101010101010101010101010101841614612737576040517fc103be2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050505050505050565b61277e6040518060c001604052806000815260200160008152602001606081526020016060815260200160608152602001606081525090565b600061278c83850185615a08565b60408101515160608201515191925090811415806127af57508082608001515114155b806127bf5750808260a001515114155b156127f6576040517fb55ac75400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b509392505050565b600082604001515167ffffffffffffffff81111561281e5761281e61477c565b6040519080825280602002602001820160405280156128ea57816020015b6040805161020081018252600060e08201818152610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e0830182905282526020808301829052928201819052606082018190526080820181905260a0820181905260c082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161283c5790505b50905060006040518060800160405280600061ffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff16815260200160008152509050600085610100015173ffffffffffffffffffffffffffffffffffffffff166357e871e76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612988573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ac919061511f565b9050600086610100015173ffffffffffffffffffffffffffffffffffffffff166318b8f6136040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a24919061511f565b905060005b866040015151811015612eb4576004600088604001518381518110612a5057612a5061532c565b6020908102919091018101518252818101929092526040908101600020815161012081018352815460ff8082161515835261010080830490911615159583019590955263ffffffff620100008204811694830194909452660100000000000081048416606083015273ffffffffffffffffffffffffffffffffffffffff6a01000000000000000000009091048116608083015260018301546fffffffffffffffffffffffffffffffff811660a08401526bffffffffffffffffffffffff70010000000000000000000000000000000082041660c08401527c0100000000000000000000000000000000000000000000000000000000900490931660e0820152600290910154909116918101919091528551869083908110612b7357612b7361532c565b602002602001015160000181905250612ba887604001518281518110612b9b57612b9b61532c565b602002602001015161374c565b858281518110612bba57612bba61532c565b6020026020010151606001906001811115612bd757612bd76157fc565b90816001811115612bea57612bea6157fc565b81525050612c4e87604001518281518110612c0757612c0761532c565b60200260200101518489608001518481518110612c2657612c2661532c565b6020026020010151888581518110612c4057612c4061532c565b60200260200101518c6137f7565b868381518110612c6057612c6061532c565b6020026020010151602001878481518110612c7d57612c7d61532c565b602002602001015160c0018281525082151515158152505050848181518110612ca857612ca861532c565b60200260200101516020015115612cd857600184600001818151612ccc9190615af5565b61ffff16905250612cdd565b612ea2565b612d43858281518110612cf257612cf261532c565b6020026020010151600001516080015188606001518381518110612d1857612d1861532c565b60200260200101518960a001518481518110612d3657612d3661532c565b60200260200101516122c1565b868381518110612d5557612d5561532c565b6020026020010151604001878481518110612d7257612d7261532c565b6020026020010151608001828152508215151515815250505087608001516001612d9c919061547a565b612daa9060ff166040615b10565b6103a48860a001518381518110612dc357612dc361532c565b602002602001015151612dd69190615467565b612de09190615467565b858281518110612df257612df261532c565b602002602001015160a0018181525050848181518110612e1457612e1461532c565b602002602001015160a0015184606001818151612e319190615467565b9052508451859082908110612e4857612e4861532c565b60200260200101516080015186612e5f9190615b27565b9550612ea287604001518281518110612e7a57612e7a61532c565b602002602001015184878481518110612e9557612e9561532c565b6020026020010151613916565b80612eac8161535b565b915050612a29565b50825161ffff16600003612ecb5750505050505050565b6155f0612ed9366010615b10565b5a612ee49088615b27565b612eee9190615467565b612ef89190615467565b8351909550611b5890612f0f9061ffff1687615b69565b612f199190615467565b604080516060810182526000808252602082018190529181018290529196505b87604001515181101561327857858181518110612f5857612f5861532c565b6020026020010151602001511561326657801580612ff0575085612f7d600183615b27565b81518110612f8d57612f8d61532c565b602002602001015160000151610100015173ffffffffffffffffffffffffffffffffffffffff16868281518110612fc657612fc661532c565b602002602001015160000151610100015173ffffffffffffffffffffffffffffffffffffffff1614155b15613024576130218987838151811061300b5761300b61532c565b6020026020010151600001516101000151613a1b565b91505b600061314a8a6040518061012001604052808a86815181106130485761304861532c565b60200260200101516080015181526020018b815260200189606001518b87815181106130765761307661532c565b602002602001015160a001518961308d9190615b10565b6130979190615b69565b81526020018c6000015181526020018c6020015181526020016130b98e613b6c565b81526020018a86815181106130d0576130d061532c565b602002602001015160000151610100015173ffffffffffffffffffffffffffffffffffffffff168152602001868152602001600115158152508b60400151858151811061311f5761311f61532c565b60200260200101518a86815181106131395761313961532c565b602002602001015160000151613c5d565b90508060600151866040018181516131629190615442565b6bffffffffffffffffffffffff169052506040810151602087018051613189908390615442565b6bffffffffffffffffffffffff1690525086518790839081106131ae576131ae61532c565b6020026020010151604001511515896040015183815181106131d2576131d261532c565b60200260200101517fad8cc9579b21dfe2c2f6ea35ba15b656e46b4f5b0cb424f52739b8ce5cac9c5b8360600151846040015161320f9190615442565b8a86815181106132215761322161532c565b6020026020010151608001518c8e6080015188815181106132445761324461532c565b602002602001015160405161325c9493929190615b7d565b60405180910390a3505b806132708161535b565b915050612f39565b5050602083810151336000908152600b909252604090912080546002906132b49084906201000090046bffffffffffffffffffffffff16615442565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508260400151601460000160008282829054906101000a90046bffffffffffffffffffffffff166133129190615442565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550826040015183602001516133549190615442565b6bffffffffffffffffffffffff16602160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133d09190615467565b909155505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff82160361345d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610415565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b602090815260408083208151608081018352905460ff80821615801584526101008304909116948301949094526bffffffffffffffffffffffff6201000082048116938301939093526e01000000000000000000000000000090049091166060820152906136cf57600081606001518561356b9190615bba565b905060006135798583615bdf565b9050808360400181815161358d9190615442565b6bffffffffffffffffffffffff169052506135a88582615c0a565b836060018181516135b99190615442565b6bffffffffffffffffffffffff90811690915273ffffffffffffffffffffffffffffffffffffffff89166000908152600b602090815260409182902087518154928901519389015160608a015186166e010000000000000000000000000000027fffffffffffff000000000000000000000000ffffffffffffffffffffffffffff919096166201000002167fffffffffffff000000000000000000000000000000000000000000000000ffff60ff95909516610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909416939093171792909216179190911790555050505b60400151949350505050565b60006122498373ffffffffffffffffffffffffffffffffffffffff8416613f59565b60008181526001830160205260408120546137445750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561224c565b50600061224c565b6000818160045b600f8110156137d9577fff0000000000000000000000000000000000000000000000000000000000000082168382602081106137915761379161532c565b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146137c757506000949350505050565b806137d18161535b565b915050613753565b5081600f1a60018111156137ef576137ef6157fc565b949350505050565b600080808085606001516001811115613812576138126157fc565b0361383857613824888888888861404c565b6138335760009250905061390c565b6138b0565b600185606001516001811115613850576138506157fc565b0361387e576000613863898989886141d6565b9250905080613878575060009250905061390c565b506138b0565b6040517ff2b2d41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84516060015163ffffffff16871061390557877fc3237c8807c467c1b39b8d0395eff077313e691bf0a7388106792564ebfd5636876040516138f29190614769565b60405180910390a260009250905061390c565b6001925090505b9550959350505050565b60008160600151600181111561392e5761392e6157fc565b0361399257600083815260046020526040902060010180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff851602179055505050565b6001816060015160018111156139aa576139aa6157fc565b03613a165760c08101805160009081526008602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055915191517fa4a4e334c0e330143f9437484fe516c13bc560b86b5b0daf58e7084aaac228f29190a25b505050565b604080516060810182526000808252602080830182815283850183905273ffffffffffffffffffffffffffffffffffffffff868116845260229092528483208054640100000000810462ffffff1690925263ffffffff8216855285517ffeaf968c00000000000000000000000000000000000000000000000000000000815295519495909484936701000000000000009093049092169163feaf968c9160048082019260a0929091908290030181865afa158015613add573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b019190615c54565b50935050925050600082131580613b1757508042105b80613b4757506000866040015162ffffff16118015613b475750613b3b8142615b27565b866040015162ffffff16105b15613b5b5760018301546040850152613b63565b604084018290525b50505092915050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015613bdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c009190615c54565b50935050925050600082131580613c1657508042105b80613c4657506000846040015162ffffff16118015613c465750613c3a8142615b27565b846040015162ffffff16105b15613c56575050601b5492915050565b5092915050565b604080516080810182526000808252602080830182905292820181905260608201529082015115613cd65760008381526023602090815260409182902082518084019093525463ffffffff811680845262ffffff640100000000909204821693830193845260e088018051919091529251925192169101525b6000613ce286866143e3565b60c0840151602082015182519293509091600091613cff91615442565b905082600001516bffffffffffffffffffffffff16826bffffffffffffffffffffffff161015613d8457819050613d6587608001518860e0015160400151846bffffffffffffffffffffffff16613d569190615b10565b613d609190615b69565b6145ae565b6bffffffffffffffffffffffff16604084015260006060840152613e10565b806bffffffffffffffffffffffff16826bffffffffffffffffffffffff161015613e1057819050613dfc83604001516bffffffffffffffffffffffff1688608001518960e0015160400151856bffffffffffffffffffffffff16613de89190615b10565b613df29190615b69565b613d609190615b27565b6bffffffffffffffffffffffff1660608401525b60008681526004602052604090206001018054829190601090613e5690849070010000000000000000000000000000000090046bffffffffffffffffffffffff16615bba565b82546101009290920a6bffffffffffffffffffffffff81810219909316918316021790915560008881526004602052604081206001018054928516935091613eb19084906fffffffffffffffffffffffffffffffff16615ca4565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550806bffffffffffffffffffffffff16602160008960c0015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613f489190615b27565b909155509298975050505050505050565b60008181526001830160205260408120548015614042576000613f7d600183615b27565b8554909150600090613f9190600190615b27565b9050818114613ff6576000866000018281548110613fb157613fb161532c565b9060005260206000200154905080876000018481548110613fd457613fd461532c565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061400757614007615ccd565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061224c565b600091505061224c565b600080848060200190518101906140639190615cfc565b845160e00151815191925063ffffffff908116911610156140c057867f405288ea7be309e16cfdf481367f90a413e1d4634fcdaf8966546db9b93012e8866040516140ae9190614769565b60405180910390a260009150506141cd565b8260e00151801561418057506020810151158015906141805750602081015161010084015182516040517f85df51fd00000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015273ffffffffffffffffffffffffffffffffffffffff909116906385df51fd90602401602060405180830381865afa158015614159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061417d919061511f565b14155b806141925750805163ffffffff168611155b156141c757867f6aa7f60c176da7af894b384daea2249497448137f5943c1237ada8bc92bdc301866040516140ae9190614769565b60019150505b95945050505050565b6000806000848060200190518101906141ef9190615d54565b905060008782600001518360200151846040015160405160200161425194939291909384526020840192909252604083015260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016606082015260640190565b6040516020818303038152906040528051906020012090508460e00151801561432c575060808201511580159061432c5750608082015161010086015160608401516040517f85df51fd00000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015273ffffffffffffffffffffffffffffffffffffffff909116906385df51fd90602401602060405180830381865afa158015614305573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614329919061511f565b14155b80614341575086826060015163ffffffff1610155b1561438b57877f6aa7f60c176da7af894b384daea2249497448137f5943c1237ada8bc92bdc301876040516143769190614769565b60405180910390a26000935091506143da9050565b60008181526008602052604090205460ff16156143d257877f405288ea7be309e16cfdf481367f90a413e1d4634fcdaf8966546db9b93012e8876040516143769190614769565b600193509150505b94509492505050565b6040805160808101825260008082526020820181905291810182905260608101919091526000836060015161ffff1683606001516144219190615b10565b905082610100015180156144345750803a105b1561443c57503a5b60008360a0015184604001518560200151866000015161445c9190615467565b6144669085615b10565b6144709190615467565b61447a9190615b10565b90506144938460e001516040015182613d609190615b69565b6bffffffffffffffffffffffff16835260808401516144b690613d609083615b69565b6bffffffffffffffffffffffff16604084015260e0840151602001516000906144ed9062ffffff16683635c9adc5dea00000615b10565b9050600081633b9aca008760a001518860e001516000015163ffffffff1689604001518a60000151896145209190615b10565b61452a9190615467565b6145349190615b10565b61453e9190615b10565b6145489190615b69565b6145529190615467565b905061456b8660e001516040015182613d609190615b69565b6bffffffffffffffffffffffff166020860152608086015161459190613d609083615b69565b6bffffffffffffffffffffffff1660608601525050505092915050565b60006bffffffffffffffffffffffff82111561464c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201527f36206269747300000000000000000000000000000000000000000000000000006064820152608401610415565b5090565b50805460008255906000526020600020908101906115ce91906146f0565b8280548282559060005260206000209081019282156146e8579160200282015b828111156146e857825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90911617825560209092019160019091019061468e565b5061464c9291505b5b8082111561464c57600081556001016146f1565b6000815180845260005b8181101561472b5760208185018101518683018201520161470f565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006122496020830184614705565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610200810167ffffffffffffffff811182821017156147cf576147cf61477c565b60405290565b60405160a0810167ffffffffffffffff811182821017156147cf576147cf61477c565b60405160c0810167ffffffffffffffff811182821017156147cf576147cf61477c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156148625761486261477c565b604052919050565b600067ffffffffffffffff8211156148845761488461477c565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff811681146115ce57600080fd5b80356148bb8161488e565b919050565b600082601f8301126148d157600080fd5b813560206148e66148e18361486a565b61481b565b82815260059290921b8401810191818101908684111561490557600080fd5b8286015b8481101561492957803561491c8161488e565b8352918301918301614909565b509695505050505050565b803560ff811681146148bb57600080fd5b63ffffffff811681146115ce57600080fd5b80356148bb81614945565b80151581146115ce57600080fd5b80356148bb81614962565b62ffffff811681146115ce57600080fd5b80356148bb8161497b565b61ffff811681146115ce57600080fd5b80356148bb81614997565b600061020082840312156149c557600080fd5b6149cd6147ab565b90506149d882614957565b81526149e660208301614957565b60208201526149f760408301614957565b6040820152614a08606083016148b0565b6060820152614a1960808301614970565b6080820152614a2a60a0830161498c565b60a0820152614a3b60c08301614957565b60c0820152614a4c60e08301614957565b60e0820152610100614a5f8184016148b0565b90820152610120614a718382016149a7565b90820152610140614a838382016148b0565b90820152610160828101359082015261018080830135908201526101a080830135908201526101c08083013567ffffffffffffffff811115614ac457600080fd5b614ad0858286016148c0565b8284015250506101e0614ae48184016148b0565b9082015292915050565b803567ffffffffffffffff811681146148bb57600080fd5b600082601f830112614b1757600080fd5b813567ffffffffffffffff811115614b3157614b3161477c565b614b6260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161481b565b818152846020838601011115614b7757600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112614ba557600080fd5b81356020614bb56148e18361486a565b82815260059290921b84018101918181019086841115614bd457600080fd5b8286015b84811015614929578035614beb8161488e565b8352918301918301614bd8565b6bffffffffffffffffffffffff811681146115ce57600080fd5b600082601f830112614c2357600080fd5b81356020614c336148e18361486a565b82815260a09283028501820192828201919087851115614c5257600080fd5b8387015b85811015614cd15781818a031215614c6e5760008081fd5b614c766147d5565b8135614c8181614945565b815281860135614c908161497b565b81870152604082810135614ca38161488e565b9082015260608281013590820152608080830135614cc081614bf8565b908201528452928401928101614c56565b5090979650505050505050565b600080600080600080600080610100898b031215614cfb57600080fd5b883567ffffffffffffffff80821115614d1357600080fd5b614d1f8c838d016148c0565b995060208b0135915080821115614d3557600080fd5b614d418c838d016148c0565b9850614d4f60408c01614934565b975060608b0135915080821115614d6557600080fd5b614d718c838d016149b2565b9650614d7f60808c01614aee565b955060a08b0135915080821115614d9557600080fd5b614da18c838d01614b06565b945060c08b0135915080821115614db757600080fd5b614dc38c838d01614b94565b935060e08b0135915080821115614dd957600080fd5b50614de68b828c01614c12565b9150509295985092959890939650565b60008083601f840112614e0857600080fd5b50813567ffffffffffffffff811115614e2057600080fd5b602083019150836020828501011115614e3857600080fd5b9250929050565b60008060008060608587031215614e5557600080fd5b8435614e608161488e565b935060208501359250604085013567ffffffffffffffff811115614e8357600080fd5b614e8f87828801614df6565b95989497509550505050565b600080600060408486031215614eb057600080fd5b83359250602084013567ffffffffffffffff811115614ece57600080fd5b614eda86828701614df6565b9497909650939450505050565b60008083601f840112614ef957600080fd5b50813567ffffffffffffffff811115614f1157600080fd5b6020830191508360208260051b8501011115614e3857600080fd5b60008060008060008060008060e0898b031215614f4857600080fd5b606089018a811115614f5957600080fd5b8998503567ffffffffffffffff80821115614f7357600080fd5b614f7f8c838d01614df6565b909950975060808b0135915080821115614f9857600080fd5b614fa48c838d01614ee7565b909750955060a08b0135915080821115614fbd57600080fd5b50614fca8b828c01614ee7565b999c989b50969995989497949560c00135949350505050565b60008060008060008060c08789031215614ffc57600080fd5b863567ffffffffffffffff8082111561501457600080fd5b6150208a838b016148c0565b9750602089013591508082111561503657600080fd5b6150428a838b016148c0565b965061505060408a01614934565b9550606089013591508082111561506657600080fd5b6150728a838b01614b06565b945061508060808a01614aee565b935060a089013591508082111561509657600080fd5b506150a389828a01614b06565b9150509295509295509295565b6000602082840312156150c257600080fd5b81356150cd8161488e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60ff8181168382160290811690818114613c5657613c566150d4565b60006020828403121561513157600080fd5b5051919050565b63ffffffff818116838216019080821115613c5657613c566150d4565b600081518084526020808501945080840160005b8381101561519b57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101615169565b509495945050505050565b602081526151bd60208201835163ffffffff169052565b600060208301516151d6604084018263ffffffff169052565b50604083015163ffffffff8116606084015250606083015173ffffffffffffffffffffffffffffffffffffffff8116608084015250608083015180151560a08401525060a083015162ffffff811660c08401525060c083015163ffffffff811660e08401525060e08301516101006152558185018363ffffffff169052565b840151905061012061527e8482018373ffffffffffffffffffffffffffffffffffffffff169052565b84015190506101406152958482018361ffff169052565b84015190506101606152be8482018373ffffffffffffffffffffffffffffffffffffffff169052565b840151610180848101919091528401516101a0808501919091528401516101c0808501919091528401516102006101e080860182905291925090615306610220860184615155565b95015173ffffffffffffffffffffffffffffffffffffffff169301929092525090919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361538c5761538c6150d4565b5060010190565b600061012063ffffffff808d1684528b6020850152808b166040850152508060608401526153c38184018a615155565b905082810360808401526153d78189615155565b905060ff871660a084015282810360c08401526153f48187614705565b905067ffffffffffffffff851660e08401528281036101008401526154198185614705565b9c9b505050505050505050505050565b60006020828403121561543b57600080fd5b5035919050565b6bffffffffffffffffffffffff818116838216019080821115613c5657613c566150d4565b8082018082111561224c5761224c6150d4565b60ff818116838216019081111561224c5761224c6150d4565b80516148bb81614945565b80516148bb8161488e565b80516148bb81614962565b80516148bb8161497b565b80516148bb81614997565b600082601f8301126154db57600080fd5b815160206154eb6148e18361486a565b82815260059290921b8401810191818101908684111561550a57600080fd5b8286015b848110156149295780516155218161488e565b835291830191830161550e565b600082601f83011261553f57600080fd5b8151602061554f6148e18361486a565b82815260059290921b8401810191818101908684111561556e57600080fd5b8286015b848110156149295780516155858161488e565b8352918301918301615572565b600082601f8301126155a357600080fd5b815160206155b36148e18361486a565b82815260a092830285018201928282019190878511156155d257600080fd5b8387015b85811015614cd15781818a0312156155ee5760008081fd5b6155f66147d5565b815161560181614945565b8152818601516156108161497b565b818701526040828101516156238161488e565b908201526060828101519082015260808083015161564081614bf8565b9082015284529284019281016155d6565b60008060006060848603121561566657600080fd5b835167ffffffffffffffff8082111561567e57600080fd5b90850190610200828803121561569357600080fd5b61569b6147ab565b6156a483615493565b81526156b260208401615493565b60208201526156c360408401615493565b60408201526156d46060840161549e565b60608201526156e5608084016154a9565b60808201526156f660a084016154b4565b60a082015261570760c08401615493565b60c082015261571860e08401615493565b60e082015261010061572b81850161549e565b9082015261012061573d8482016154bf565b9082015261014061574f84820161549e565b90820152610160838101519082015261018080840151908201526101a080840151908201526101c0808401518381111561578857600080fd5b6157948a8287016154ca565b8284015250506101e06157a881850161549e565b9082015260208701519095509150808211156157c357600080fd5b6157cf8783880161552e565b935060408601519150808211156157e557600080fd5b506157f286828701615592565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006101208b835273ffffffffffffffffffffffffffffffffffffffff8b16602084015267ffffffffffffffff808b1660408501528160608501526158728285018b615155565b91508382036080850152615886828a615155565b915060ff881660a085015283820360c08501526158a38288614705565b90861660e085015283810361010085015290506154198185614705565b8281526040602082015260006137ef6040830184614705565b600080604083850312156158ec57600080fd5b82516158f781614962565b6020939093015192949293505050565b8183823760009101908152919050565b8281526080810160608360208401379392505050565b600082601f83011261593e57600080fd5b8135602061594e6148e18361486a565b82815260059290921b8401810191818101908684111561596d57600080fd5b8286015b848110156149295780358352918301918301615971565b600082601f83011261599957600080fd5b813560206159a96148e18361486a565b82815260059290921b840181019181810190868411156159c857600080fd5b8286015b8481101561492957803567ffffffffffffffff8111156159ec5760008081fd5b6159fa8986838b0101614b06565b8452509183019183016159cc565b600060208284031215615a1a57600080fd5b813567ffffffffffffffff80821115615a3257600080fd5b9083019060c08286031215615a4657600080fd5b615a4e6147f8565b8235815260208301356020820152604083013582811115615a6e57600080fd5b615a7a8782860161592d565b604083015250606083013582811115615a9257600080fd5b615a9e8782860161592d565b606083015250608083013582811115615ab657600080fd5b615ac287828601615988565b60808301525060a083013582811115615ada57600080fd5b615ae687828601615988565b60a08301525095945050505050565b61ffff818116838216019080821115613c5657613c566150d4565b808202811582820484141761224c5761224c6150d4565b8181038181111561224c5761224c6150d4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082615b7857615b78615b3a565b500490565b6bffffffffffffffffffffffff85168152836020820152826040820152608060608201526000615bb06080830184614705565b9695505050505050565b6bffffffffffffffffffffffff828116828216039080821115613c5657613c566150d4565b60006bffffffffffffffffffffffff80841680615bfe57615bfe615b3a565b92169190910492915050565b6bffffffffffffffffffffffff818116838216028082169190828114615c3257615c326150d4565b505092915050565b805169ffffffffffffffffffff811681146148bb57600080fd5b600080600080600060a08688031215615c6c57600080fd5b615c7586615c3a565b9450602086015193506040860151925060608601519150615c9860808701615c3a565b90509295509295909350565b6fffffffffffffffffffffffffffffffff818116838216019080821115613c5657613c566150d4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600060408284031215615d0e57600080fd5b6040516040810181811067ffffffffffffffff82111715615d3157615d3161477c565b6040528251615d3f81614945565b81526020928301519281019290925250919050565b600060a08284031215615d6657600080fd5b615d6e6147d5565b82518152602083015160208201526040830151615d8a81614945565b60408201526060830151615d9d81614945565b6060820152608092830151928101929092525091905056fea164736f6c6343000813000a", + Bin: "0x6101806040523480156200001257600080fd5b50604051620064ff380380620064ff83398101604081905262000035916200062f565b80816001600160a01b031663ca30e6036040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009b91906200062f565b826001600160a01b031663226cf83c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200010091906200062f565b836001600160a01b031663614486af6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200013f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016591906200062f565b846001600160a01b0316636709d0e56040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ca91906200062f565b856001600160a01b0316635425d8ac6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000209573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022f91906200062f565b866001600160a01b031663a08714c06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029491906200062f565b876001600160a01b031663c5b964e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f9919062000656565b886001600160a01b031663ac4dc59a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000338573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035e91906200062f565b3380600081620003b55760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620003e857620003e8816200056b565b5050506001600160a01b0380891660805287811660a05286811660c05285811660e052848116610100528316610120526025805483919060ff19166001838181111562000439576200043962000679565b0217905550806001600160a01b0316610140816001600160a01b03168152505060c0516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200049a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c091906200068f565b60ff1660a0516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000504573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200052a91906200068f565b60ff16146200054c576040516301f86e1760e41b815260040160405180910390fd5b5050506001600160a01b039095166101605250620006b4945050505050565b336001600160a01b03821603620005c55760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401620003ac565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6001600160a01b03811681146200062c57600080fd5b50565b6000602082840312156200064257600080fd5b81516200064f8162000616565b9392505050565b6000602082840312156200066957600080fd5b8151600281106200064f57600080fd5b634e487b7160e01b600052602160045260246000fd5b600060208284031215620006a257600080fd5b815160ff811681146200064f57600080fd5b60805160a05160c05160e05161010051610120516101405161016051615dc8620007376000396000818160c9015261017c015260005050600061226a015260005050600050506000613a2801526000505060008181610df301528181610f010152818161102c015281816110760152818161176f015261336e0152615dc86000f3fe6080604052600436106100c75760003560e01c8063a4c0ed3611610074578063b1dc65a41161004e578063b1dc65a414610338578063e3d0e71214610358578063f2fde38b14610378576100c7565b8063a4c0ed361461029b578063aed2e929146102bb578063afcb95d7146102f2576100c7565b80637bee169d116100a55780637bee169d146101d657806381ff7048146101f65780638da5cb5b14610270576100c7565b8063181f5a771461010e578063349e8cca1461016d57806379ba5097146101c1575b7f00000000000000000000000000000000000000000000000000000000000000003660008037600080366000845af43d6000803e808015610107573d6000f35b3d6000fd5b005b34801561011a57600080fd5b506101576040518060400160405280601881526020017f4175746f6d6174696f6e526567697374727920322e332e30000000000000000081525081565b604051610164919061476f565b60405180910390f35b34801561017957600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610164565b3480156101cd57600080fd5b5061010c610398565b3480156101e257600080fd5b5061010c6101f1366004614ce4565b61049a565b34801561020257600080fd5b5061024d60175460135463ffffffff74010000000000000000000000000000000000000000830481169378010000000000000000000000000000000000000000000000009093041691565b6040805163ffffffff948516815293909216602084015290820152606001610164565b34801561027c57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661019c565b3480156102a757600080fd5b5061010c6102b6366004614e45565b610ddb565b3480156102c757600080fd5b506102db6102d6366004614ea1565b6110f7565b604080519215158352602083019190915201610164565b3480156102fe57600080fd5b50601354601454604080516000815260208101939093526c0100000000000000000000000090910463ffffffff1690820152606001610164565b34801561034457600080fd5b5061010c610353366004614f32565b6112a2565b34801561036457600080fd5b5061010c610373366004614fe9565b611583565b34801561038457600080fd5b5061010c6103933660046150b6565b6115bd565b60015473ffffffffffffffffffffffffffffffffffffffff16331461041e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6104a26115d1565b601f885111156104de576040517f25d0209c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8560ff1660000361051b576040517fe77dba5600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8651885114158061053a5750610532866003615109565b60ff16885111155b15610571576040517f1d2d1c5800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80518251146105ac576040517fcf54c06a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105b68282611654565b6105c08888611abc565b604051806101200160405280601460000160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600063ffffffff1681526020018660a0015162ffffff16815260200186610120015161ffff1681526020018760ff168152602001601460000160169054906101000a900460ff1615158152602001601460000160179054906101000a900460ff1615158152602001866080015115158152602001866101e0015173ffffffffffffffffffffffffffffffffffffffff16815250601460008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160106101000a81548162ffffff021916908362ffffff16021790555060608201518160000160136101000a81548161ffff021916908361ffff16021790555060808201518160000160156101000a81548160ff021916908360ff16021790555060a08201518160000160166101000a81548160ff02191690831515021790555060c08201518160000160176101000a81548160ff02191690831515021790555060e08201518160000160186101000a81548160ff0219169083151502179055506101008201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050604051806101600160405280866060015173ffffffffffffffffffffffffffffffffffffffff168152602001866000015163ffffffff168152602001866020015163ffffffff1681526020016016600001601c9054906101000a900463ffffffff1663ffffffff16815260200186610100015173ffffffffffffffffffffffffffffffffffffffff168152602001601660010160149054906101000a900463ffffffff1663ffffffff168152602001601660010160189054906101000a900463ffffffff1663ffffffff168152602001866040015163ffffffff16815260200186610140015173ffffffffffffffffffffffffffffffffffffffff1681526020018660c0015163ffffffff1681526020018660e0015163ffffffff16815250601660008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160186101000a81548163ffffffff021916908363ffffffff160217905550606082015181600001601c6101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160010160146101000a81548163ffffffff021916908363ffffffff16021790555060c08201518160010160186101000a81548163ffffffff021916908363ffffffff16021790555060e082015181600101601c6101000a81548163ffffffff021916908363ffffffff1602179055506101008201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101208201518160020160146101000a81548163ffffffff021916908363ffffffff1602179055506101408201518160020160186101000a81548163ffffffff021916908363ffffffff160217905550905050846101600151601981905550846101800151601a81905550846101a00151601b819055506000601660010160189054906101000a900463ffffffff169050856101e0015173ffffffffffffffffffffffffffffffffffffffff166357e871e76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bea9190615125565b601780547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000063ffffffff9384160217808255600192601491610c619185917401000000000000000000000000000000000000000090041661513e565b92506101000a81548163ffffffff021916908363ffffffff160217905550600086604051602001610c9291906151ac565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152919052601754909150610cf7904690309074010000000000000000000000000000000000000000900463ffffffff168d8d8d878d8d61217d565b601355600960008181610d0a8282614656565b5050505060005b876101c0015151811015610d6457610d51886101c001518281518110610d3957610d39615332565b6020026020010151600961222790919063ffffffff16565b5080610d5c81615361565b915050610d11565b506013546017546040517f1591690b8638f5fb2dbec82ac741805ac5da8b45dc5263f4875b0496fdce4e0592610dc79286927401000000000000000000000000000000000000000090910463ffffffff16908f908f908f9089908f908f90615399565b60405180910390a150505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610e4a576040517fc8bad78d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208114610e84576040517fdfe9309000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e928284018461542f565b6000818152600460205260409020549091506601000000000000900463ffffffff90811614610eed576040517f9c0083a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600460205260409020600201547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff908116911614610f71576040517fc1ab6dc100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260046020526040902060010154610fb090859070010000000000000000000000000000000090046bffffffffffffffffffffffff16615448565b600082815260046020908152604080832060010180546bffffffffffffffffffffffff95909516700100000000000000000000000000000000027fffffffff000000000000000000000000ffffffffffffffffffffffffffffffff9095169490941790935573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016825260219052205461105f90859061546d565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660009081526021602090815260409182902093909355516bffffffffffffffffffffffff871681529087169183917fafd24114486da8ebfc32f3626dada8863652e187461aa74d4bfa734891506203910160405180910390a35050505050565b600080611102612252565b601454760100000000000000000000000000000000000000000000900460ff1615611159576040517f24522f3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600085815260046020908152604091829020825161012081018452815460ff8082161515835261010080830490911615158386015262010000820463ffffffff90811684880181905266010000000000008404821660608601526a010000000000000000000090930473ffffffffffffffffffffffffffffffffffffffff9081166080860181905260018701546fffffffffffffffffffffffffffffffff811660a088015270010000000000000000000000000000000081046bffffffffffffffffffffffff1660c08801527c0100000000000000000000000000000000000000000000000000000000900490921660e0860152600290950154909416908301528451601f890185900485028101850190955287855290936112959389908990819084018382808284376000920191909152506122c192505050565b9097909650945050505050565b60005a60408051610120810182526014546bffffffffffffffffffffffff8116825263ffffffff6c01000000000000000000000000820416602083015262ffffff7001000000000000000000000000000000008204169282019290925261ffff730100000000000000000000000000000000000000830416606082015260ff75010000000000000000000000000000000000000000008304811660808301527601000000000000000000000000000000000000000000008304811615801560a08401527701000000000000000000000000000000000000000000000084048216151560c0840152780100000000000000000000000000000000000000000000000090930416151560e082015260155473ffffffffffffffffffffffffffffffffffffffff16610100820152919250611406576040517f24522f3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600b602052604090205460ff1661144f576040517f1099ed7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6013548a351461148b576040517fdfdcf8e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b608081015161149b906001615480565b60ff16861415806114ac5750858414155b156114e3576040517f0244f71a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114f38a8a8a8a8a8a8a8a6124dc565b60006114ff8a8a612745565b905060208b0135600881901c63ffffffff1661151c8484876127fe565b836020015163ffffffff168163ffffffff16111561157457601480547fffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff166c0100000000000000000000000063ffffffff8416021790555b50505050505050505050505050565b60008060008580602001905181019061159c9190615657565b9250925092506115b2898989868989888861049a565b505050505050505050565b6115c56115d1565b6115ce816133e4565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314611652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610415565b565b60005b60245481101561171257602260006024838154811061167857611678615332565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001812080547fffffffffff000000000000000000000000000000000000000000000000000000168155600181019190915560020180547fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001690558061170a81615361565b915050611657565b5061171f60246000614656565b60255460ff1660005b8351811015611ab657600084828151811061174557611745615332565b60200260200101519050600084838151811061176357611763615332565b602002602001015190507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156117d9575060018460018111156117d7576117d7615802565b145b15611810576040517fc1ab6dc100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216158061184b5750604081015173ffffffffffffffffffffffffffffffffffffffff16155b15611882576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff828116600090815260226020526040902054670100000000000000900416156118ec576040517f357d0cc400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6024805460018082019092557f7cd332d19b93bcabe3cce7ca0c18a052f57e5fd03b4758a09f30f5ddc4b22ec40180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8581169182179092556000818152602260209081526040918290208651815488840180518a8701805163ffffffff9095167fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000909416841764010000000062ffffff93841602177fffffffffff0000000000000000000000000000000000000000ffffffffffffff16670100000000000000958b16959095029490941785556060808c0180519b87019b909b556080808d018051600290980180547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff998a1617905589519586529351909216968401969096529251909716948101949094529551918301919091529251909216928201929092527f720a5849025dc4fd0061aed1bb30efd713cde64ce7f8d807953ecca27c8f143c9060a00160405180910390a250508080611aae90615361565b915050611728565b50505050565b60005b600e54811015611b3357611b20600e8281548110611adf57611adf615332565b600091825260209091200154601454600e5473ffffffffffffffffffffffffffffffffffffffff909216916bffffffffffffffffffffffff909116906134d9565b5080611b2b81615361565b915050611abf565b5060255460009060ff16815b600e54811015611ca457600e8181548110611b5c57611b5c615332565b6000918252602082200154600d805473ffffffffffffffffffffffffffffffffffffffff9092169550600c929184908110611b9957611b99615332565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff9081168452838201949094526040928301822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001690559286168152600b909252902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556001826001811115611c3b57611c3b615802565b148015611c80575073ffffffffffffffffffffffffffffffffffffffff83166000908152600b60205260409020546201000090046bffffffffffffffffffffffff1615155b15611c9257611c90600f84612227565b505b80611c9c81615361565b915050611b3f565b50611cb1600d6000614656565b611cbd600e6000614656565b6040805160808101825260008082526020820181905291810182905260608101829052905b855181101561214d57600c6000878381518110611d0157611d01615332565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1615611d6c576040517f77cea0fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16868281518110611d9657611d96615332565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603611deb576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180604001604052806001151581526020018260ff16815250600c6000888481518110611e1c57611e1c615332565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260400160002082518154939092015160ff16610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909316929092171790558451859082908110611ec457611ec4615332565b60200260200101519350600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611f34576040517f58a70a0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166000908152600b60209081526040918290208251608081018452905460ff80821615801584526101008304909116938301939093526bffffffffffffffffffffffff6201000082048116948301949094526e01000000000000000000000000000090049092166060830152909250611fef576040517f6a7281ad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180835260ff80831660208086019182526014546bffffffffffffffffffffffff9081166060880190815273ffffffffffffffffffffffffffffffffffffffff8a166000908152600b909352604092839020885181549551948a0151925184166e010000000000000000000000000000027fffffffffffff000000000000000000000000ffffffffffffffffffffffffffff939094166201000002929092167fffffffffffff000000000000000000000000000000000000000000000000ffff94909616610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009095169490941717919091169290921791909117905583600181111561212957612129615802565b0361213b57612139600f856136e1565b505b8061214581615361565b915050611ce2565b50845161216190600d906020880190614674565b50835161217590600e906020870190614674565b505050505050565b6000808a8a8a8a8a8a8a8a8a6040516020016121a199989796959493929190615831565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905280516020909101207dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e01000000000000000000000000000000000000000000000000000000000000179b9a5050505050505050505050565b60006122498373ffffffffffffffffffffffffffffffffffffffff8416613703565b90505b92915050565b3273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611652576040517fb60ac5db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601454600090819077010000000000000000000000000000000000000000000000900460ff161561231e576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601480547fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000001790556040517f4585e33b000000000000000000000000000000000000000000000000000000009061239390859060240161476f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290517f79188d1600000000000000000000000000000000000000000000000000000000815290935073ffffffffffffffffffffffffffffffffffffffff8616906379188d169061246690879087906004016158c6565b60408051808303816000875af1158015612484573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a891906158df565b601480547fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff16905590969095509350505050565b600087876040516124ee92919061590d565b604051908190038120612505918b9060200161591d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201208383019092526000808452908301819052909250906000805b888110156126dc5760018587836020811061257157612571615332565b61257e91901a601b615480565b8c8c8581811061259057612590615332565b905060200201358b8b868181106125a9576125a9615332565b90506020020135604051600081526020016040526040516125e6949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015612608573d6000803e3d6000fd5b5050604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081015173ffffffffffffffffffffffffffffffffffffffff81166000908152600c602090815290849020838501909452925460ff80821615158085526101009092041693830193909352909550935090506126b6576040517f0f4c073700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826020015160080260ff166001901b8401935080806126d490615361565b915050612554565b50827e01010101010101010101010101010101010101010101010101010101010101841614612737576040517fc103be2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050505050505050565b61277e6040518060c001604052806000815260200160008152602001606081526020016060815260200160608152602001606081525090565b600061278c83850185615a0e565b60408101515160608201515191925090811415806127af57508082608001515114155b806127bf5750808260a001515114155b156127f6576040517fb55ac75400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b509392505050565b600082604001515167ffffffffffffffff81111561281e5761281e614782565b6040519080825280602002602001820160405280156128ea57816020015b6040805161020081018252600060e08201818152610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e0830182905282526020808301829052928201819052606082018190526080820181905260a0820181905260c082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161283c5790505b50905060006040518060800160405280600061ffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff16815260200160008152509050600085610100015173ffffffffffffffffffffffffffffffffffffffff166357e871e76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612988573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ac9190615125565b9050600086610100015173ffffffffffffffffffffffffffffffffffffffff166318b8f6136040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a249190615125565b905060005b866040015151811015612eb4576004600088604001518381518110612a5057612a50615332565b6020908102919091018101518252818101929092526040908101600020815161012081018352815460ff8082161515835261010080830490911615159583019590955263ffffffff620100008204811694830194909452660100000000000081048416606083015273ffffffffffffffffffffffffffffffffffffffff6a01000000000000000000009091048116608083015260018301546fffffffffffffffffffffffffffffffff811660a08401526bffffffffffffffffffffffff70010000000000000000000000000000000082041660c08401527c0100000000000000000000000000000000000000000000000000000000900490931660e0820152600290910154909116918101919091528551869083908110612b7357612b73615332565b602002602001015160000181905250612ba887604001518281518110612b9b57612b9b615332565b6020026020010151613752565b858281518110612bba57612bba615332565b6020026020010151606001906001811115612bd757612bd7615802565b90816001811115612bea57612bea615802565b81525050612c4e87604001518281518110612c0757612c07615332565b60200260200101518489608001518481518110612c2657612c26615332565b6020026020010151888581518110612c4057612c40615332565b60200260200101518c6137fd565b868381518110612c6057612c60615332565b6020026020010151602001878481518110612c7d57612c7d615332565b602002602001015160c0018281525082151515158152505050848181518110612ca857612ca8615332565b60200260200101516020015115612cd857600184600001818151612ccc9190615afb565b61ffff16905250612cdd565b612ea2565b612d43858281518110612cf257612cf2615332565b6020026020010151600001516080015188606001518381518110612d1857612d18615332565b60200260200101518960a001518481518110612d3657612d36615332565b60200260200101516122c1565b868381518110612d5557612d55615332565b6020026020010151604001878481518110612d7257612d72615332565b6020026020010151608001828152508215151515815250505087608001516001612d9c9190615480565b612daa9060ff166040615b16565b6103a48860a001518381518110612dc357612dc3615332565b602002602001015151612dd6919061546d565b612de0919061546d565b858281518110612df257612df2615332565b602002602001015160a0018181525050848181518110612e1457612e14615332565b602002602001015160a0015184606001818151612e31919061546d565b9052508451859082908110612e4857612e48615332565b60200260200101516080015186612e5f9190615b2d565b9550612ea287604001518281518110612e7a57612e7a615332565b602002602001015184878481518110612e9557612e95615332565b602002602001015161391c565b80612eac81615361565b915050612a29565b50825161ffff16600003612ecb5750505050505050565b6155f0612ed9366010615b16565b5a612ee49088615b2d565b612eee919061546d565b612ef8919061546d565b8351909550611b5890612f0f9061ffff1687615b6f565b612f19919061546d565b60408051606081018252600080825260208201819052918101829052919650612f4189613a21565b905060005b88604001515181101561327d57868181518110612f6557612f65615332565b6020026020010151602001511561326b57801580612ffd575086612f8a600183615b2d565b81518110612f9a57612f9a615332565b602002602001015160000151610100015173ffffffffffffffffffffffffffffffffffffffff16878281518110612fd357612fd3615332565b602002602001015160000151610100015173ffffffffffffffffffffffffffffffffffffffff1614155b156130315761302e8a88838151811061301857613018615332565b6020026020010151600001516101000151613b12565b92505b600061314f8b6040518061012001604052808b868151811061305557613055615332565b60200260200101516080015181526020018c81526020018a606001518c878151811061308357613083615332565b602002602001015160a001518a61309a9190615b16565b6130a49190615b6f565b81526020018d6000015181526020018d6020015181526020018681526020018b86815181106130d5576130d5615332565b602002602001015160000151610100015173ffffffffffffffffffffffffffffffffffffffff168152602001878152602001600115158152508c60400151858151811061312457613124615332565b60200260200101518b868151811061313e5761313e615332565b602002602001015160000151613c63565b90508060600151876040018181516131679190615448565b6bffffffffffffffffffffffff16905250604081015160208801805161318e908390615448565b6bffffffffffffffffffffffff1690525087518890839081106131b3576131b3615332565b60200260200101516040015115158a6040015183815181106131d7576131d7615332565b60200260200101517fad8cc9579b21dfe2c2f6ea35ba15b656e46b4f5b0cb424f52739b8ce5cac9c5b836060015184604001516132149190615448565b8b868151811061322657613226615332565b6020026020010151608001518d8f60800151888151811061324957613249615332565b60200260200101516040516132619493929190615b83565b60405180910390a3505b8061327581615361565b915050612f46565b505050602083810151336000908152600b909252604090912080546002906132ba9084906201000090046bffffffffffffffffffffffff16615448565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508260400151601460000160008282829054906101000a90046bffffffffffffffffffffffff166133189190615448565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508260400151836020015161335a9190615448565b6bffffffffffffffffffffffff16602160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133d6919061546d565b909155505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff821603613463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610415565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b602090815260408083208151608081018352905460ff80821615801584526101008304909116948301949094526bffffffffffffffffffffffff6201000082048116938301939093526e01000000000000000000000000000090049091166060820152906136d55760008160600151856135719190615bc0565b9050600061357f8583615be5565b905080836040018181516135939190615448565b6bffffffffffffffffffffffff169052506135ae8582615c10565b836060018181516135bf9190615448565b6bffffffffffffffffffffffff90811690915273ffffffffffffffffffffffffffffffffffffffff89166000908152600b602090815260409182902087518154928901519389015160608a015186166e010000000000000000000000000000027fffffffffffff000000000000000000000000ffffffffffffffffffffffffffff919096166201000002167fffffffffffff000000000000000000000000000000000000000000000000ffff60ff95909516610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff921515929092167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909416939093171792909216179190911790555050505b60400151949350505050565b60006122498373ffffffffffffffffffffffffffffffffffffffff8416613f5f565b600081815260018301602052604081205461374a5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561224c565b50600061224c565b6000818160045b600f8110156137df577fff00000000000000000000000000000000000000000000000000000000000000821683826020811061379757613797615332565b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146137cd57506000949350505050565b806137d781615361565b915050613759565b5081600f1a60018111156137f5576137f5615802565b949350505050565b60008080808560600151600181111561381857613818615802565b0361383e5761382a8888888888614052565b61383957600092509050613912565b6138b6565b60018560600151600181111561385657613856615802565b03613884576000613869898989886141dc565b925090508061387e5750600092509050613912565b506138b6565b6040517ff2b2d41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84516060015163ffffffff16871061390b57877fc3237c8807c467c1b39b8d0395eff077313e691bf0a7388106792564ebfd5636876040516138f8919061476f565b60405180910390a2600092509050613912565b6001925090505b9550959350505050565b60008160600151600181111561393457613934615802565b0361399857600083815260046020526040902060010180547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff851602179055505050565b6001816060015160018111156139b0576139b0615802565b03613a1c5760c08101805160009081526008602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055915191517fa4a4e334c0e330143f9437484fe516c13bc560b86b5b0daf58e7084aaac228f29190a25b505050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015613a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab59190615c5a565b50935050925050600082131580613acb57508042105b80613afb57506000846040015162ffffff16118015613afb5750613aef8142615b2d565b846040015162ffffff16105b15613b0b575050601b5492915050565b5092915050565b604080516060810182526000808252602080830182815283850183905273ffffffffffffffffffffffffffffffffffffffff868116845260229092528483208054640100000000810462ffffff1690925263ffffffff8216855285517ffeaf968c00000000000000000000000000000000000000000000000000000000815295519495909484936701000000000000009093049092169163feaf968c9160048082019260a0929091908290030181865afa158015613bd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bf89190615c5a565b50935050925050600082131580613c0e57508042105b80613c3e57506000866040015162ffffff16118015613c3e5750613c328142615b2d565b866040015162ffffff16105b15613c525760018301546040850152613c5a565b604084018290525b50505092915050565b604080516080810182526000808252602080830182905292820181905260608201529082015115613cdc5760008381526023602090815260409182902082518084019093525463ffffffff811680845262ffffff640100000000909204821693830193845260e088018051919091529251925192169101525b6000613ce886866143e9565b60c0840151602082015182519293509091600091613d0591615448565b905082600001516bffffffffffffffffffffffff16826bffffffffffffffffffffffff161015613d8a57819050613d6b87608001518860e0015160400151846bffffffffffffffffffffffff16613d5c9190615b16565b613d669190615b6f565b6145b4565b6bffffffffffffffffffffffff16604084015260006060840152613e16565b806bffffffffffffffffffffffff16826bffffffffffffffffffffffff161015613e1657819050613e0283604001516bffffffffffffffffffffffff1688608001518960e0015160400151856bffffffffffffffffffffffff16613dee9190615b16565b613df89190615b6f565b613d669190615b2d565b6bffffffffffffffffffffffff1660608401525b60008681526004602052604090206001018054829190601090613e5c90849070010000000000000000000000000000000090046bffffffffffffffffffffffff16615bc0565b82546101009290920a6bffffffffffffffffffffffff81810219909316918316021790915560008881526004602052604081206001018054928516935091613eb79084906fffffffffffffffffffffffffffffffff16615caa565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550806bffffffffffffffffffffffff16602160008960c0015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613f4e9190615b2d565b909155509298975050505050505050565b60008181526001830160205260408120548015614048576000613f83600183615b2d565b8554909150600090613f9790600190615b2d565b9050818114613ffc576000866000018281548110613fb757613fb7615332565b9060005260206000200154905080876000018481548110613fda57613fda615332565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061400d5761400d615cd3565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061224c565b600091505061224c565b600080848060200190518101906140699190615d02565b845160e00151815191925063ffffffff908116911610156140c657867f405288ea7be309e16cfdf481367f90a413e1d4634fcdaf8966546db9b93012e8866040516140b4919061476f565b60405180910390a260009150506141d3565b8260e00151801561418657506020810151158015906141865750602081015161010084015182516040517f85df51fd00000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015273ffffffffffffffffffffffffffffffffffffffff909116906385df51fd90602401602060405180830381865afa15801561415f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141839190615125565b14155b806141985750805163ffffffff168611155b156141cd57867f6aa7f60c176da7af894b384daea2249497448137f5943c1237ada8bc92bdc301866040516140b4919061476f565b60019150505b95945050505050565b6000806000848060200190518101906141f59190615d5a565b905060008782600001518360200151846040015160405160200161425794939291909384526020840192909252604083015260e01b7fffffffff0000000000000000000000000000000000000000000000000000000016606082015260640190565b6040516020818303038152906040528051906020012090508460e00151801561433257506080820151158015906143325750608082015161010086015160608401516040517f85df51fd00000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015273ffffffffffffffffffffffffffffffffffffffff909116906385df51fd90602401602060405180830381865afa15801561430b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061432f9190615125565b14155b80614347575086826060015163ffffffff1610155b1561439157877f6aa7f60c176da7af894b384daea2249497448137f5943c1237ada8bc92bdc3018760405161437c919061476f565b60405180910390a26000935091506143e09050565b60008181526008602052604090205460ff16156143d857877f405288ea7be309e16cfdf481367f90a413e1d4634fcdaf8966546db9b93012e88760405161437c919061476f565b600193509150505b94509492505050565b6040805160808101825260008082526020820181905291810182905260608101919091526000836060015161ffff1683606001516144279190615b16565b9050826101000151801561443a5750803a105b1561444257503a5b60008360a00151846040015185602001518660000151614462919061546d565b61446c9085615b16565b614476919061546d565b6144809190615b16565b90506144998460e001516040015182613d669190615b6f565b6bffffffffffffffffffffffff16835260808401516144bc90613d669083615b6f565b6bffffffffffffffffffffffff16604084015260e0840151602001516000906144f39062ffffff16683635c9adc5dea00000615b16565b9050600081633b9aca008760a001518860e001516000015163ffffffff1689604001518a60000151896145269190615b16565b614530919061546d565b61453a9190615b16565b6145449190615b16565b61454e9190615b6f565b614558919061546d565b90506145718660e001516040015182613d669190615b6f565b6bffffffffffffffffffffffff166020860152608086015161459790613d669083615b6f565b6bffffffffffffffffffffffff1660608601525050505092915050565b60006bffffffffffffffffffffffff821115614652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201527f36206269747300000000000000000000000000000000000000000000000000006064820152608401610415565b5090565b50805460008255906000526020600020908101906115ce91906146f6565b8280548282559060005260206000209081019282156146ee579160200282015b828111156146ee57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190614694565b506146529291505b5b8082111561465257600081556001016146f7565b6000815180845260005b8181101561473157602081850181015186830182015201614715565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000612249602083018461470b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610200810167ffffffffffffffff811182821017156147d5576147d5614782565b60405290565b60405160a0810167ffffffffffffffff811182821017156147d5576147d5614782565b60405160c0810167ffffffffffffffff811182821017156147d5576147d5614782565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561486857614868614782565b604052919050565b600067ffffffffffffffff82111561488a5761488a614782565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff811681146115ce57600080fd5b80356148c181614894565b919050565b600082601f8301126148d757600080fd5b813560206148ec6148e783614870565b614821565b82815260059290921b8401810191818101908684111561490b57600080fd5b8286015b8481101561492f57803561492281614894565b835291830191830161490f565b509695505050505050565b803560ff811681146148c157600080fd5b63ffffffff811681146115ce57600080fd5b80356148c18161494b565b80151581146115ce57600080fd5b80356148c181614968565b62ffffff811681146115ce57600080fd5b80356148c181614981565b61ffff811681146115ce57600080fd5b80356148c18161499d565b600061020082840312156149cb57600080fd5b6149d36147b1565b90506149de8261495d565b81526149ec6020830161495d565b60208201526149fd6040830161495d565b6040820152614a0e606083016148b6565b6060820152614a1f60808301614976565b6080820152614a3060a08301614992565b60a0820152614a4160c0830161495d565b60c0820152614a5260e0830161495d565b60e0820152610100614a658184016148b6565b90820152610120614a778382016149ad565b90820152610140614a898382016148b6565b90820152610160828101359082015261018080830135908201526101a080830135908201526101c08083013567ffffffffffffffff811115614aca57600080fd5b614ad6858286016148c6565b8284015250506101e0614aea8184016148b6565b9082015292915050565b803567ffffffffffffffff811681146148c157600080fd5b600082601f830112614b1d57600080fd5b813567ffffffffffffffff811115614b3757614b37614782565b614b6860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614821565b818152846020838601011115614b7d57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112614bab57600080fd5b81356020614bbb6148e783614870565b82815260059290921b84018101918181019086841115614bda57600080fd5b8286015b8481101561492f578035614bf181614894565b8352918301918301614bde565b6bffffffffffffffffffffffff811681146115ce57600080fd5b600082601f830112614c2957600080fd5b81356020614c396148e783614870565b82815260a09283028501820192828201919087851115614c5857600080fd5b8387015b85811015614cd75781818a031215614c745760008081fd5b614c7c6147db565b8135614c878161494b565b815281860135614c9681614981565b81870152604082810135614ca981614894565b9082015260608281013590820152608080830135614cc681614bfe565b908201528452928401928101614c5c565b5090979650505050505050565b600080600080600080600080610100898b031215614d0157600080fd5b883567ffffffffffffffff80821115614d1957600080fd5b614d258c838d016148c6565b995060208b0135915080821115614d3b57600080fd5b614d478c838d016148c6565b9850614d5560408c0161493a565b975060608b0135915080821115614d6b57600080fd5b614d778c838d016149b8565b9650614d8560808c01614af4565b955060a08b0135915080821115614d9b57600080fd5b614da78c838d01614b0c565b945060c08b0135915080821115614dbd57600080fd5b614dc98c838d01614b9a565b935060e08b0135915080821115614ddf57600080fd5b50614dec8b828c01614c18565b9150509295985092959890939650565b60008083601f840112614e0e57600080fd5b50813567ffffffffffffffff811115614e2657600080fd5b602083019150836020828501011115614e3e57600080fd5b9250929050565b60008060008060608587031215614e5b57600080fd5b8435614e6681614894565b935060208501359250604085013567ffffffffffffffff811115614e8957600080fd5b614e9587828801614dfc565b95989497509550505050565b600080600060408486031215614eb657600080fd5b83359250602084013567ffffffffffffffff811115614ed457600080fd5b614ee086828701614dfc565b9497909650939450505050565b60008083601f840112614eff57600080fd5b50813567ffffffffffffffff811115614f1757600080fd5b6020830191508360208260051b8501011115614e3e57600080fd5b60008060008060008060008060e0898b031215614f4e57600080fd5b606089018a811115614f5f57600080fd5b8998503567ffffffffffffffff80821115614f7957600080fd5b614f858c838d01614dfc565b909950975060808b0135915080821115614f9e57600080fd5b614faa8c838d01614eed565b909750955060a08b0135915080821115614fc357600080fd5b50614fd08b828c01614eed565b999c989b50969995989497949560c00135949350505050565b60008060008060008060c0878903121561500257600080fd5b863567ffffffffffffffff8082111561501a57600080fd5b6150268a838b016148c6565b9750602089013591508082111561503c57600080fd5b6150488a838b016148c6565b965061505660408a0161493a565b9550606089013591508082111561506c57600080fd5b6150788a838b01614b0c565b945061508660808a01614af4565b935060a089013591508082111561509c57600080fd5b506150a989828a01614b0c565b9150509295509295509295565b6000602082840312156150c857600080fd5b81356150d381614894565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60ff8181168382160290811690818114613b0b57613b0b6150da565b60006020828403121561513757600080fd5b5051919050565b63ffffffff818116838216019080821115613b0b57613b0b6150da565b600081518084526020808501945080840160005b838110156151a157815173ffffffffffffffffffffffffffffffffffffffff168752958201959082019060010161516f565b509495945050505050565b602081526151c360208201835163ffffffff169052565b600060208301516151dc604084018263ffffffff169052565b50604083015163ffffffff8116606084015250606083015173ffffffffffffffffffffffffffffffffffffffff8116608084015250608083015180151560a08401525060a083015162ffffff811660c08401525060c083015163ffffffff811660e08401525060e083015161010061525b8185018363ffffffff169052565b84015190506101206152848482018373ffffffffffffffffffffffffffffffffffffffff169052565b840151905061014061529b8482018361ffff169052565b84015190506101606152c48482018373ffffffffffffffffffffffffffffffffffffffff169052565b840151610180848101919091528401516101a0808501919091528401516101c0808501919091528401516102006101e08086018290529192509061530c61022086018461515b565b95015173ffffffffffffffffffffffffffffffffffffffff169301929092525090919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615392576153926150da565b5060010190565b600061012063ffffffff808d1684528b6020850152808b166040850152508060608401526153c98184018a61515b565b905082810360808401526153dd818961515b565b905060ff871660a084015282810360c08401526153fa818761470b565b905067ffffffffffffffff851660e084015282810361010084015261541f818561470b565b9c9b505050505050505050505050565b60006020828403121561544157600080fd5b5035919050565b6bffffffffffffffffffffffff818116838216019080821115613b0b57613b0b6150da565b8082018082111561224c5761224c6150da565b60ff818116838216019081111561224c5761224c6150da565b80516148c18161494b565b80516148c181614894565b80516148c181614968565b80516148c181614981565b80516148c18161499d565b600082601f8301126154e157600080fd5b815160206154f16148e783614870565b82815260059290921b8401810191818101908684111561551057600080fd5b8286015b8481101561492f57805161552781614894565b8352918301918301615514565b600082601f83011261554557600080fd5b815160206155556148e783614870565b82815260059290921b8401810191818101908684111561557457600080fd5b8286015b8481101561492f57805161558b81614894565b8352918301918301615578565b600082601f8301126155a957600080fd5b815160206155b96148e783614870565b82815260a092830285018201928282019190878511156155d857600080fd5b8387015b85811015614cd75781818a0312156155f45760008081fd5b6155fc6147db565b81516156078161494b565b81528186015161561681614981565b8187015260408281015161562981614894565b908201526060828101519082015260808083015161564681614bfe565b9082015284529284019281016155dc565b60008060006060848603121561566c57600080fd5b835167ffffffffffffffff8082111561568457600080fd5b90850190610200828803121561569957600080fd5b6156a16147b1565b6156aa83615499565b81526156b860208401615499565b60208201526156c960408401615499565b60408201526156da606084016154a4565b60608201526156eb608084016154af565b60808201526156fc60a084016154ba565b60a082015261570d60c08401615499565b60c082015261571e60e08401615499565b60e08201526101006157318185016154a4565b908201526101206157438482016154c5565b908201526101406157558482016154a4565b90820152610160838101519082015261018080840151908201526101a080840151908201526101c0808401518381111561578e57600080fd5b61579a8a8287016154d0565b8284015250506101e06157ae8185016154a4565b9082015260208701519095509150808211156157c957600080fd5b6157d587838801615534565b935060408601519150808211156157eb57600080fd5b506157f886828701615598565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006101208b835273ffffffffffffffffffffffffffffffffffffffff8b16602084015267ffffffffffffffff808b1660408501528160608501526158788285018b61515b565b9150838203608085015261588c828a61515b565b915060ff881660a085015283820360c08501526158a9828861470b565b90861660e0850152838103610100850152905061541f818561470b565b8281526040602082015260006137f5604083018461470b565b600080604083850312156158f257600080fd5b82516158fd81614968565b6020939093015192949293505050565b8183823760009101908152919050565b8281526080810160608360208401379392505050565b600082601f83011261594457600080fd5b813560206159546148e783614870565b82815260059290921b8401810191818101908684111561597357600080fd5b8286015b8481101561492f5780358352918301918301615977565b600082601f83011261599f57600080fd5b813560206159af6148e783614870565b82815260059290921b840181019181810190868411156159ce57600080fd5b8286015b8481101561492f57803567ffffffffffffffff8111156159f25760008081fd5b615a008986838b0101614b0c565b8452509183019183016159d2565b600060208284031215615a2057600080fd5b813567ffffffffffffffff80821115615a3857600080fd5b9083019060c08286031215615a4c57600080fd5b615a546147fe565b8235815260208301356020820152604083013582811115615a7457600080fd5b615a8087828601615933565b604083015250606083013582811115615a9857600080fd5b615aa487828601615933565b606083015250608083013582811115615abc57600080fd5b615ac88782860161598e565b60808301525060a083013582811115615ae057600080fd5b615aec8782860161598e565b60a08301525095945050505050565b61ffff818116838216019080821115613b0b57613b0b6150da565b808202811582820484141761224c5761224c6150da565b8181038181111561224c5761224c6150da565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082615b7e57615b7e615b40565b500490565b6bffffffffffffffffffffffff85168152836020820152826040820152608060608201526000615bb6608083018461470b565b9695505050505050565b6bffffffffffffffffffffffff828116828216039080821115613b0b57613b0b6150da565b60006bffffffffffffffffffffffff80841680615c0457615c04615b40565b92169190910492915050565b6bffffffffffffffffffffffff818116838216028082169190828114615c3857615c386150da565b505092915050565b805169ffffffffffffffffffff811681146148c157600080fd5b600080600080600060a08688031215615c7257600080fd5b615c7b86615c40565b9450602086015193506040860151925060608601519150615c9e60808701615c40565b90509295509295909350565b6fffffffffffffffffffffffffffffffff818116838216019080821115613b0b57613b0b6150da565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600060408284031215615d1457600080fd5b6040516040810181811067ffffffffffffffff82111715615d3757615d37614782565b6040528251615d458161494b565b81526020928301519281019290925250919050565b600060a08284031215615d6c57600080fd5b615d746147db565b82518152602083015160208201526040830151615d908161494b565b60408201526060830151615da38161494b565b6060820152608092830151928101929092525091905056fea164736f6c6343000813000a", } var AutomationRegistryABI = AutomationRegistryMetaData.ABI diff --git a/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt b/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt index c815b8489b4..31a61dc770d 100644 --- a/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt +++ b/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt @@ -14,7 +14,7 @@ automation_registry_logic_a_wrapper_2_3: ../../contracts/solc/v0.8.19/Automation automation_registry_logic_b_wrapper_2_2: ../../contracts/solc/v0.8.19/AutomationRegistryLogicB2_2/AutomationRegistryLogicB2_2.abi ../../contracts/solc/v0.8.19/AutomationRegistryLogicB2_2/AutomationRegistryLogicB2_2.bin a6d33dfbbfb0ff253eb59a51f4f6d6d4c22ea5ec95aae52d25d49a312b37a22f automation_registry_logic_b_wrapper_2_3: ../../contracts/solc/v0.8.19/AutomationRegistryLogicB2_3/AutomationRegistryLogicB2_3.abi ../../contracts/solc/v0.8.19/AutomationRegistryLogicB2_3/AutomationRegistryLogicB2_3.bin 8414649696c8c602a0a12b00e98eb1d6325533870b47459d9d16ad79e6abdcf0 automation_registry_wrapper_2_2: ../../contracts/solc/v0.8.19/AutomationRegistry2_2/AutomationRegistry2_2.abi ../../contracts/solc/v0.8.19/AutomationRegistry2_2/AutomationRegistry2_2.bin de60f69878e9b32a291a001c91fc8636544c2cfbd9b507c8c1a4873b602bfb62 -automation_registry_wrapper_2_3: ../../contracts/solc/v0.8.19/AutomationRegistry2_3/AutomationRegistry2_3.abi ../../contracts/solc/v0.8.19/AutomationRegistry2_3/AutomationRegistry2_3.bin bccf9ed47a39fb8a3a238d7e80fd3b07a33768d6cf8428abb18b9d2bd6552cff +automation_registry_wrapper_2_3: ../../contracts/solc/v0.8.19/AutomationRegistry2_3/AutomationRegistry2_3.abi ../../contracts/solc/v0.8.19/AutomationRegistry2_3/AutomationRegistry2_3.bin 0de539cbc6780ae5b02956964297e41b901765f599f5fa113b0c10cf1a35bb45 automation_utils_2_1: ../../contracts/solc/v0.8.16/AutomationUtils2_1/AutomationUtils2_1.abi ../../contracts/solc/v0.8.16/AutomationUtils2_1/AutomationUtils2_1.bin 815b17b63f15d26a0274b962eefad98cdee4ec897ead58688bbb8e2470e585f5 automation_utils_2_2: ../../contracts/solc/v0.8.19/AutomationUtils2_2/AutomationUtils2_2.abi ../../contracts/solc/v0.8.19/AutomationUtils2_2/AutomationUtils2_2.bin 8743f6231aaefa3f2a0b2d484258070d506e2d0860690e66890dccc3949edb2e automation_utils_2_3: ../../contracts/solc/v0.8.19/AutomationUtils2_3/AutomationUtils2_3.abi ../../contracts/solc/v0.8.19/AutomationUtils2_3/AutomationUtils2_3.bin 11e2b481dc9a4d936e3443345d45d2cc571164459d214917b42a8054b295393b