Needs to be improved to make it usable by other people, but the meat of what’s happening can be found in the code.