```\nfunction settle(bytes32[] memory ids, IMarket[] memory markets, uint256[] memory versions, uint256[] memory maxCounts)\n    external\n    keep(settleKeepConfig(), msg.data, 0, "")\n{\n    if (\n        ids.length != markets.length ||\n        ids.length != versions.length ||\n        ids.length != maxCounts.length ||\n        // Prevent calldata stuffing\n        abi.encodeCall(KeeperFactory.settle, (ids, markets, versions, maxCounts)).length != msg.data.length\n    )\n        revert KeeperFactoryInvalidSettleError();\n\n    for (uint256 i; i < ids.length; i++)\n        IKeeperOracle(address(oracles[ids[i]])).settle(markets[i], versions[i], maxCounts[i]);\n}\n```\n