static boolean hyperMoveAnother(S progID, S machine1, S machine2) ctex { S botID = formatSnippetID(progID); print("Hyper-Move: Checking applicability."); if (!canHyperMove(botID)) { print("Hyper-Move: Can't move, not on this machine."); ret false; } print("Hyper-Move: Killing bot to move it..."); killProgramID(botID); print("Hyper-Move: OK, done."); S destMachine = getComputerID().equals(machine2) ? machine1 : machine2; print("Hyper-Move: Moving " + botID + " to " + destMachine + "..."); File zipPath = new File(getProgramDir(), botID + ".zip"); boolean hasData = zipBot(botID, zipPath); S title = "Data zip of " + botID + " on " + computerID() + " at " + now(); S gummipw = getProgramID() + "-hypermove"; S dataID = hasData ? uploadDataSuperHigh(gummipw, title, zipPath) : "#1001471" /* no data */; sendToRemoteBot("Identity Manager", format3("* is now in state * with data * to machine *", botID, "moving", dataID, destMachine)); print("\nDone. Data ID: " + dataID); ret true; }