Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.