encode:=function(message,blocksize) local letters,digits,code,i,out,len; letters:=[" ","a","b","c","d","e","f","g","h","i","j","k", "l","m","n","o","p","q","r","s","t","u","v","w","x","y", "z","A","B","C","D","E","F","G","H","I","J","K","L","M", "N","O","P","Q","R","S","T","U","V","W","X","Y","Z", ",",".","?","!","'"]; code:=ShallowCopy(message); for i in [1..Length(letters)] do code:=ReplacedString(code,letters[i],String(i+9)); od; len:=Length(code); out:=[]; for i in [1..(len-(len mod blocksize))/blocksize] do out[i]:=Int(code{[(i-1)*blocksize+1..i*blocksize]}); od; if (len mod blocksize) > 0 then out[Length(out)+1]:=Int(code{[len-(len mod blocksize)+1..len]}); fi; return out; end; decode:=function(code,blocksize) local letters,message,i,out,temp; letters:=[" ","a","b","c","d","e","f","g","h","i","j","k", "l","m","n","o","p","q","r","s","t","u","v","w","x","y", "z","A","B","C","D","E","F","G","H","I","J","K","L","M", "N","O","P","Q","R","S","T","U","V","W","X","Y","Z", ",",".","?","!","'"]; message:=List(code,x->String(x)); for i in [1..Length(message)-1] do if Length(message[i])