Written by Chris Klosowski. Last updated on June 30, 2023. Fixed a miss-named field. Added support for variable prices.