%% SPDX-License-Identifier: Apache-2.0 %% SPDX-FileCopyrightText: 2026 Erlang Ecosystem Foundation %% MacroVector lookup tables for CVSS 4.0 scoring. %% Data derived from the FIRST CVSS v4.0 calculator reference implementation. %% See: https://github.com/FIRSTdotorg/cvss-v4-calculator -module(cvss_v4_lookup). -moduledoc false. -export([lookup/6]). -include("internal/decimal.hrl"). -doc """ Lookup the base score for a MacroVector. EQ1-EQ6 are integer equivalence class values (0-2 each). """. -spec lookup( non_neg_integer(), non_neg_integer(), non_neg_integer(), non_neg_integer(), non_neg_integer(), non_neg_integer() ) -> decimal:decimal() | undefined. lookup(0, 0, 0, 0, 0, 0) -> ?D(<<"10.0">>); lookup(0, 0, 0, 0, 0, 1) -> ?D(<<"9.9">>); lookup(0, 0, 0, 0, 1, 0) -> ?D(<<"9.8">>); lookup(0, 0, 0, 0, 1, 1) -> ?D(<<"9.5">>); lookup(0, 0, 0, 0, 2, 0) -> ?D(<<"9.5">>); lookup(0, 0, 0, 0, 2, 1) -> ?D(<<"9.2">>); lookup(0, 0, 0, 1, 0, 0) -> ?D(<<"10.0">>); lookup(0, 0, 0, 1, 0, 1) -> ?D(<<"9.6">>); lookup(0, 0, 0, 1, 1, 0) -> ?D(<<"9.3">>); lookup(0, 0, 0, 1, 1, 1) -> ?D(<<"8.7">>); lookup(0, 0, 0, 1, 2, 0) -> ?D(<<"9.1">>); lookup(0, 0, 0, 1, 2, 1) -> ?D(<<"8.1">>); lookup(0, 0, 0, 2, 0, 0) -> ?D(<<"9.3">>); lookup(0, 0, 0, 2, 0, 1) -> ?D(<<"9.0">>); lookup(0, 0, 0, 2, 1, 0) -> ?D(<<"8.9">>); lookup(0, 0, 0, 2, 1, 1) -> ?D(<<"8.0">>); lookup(0, 0, 0, 2, 2, 0) -> ?D(<<"8.1">>); lookup(0, 0, 0, 2, 2, 1) -> ?D(<<"6.8">>); lookup(0, 0, 1, 0, 0, 0) -> ?D(<<"9.8">>); lookup(0, 0, 1, 0, 0, 1) -> ?D(<<"9.5">>); lookup(0, 0, 1, 0, 1, 0) -> ?D(<<"9.5">>); lookup(0, 0, 1, 0, 1, 1) -> ?D(<<"9.2">>); lookup(0, 0, 1, 0, 2, 0) -> ?D(<<"9.0">>); lookup(0, 0, 1, 0, 2, 1) -> ?D(<<"8.4">>); lookup(0, 0, 1, 1, 0, 0) -> ?D(<<"9.3">>); lookup(0, 0, 1, 1, 0, 1) -> ?D(<<"9.2">>); lookup(0, 0, 1, 1, 1, 0) -> ?D(<<"8.9">>); lookup(0, 0, 1, 1, 1, 1) -> ?D(<<"8.1">>); lookup(0, 0, 1, 1, 2, 0) -> ?D(<<"8.1">>); lookup(0, 0, 1, 1, 2, 1) -> ?D(<<"6.5">>); lookup(0, 0, 1, 2, 0, 0) -> ?D(<<"8.8">>); lookup(0, 0, 1, 2, 0, 1) -> ?D(<<"8.0">>); lookup(0, 0, 1, 2, 1, 0) -> ?D(<<"7.8">>); lookup(0, 0, 1, 2, 1, 1) -> ?D(<<"7.0">>); lookup(0, 0, 1, 2, 2, 0) -> ?D(<<"6.9">>); lookup(0, 0, 1, 2, 2, 1) -> ?D(<<"4.8">>); lookup(0, 0, 2, 0, 0, 1) -> ?D(<<"9.2">>); lookup(0, 0, 2, 0, 1, 1) -> ?D(<<"8.2">>); lookup(0, 0, 2, 0, 2, 1) -> ?D(<<"7.2">>); lookup(0, 0, 2, 1, 0, 1) -> ?D(<<"7.9">>); lookup(0, 0, 2, 1, 1, 1) -> ?D(<<"6.9">>); lookup(0, 0, 2, 1, 2, 1) -> ?D(<<"5.0">>); lookup(0, 0, 2, 2, 0, 1) -> ?D(<<"6.9">>); lookup(0, 0, 2, 2, 1, 1) -> ?D(<<"5.5">>); lookup(0, 0, 2, 2, 2, 1) -> ?D(<<"2.7">>); lookup(0, 1, 0, 0, 0, 0) -> ?D(<<"9.9">>); lookup(0, 1, 0, 0, 0, 1) -> ?D(<<"9.7">>); lookup(0, 1, 0, 0, 1, 0) -> ?D(<<"9.5">>); lookup(0, 1, 0, 0, 1, 1) -> ?D(<<"9.2">>); lookup(0, 1, 0, 0, 2, 0) -> ?D(<<"9.2">>); lookup(0, 1, 0, 0, 2, 1) -> ?D(<<"8.5">>); lookup(0, 1, 0, 1, 0, 0) -> ?D(<<"9.5">>); lookup(0, 1, 0, 1, 0, 1) -> ?D(<<"9.1">>); lookup(0, 1, 0, 1, 1, 0) -> ?D(<<"9.0">>); lookup(0, 1, 0, 1, 1, 1) -> ?D(<<"8.3">>); lookup(0, 1, 0, 1, 2, 0) -> ?D(<<"8.4">>); lookup(0, 1, 0, 1, 2, 1) -> ?D(<<"7.1">>); lookup(0, 1, 0, 2, 0, 0) -> ?D(<<"9.2">>); lookup(0, 1, 0, 2, 0, 1) -> ?D(<<"8.1">>); lookup(0, 1, 0, 2, 1, 0) -> ?D(<<"8.2">>); lookup(0, 1, 0, 2, 1, 1) -> ?D(<<"7.1">>); lookup(0, 1, 0, 2, 2, 0) -> ?D(<<"7.2">>); lookup(0, 1, 0, 2, 2, 1) -> ?D(<<"5.3">>); lookup(0, 1, 1, 0, 0, 0) -> ?D(<<"9.5">>); lookup(0, 1, 1, 0, 0, 1) -> ?D(<<"9.3">>); lookup(0, 1, 1, 0, 1, 0) -> ?D(<<"9.2">>); lookup(0, 1, 1, 0, 1, 1) -> ?D(<<"8.5">>); lookup(0, 1, 1, 0, 2, 0) -> ?D(<<"8.5">>); lookup(0, 1, 1, 0, 2, 1) -> ?D(<<"7.3">>); lookup(0, 1, 1, 1, 0, 0) -> ?D(<<"9.2">>); lookup(0, 1, 1, 1, 0, 1) -> ?D(<<"8.2">>); lookup(0, 1, 1, 1, 1, 0) -> ?D(<<"8.0">>); lookup(0, 1, 1, 1, 1, 1) -> ?D(<<"7.2">>); lookup(0, 1, 1, 1, 2, 0) -> ?D(<<"7.0">>); lookup(0, 1, 1, 1, 2, 1) -> ?D(<<"5.9">>); lookup(0, 1, 1, 2, 0, 0) -> ?D(<<"8.4">>); lookup(0, 1, 1, 2, 0, 1) -> ?D(<<"7.0">>); lookup(0, 1, 1, 2, 1, 0) -> ?D(<<"7.1">>); lookup(0, 1, 1, 2, 1, 1) -> ?D(<<"5.2">>); lookup(0, 1, 1, 2, 2, 0) -> ?D(<<"5.0">>); lookup(0, 1, 1, 2, 2, 1) -> ?D(<<"3.0">>); lookup(0, 1, 2, 0, 0, 1) -> ?D(<<"8.6">>); lookup(0, 1, 2, 0, 1, 1) -> ?D(<<"7.5">>); lookup(0, 1, 2, 0, 2, 1) -> ?D(<<"5.2">>); lookup(0, 1, 2, 1, 0, 1) -> ?D(<<"7.1">>); lookup(0, 1, 2, 1, 1, 1) -> ?D(<<"5.2">>); lookup(0, 1, 2, 1, 2, 1) -> ?D(<<"2.9">>); lookup(0, 1, 2, 2, 0, 1) -> ?D(<<"6.3">>); lookup(0, 1, 2, 2, 1, 1) -> ?D(<<"2.9">>); lookup(0, 1, 2, 2, 2, 1) -> ?D(<<"1.7">>); lookup(1, 0, 0, 0, 0, 0) -> ?D(<<"9.8">>); lookup(1, 0, 0, 0, 0, 1) -> ?D(<<"9.5">>); lookup(1, 0, 0, 0, 1, 0) -> ?D(<<"9.4">>); lookup(1, 0, 0, 0, 1, 1) -> ?D(<<"8.7">>); lookup(1, 0, 0, 0, 2, 0) -> ?D(<<"9.1">>); lookup(1, 0, 0, 0, 2, 1) -> ?D(<<"8.1">>); lookup(1, 0, 0, 1, 0, 0) -> ?D(<<"9.4">>); lookup(1, 0, 0, 1, 0, 1) -> ?D(<<"8.9">>); lookup(1, 0, 0, 1, 1, 0) -> ?D(<<"8.6">>); lookup(1, 0, 0, 1, 1, 1) -> ?D(<<"7.4">>); lookup(1, 0, 0, 1, 2, 0) -> ?D(<<"7.7">>); lookup(1, 0, 0, 1, 2, 1) -> ?D(<<"6.4">>); lookup(1, 0, 0, 2, 0, 0) -> ?D(<<"8.7">>); lookup(1, 0, 0, 2, 0, 1) -> ?D(<<"7.5">>); lookup(1, 0, 0, 2, 1, 0) -> ?D(<<"7.4">>); lookup(1, 0, 0, 2, 1, 1) -> ?D(<<"6.3">>); lookup(1, 0, 0, 2, 2, 0) -> ?D(<<"6.3">>); lookup(1, 0, 0, 2, 2, 1) -> ?D(<<"4.9">>); lookup(1, 0, 1, 0, 0, 0) -> ?D(<<"9.4">>); lookup(1, 0, 1, 0, 0, 1) -> ?D(<<"8.9">>); lookup(1, 0, 1, 0, 1, 0) -> ?D(<<"8.8">>); lookup(1, 0, 1, 0, 1, 1) -> ?D(<<"7.7">>); lookup(1, 0, 1, 0, 2, 0) -> ?D(<<"7.6">>); lookup(1, 0, 1, 0, 2, 1) -> ?D(<<"6.7">>); lookup(1, 0, 1, 1, 0, 0) -> ?D(<<"8.6">>); lookup(1, 0, 1, 1, 0, 1) -> ?D(<<"7.6">>); lookup(1, 0, 1, 1, 1, 0) -> ?D(<<"7.4">>); lookup(1, 0, 1, 1, 1, 1) -> ?D(<<"5.8">>); lookup(1, 0, 1, 1, 2, 0) -> ?D(<<"5.9">>); lookup(1, 0, 1, 1, 2, 1) -> ?D(<<"5.0">>); lookup(1, 0, 1, 2, 0, 0) -> ?D(<<"7.2">>); lookup(1, 0, 1, 2, 0, 1) -> ?D(<<"5.7">>); lookup(1, 0, 1, 2, 1, 0) -> ?D(<<"5.7">>); lookup(1, 0, 1, 2, 1, 1) -> ?D(<<"5.2">>); lookup(1, 0, 1, 2, 2, 0) -> ?D(<<"5.2">>); lookup(1, 0, 1, 2, 2, 1) -> ?D(<<"2.5">>); lookup(1, 0, 2, 0, 0, 1) -> ?D(<<"8.3">>); lookup(1, 0, 2, 0, 1, 1) -> ?D(<<"7.0">>); lookup(1, 0, 2, 0, 2, 1) -> ?D(<<"5.4">>); lookup(1, 0, 2, 1, 0, 1) -> ?D(<<"6.5">>); lookup(1, 0, 2, 1, 1, 1) -> ?D(<<"5.8">>); lookup(1, 0, 2, 1, 2, 1) -> ?D(<<"2.6">>); lookup(1, 0, 2, 2, 0, 1) -> ?D(<<"5.3">>); lookup(1, 0, 2, 2, 1, 1) -> ?D(<<"2.1">>); lookup(1, 0, 2, 2, 2, 1) -> ?D(<<"1.3">>); lookup(1, 1, 0, 0, 0, 0) -> ?D(<<"9.5">>); lookup(1, 1, 0, 0, 0, 1) -> ?D(<<"9.0">>); lookup(1, 1, 0, 0, 1, 0) -> ?D(<<"8.8">>); lookup(1, 1, 0, 0, 1, 1) -> ?D(<<"7.6">>); lookup(1, 1, 0, 0, 2, 0) -> ?D(<<"7.6">>); lookup(1, 1, 0, 0, 2, 1) -> ?D(<<"7.0">>); lookup(1, 1, 0, 1, 0, 0) -> ?D(<<"9.0">>); lookup(1, 1, 0, 1, 0, 1) -> ?D(<<"7.7">>); lookup(1, 1, 0, 1, 1, 0) -> ?D(<<"7.5">>); lookup(1, 1, 0, 1, 1, 1) -> ?D(<<"6.2">>); lookup(1, 1, 0, 1, 2, 0) -> ?D(<<"6.1">>); lookup(1, 1, 0, 1, 2, 1) -> ?D(<<"5.3">>); lookup(1, 1, 0, 2, 0, 0) -> ?D(<<"7.7">>); lookup(1, 1, 0, 2, 0, 1) -> ?D(<<"6.6">>); lookup(1, 1, 0, 2, 1, 0) -> ?D(<<"6.8">>); lookup(1, 1, 0, 2, 1, 1) -> ?D(<<"5.9">>); lookup(1, 1, 0, 2, 2, 0) -> ?D(<<"5.2">>); lookup(1, 1, 0, 2, 2, 1) -> ?D(<<"3.0">>); lookup(1, 1, 1, 0, 0, 0) -> ?D(<<"8.9">>); lookup(1, 1, 1, 0, 0, 1) -> ?D(<<"7.8">>); lookup(1, 1, 1, 0, 1, 0) -> ?D(<<"7.6">>); lookup(1, 1, 1, 0, 1, 1) -> ?D(<<"6.7">>); lookup(1, 1, 1, 0, 2, 0) -> ?D(<<"6.2">>); lookup(1, 1, 1, 0, 2, 1) -> ?D(<<"5.8">>); lookup(1, 1, 1, 1, 0, 0) -> ?D(<<"7.4">>); lookup(1, 1, 1, 1, 0, 1) -> ?D(<<"5.9">>); lookup(1, 1, 1, 1, 1, 0) -> ?D(<<"5.7">>); lookup(1, 1, 1, 1, 1, 1) -> ?D(<<"5.7">>); lookup(1, 1, 1, 1, 2, 0) -> ?D(<<"4.7">>); lookup(1, 1, 1, 1, 2, 1) -> ?D(<<"2.3">>); lookup(1, 1, 1, 2, 0, 0) -> ?D(<<"6.1">>); lookup(1, 1, 1, 2, 0, 1) -> ?D(<<"5.2">>); lookup(1, 1, 1, 2, 1, 0) -> ?D(<<"5.7">>); lookup(1, 1, 1, 2, 1, 1) -> ?D(<<"2.9">>); lookup(1, 1, 1, 2, 2, 0) -> ?D(<<"2.4">>); lookup(1, 1, 1, 2, 2, 1) -> ?D(<<"1.6">>); lookup(1, 1, 2, 0, 0, 1) -> ?D(<<"7.1">>); lookup(1, 1, 2, 0, 1, 1) -> ?D(<<"5.9">>); lookup(1, 1, 2, 0, 2, 1) -> ?D(<<"3.0">>); lookup(1, 1, 2, 1, 0, 1) -> ?D(<<"5.8">>); lookup(1, 1, 2, 1, 1, 1) -> ?D(<<"2.6">>); lookup(1, 1, 2, 1, 2, 1) -> ?D(<<"1.5">>); lookup(1, 1, 2, 2, 0, 1) -> ?D(<<"2.3">>); lookup(1, 1, 2, 2, 1, 1) -> ?D(<<"1.3">>); lookup(1, 1, 2, 2, 2, 1) -> ?D(<<"0.6">>); lookup(2, 0, 0, 0, 0, 0) -> ?D(<<"9.3">>); lookup(2, 0, 0, 0, 0, 1) -> ?D(<<"8.7">>); lookup(2, 0, 0, 0, 1, 0) -> ?D(<<"8.6">>); lookup(2, 0, 0, 0, 1, 1) -> ?D(<<"7.2">>); lookup(2, 0, 0, 0, 2, 0) -> ?D(<<"7.5">>); lookup(2, 0, 0, 0, 2, 1) -> ?D(<<"5.8">>); lookup(2, 0, 0, 1, 0, 0) -> ?D(<<"8.6">>); lookup(2, 0, 0, 1, 0, 1) -> ?D(<<"7.4">>); lookup(2, 0, 0, 1, 1, 0) -> ?D(<<"7.4">>); lookup(2, 0, 0, 1, 1, 1) -> ?D(<<"6.1">>); lookup(2, 0, 0, 1, 2, 0) -> ?D(<<"5.6">>); lookup(2, 0, 0, 1, 2, 1) -> ?D(<<"3.4">>); lookup(2, 0, 0, 2, 0, 0) -> ?D(<<"7.0">>); lookup(2, 0, 0, 2, 0, 1) -> ?D(<<"5.4">>); lookup(2, 0, 0, 2, 1, 0) -> ?D(<<"5.2">>); lookup(2, 0, 0, 2, 1, 1) -> ?D(<<"4.0">>); lookup(2, 0, 0, 2, 2, 0) -> ?D(<<"4.0">>); lookup(2, 0, 0, 2, 2, 1) -> ?D(<<"2.2">>); lookup(2, 0, 1, 0, 0, 0) -> ?D(<<"8.5">>); lookup(2, 0, 1, 0, 0, 1) -> ?D(<<"7.5">>); lookup(2, 0, 1, 0, 1, 0) -> ?D(<<"7.4">>); lookup(2, 0, 1, 0, 1, 1) -> ?D(<<"5.5">>); lookup(2, 0, 1, 0, 2, 0) -> ?D(<<"6.2">>); lookup(2, 0, 1, 0, 2, 1) -> ?D(<<"5.1">>); lookup(2, 0, 1, 1, 0, 0) -> ?D(<<"7.2">>); lookup(2, 0, 1, 1, 0, 1) -> ?D(<<"5.7">>); lookup(2, 0, 1, 1, 1, 0) -> ?D(<<"5.5">>); lookup(2, 0, 1, 1, 1, 1) -> ?D(<<"4.1">>); lookup(2, 0, 1, 1, 2, 0) -> ?D(<<"4.6">>); lookup(2, 0, 1, 1, 2, 1) -> ?D(<<"1.9">>); lookup(2, 0, 1, 2, 0, 0) -> ?D(<<"5.3">>); lookup(2, 0, 1, 2, 0, 1) -> ?D(<<"3.6">>); lookup(2, 0, 1, 2, 1, 0) -> ?D(<<"3.4">>); lookup(2, 0, 1, 2, 1, 1) -> ?D(<<"1.9">>); lookup(2, 0, 1, 2, 2, 0) -> ?D(<<"1.9">>); lookup(2, 0, 1, 2, 2, 1) -> ?D(<<"0.8">>); lookup(2, 0, 2, 0, 0, 1) -> ?D(<<"6.4">>); lookup(2, 0, 2, 0, 1, 1) -> ?D(<<"5.1">>); lookup(2, 0, 2, 0, 2, 1) -> ?D(<<"2.0">>); lookup(2, 0, 2, 1, 0, 1) -> ?D(<<"4.7">>); lookup(2, 0, 2, 1, 1, 1) -> ?D(<<"2.1">>); lookup(2, 0, 2, 1, 2, 1) -> ?D(<<"1.1">>); lookup(2, 0, 2, 2, 0, 1) -> ?D(<<"2.4">>); lookup(2, 0, 2, 2, 1, 1) -> ?D(<<"0.9">>); lookup(2, 0, 2, 2, 2, 1) -> ?D(<<"0.4">>); lookup(2, 1, 0, 0, 0, 0) -> ?D(<<"8.8">>); lookup(2, 1, 0, 0, 0, 1) -> ?D(<<"7.5">>); lookup(2, 1, 0, 0, 1, 0) -> ?D(<<"7.3">>); lookup(2, 1, 0, 0, 1, 1) -> ?D(<<"5.3">>); lookup(2, 1, 0, 0, 2, 0) -> ?D(<<"6.0">>); lookup(2, 1, 0, 0, 2, 1) -> ?D(<<"5.0">>); lookup(2, 1, 0, 1, 0, 0) -> ?D(<<"7.3">>); lookup(2, 1, 0, 1, 0, 1) -> ?D(<<"5.5">>); lookup(2, 1, 0, 1, 1, 0) -> ?D(<<"5.9">>); lookup(2, 1, 0, 1, 1, 1) -> ?D(<<"4.0">>); lookup(2, 1, 0, 1, 2, 0) -> ?D(<<"4.1">>); lookup(2, 1, 0, 1, 2, 1) -> ?D(<<"2.0">>); lookup(2, 1, 0, 2, 0, 0) -> ?D(<<"5.4">>); lookup(2, 1, 0, 2, 0, 1) -> ?D(<<"4.3">>); lookup(2, 1, 0, 2, 1, 0) -> ?D(<<"4.5">>); lookup(2, 1, 0, 2, 1, 1) -> ?D(<<"2.2">>); lookup(2, 1, 0, 2, 2, 0) -> ?D(<<"2.0">>); lookup(2, 1, 0, 2, 2, 1) -> ?D(<<"1.1">>); lookup(2, 1, 1, 0, 0, 0) -> ?D(<<"7.5">>); lookup(2, 1, 1, 0, 0, 1) -> ?D(<<"5.5">>); lookup(2, 1, 1, 0, 1, 0) -> ?D(<<"5.8">>); lookup(2, 1, 1, 0, 1, 1) -> ?D(<<"4.5">>); lookup(2, 1, 1, 0, 2, 0) -> ?D(<<"4.0">>); lookup(2, 1, 1, 0, 2, 1) -> ?D(<<"2.1">>); lookup(2, 1, 1, 1, 0, 0) -> ?D(<<"6.1">>); lookup(2, 1, 1, 1, 0, 1) -> ?D(<<"5.1">>); lookup(2, 1, 1, 1, 1, 0) -> ?D(<<"4.8">>); lookup(2, 1, 1, 1, 1, 1) -> ?D(<<"1.8">>); lookup(2, 1, 1, 1, 2, 0) -> ?D(<<"2.0">>); lookup(2, 1, 1, 1, 2, 1) -> ?D(<<"0.9">>); lookup(2, 1, 1, 2, 0, 0) -> ?D(<<"4.6">>); lookup(2, 1, 1, 2, 0, 1) -> ?D(<<"1.8">>); lookup(2, 1, 1, 2, 1, 0) -> ?D(<<"1.7">>); lookup(2, 1, 1, 2, 1, 1) -> ?D(<<"0.7">>); lookup(2, 1, 1, 2, 2, 0) -> ?D(<<"0.8">>); lookup(2, 1, 1, 2, 2, 1) -> ?D(<<"0.2">>); lookup(2, 1, 2, 0, 0, 1) -> ?D(<<"5.3">>); lookup(2, 1, 2, 0, 1, 1) -> ?D(<<"2.4">>); lookup(2, 1, 2, 0, 2, 1) -> ?D(<<"1.4">>); lookup(2, 1, 2, 1, 0, 1) -> ?D(<<"2.4">>); lookup(2, 1, 2, 1, 1, 1) -> ?D(<<"1.2">>); lookup(2, 1, 2, 1, 2, 1) -> ?D(<<"0.5">>); lookup(2, 1, 2, 2, 0, 1) -> ?D(<<"1.0">>); lookup(2, 1, 2, 2, 1, 1) -> ?D(<<"0.3">>); lookup(2, 1, 2, 2, 2, 1) -> ?D(<<"0.1">>); lookup(_, _, _, _, _, _) -> undefined.