Copyright (c) 2019, 2020 Oracle and/or its affiliates. Copyright (c) 2019, 2021 Oracle and/or its affiliates. Copyright (c) 2019, 2022 Oracle and/or its affiliates. Copyright (c) 2019, 2023 Oracle and/or its affiliates. Copyright (c) 2019, 2024 Oracle and/or its affiliates. Copyright (c) 2020 Oracle and/or its affiliates. Copyright (c) 2020, 2022 Oracle and/or its affiliates.