OPTION BASE 0 CONST Mime$="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
FUNCTION B64Enc$(x$) LOCAL INTEGER c1,c2,c3,w1,w2,w3,w4,n LOCAL STRING so$ FOR n=1 TO LEN(x$) STEP 3 c1=ASC(MID$(x$,n,1)): c2=ASC(MID$(x$,n+1,1)+CHR$(0)): c3=ASC(MID$(x$,n+2,1)+CHR$(0)): w1=INT(c1/4): w2=(c1 AND 3)*16+INT(c2/16) IF LEN(x$)>=n+1 THEN w3=(c2 AND 15)*4+INT(c3/64) ELSE w3=-1 IF LEN(x$)>=n+2 THEN w4=c3 AND 63 ELSE w4=-1 so$=so$+ME$(w1)+ME$(w2)+ME$(w3)+ME$(w4) NEXT B64Enc$=so$+"==" END FUNCTION FUNCTION B64Dec$(x$) LOCAL INTEGER w1,w2,w3,w4,n LOCAL STRING so$ FOR n=1 TO LEN(x$) STEP 4 w1=MD(MID$(x$,n,1)): w2=MD(MID$(x$,n+1,1)): w3=MD(MID$(x$,n+2,1)): w4=MD(MID$(x$,n+3,1)) IF w2>=0 THEN so$=so$+CHR$(((w1*4+INT(w2/16)) AND 255)) IF w3>=0 THEN so$=so$+CHR$(((w2*16+INT(w3/4)) AND 255)) IF w4>=0 THEN so$=so$+CHR$(((w3*64+w4) AND 255)) NEXT B64Dec$=so$ END FUNCTION ' support functions FUNCTION ME$(i) IF i>=0 THEN ME$=MID$(Mime$,i+1, 1) ELSE ME$="" END FUNCTION FUNCTION MD(x$) IF LEN(x$)=0 THEN MD=-1 ELSE MD=INSTR(Mime$,x$)-1 END FUNCTION