Copyright (C) 2022 the original author(s). Copyright (c) 2000-2005 Dieter Wimberger