Copyright (C) David P. Callanan 2022. All rights reserved.