render source:

import java.applet.Applet;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.GeneralPath;
import java.awt.image.BufferedImage;


public class Vector4K extends Applet {

	String tankData = "\u0001\u0040\u0000\u0040\u0051\u0010\u0000\u0000\u0000\u0004\u003c\u001c\u0014\u003c\u0034\u0024\u003c\u003b\u0004\u0037\u0040\u0004\u0030\u0040\u0014\u0012\u0040\u0024\u000b\u0040\u0004\u0006\u003b\u0004\u0006\u0034\u0014\u0006\u001c\u0024\u0006\u0015\u0004\u000b\u0010\u0004\u0012\u0010\u0014\u0030\u0010\u0024\u0037\u0010\u0004\u003c\u0015\u0004\u003c\u001c\u0030\u0051\u0010\u0000\u0000\u0000\u0000\u007c\u001c\u0010\u007c\u0034\u0020\u007c\u003b\u0000\u0077\u0040\u0000\u0070\u0040\u0010\u0052\u0040\u0020\u004b\u0040\u0000\u0046\u003b\u0000\u0046\u0034\u0010\u0046\u001c\u0020\u0046\u0015\u0000\u004b\u0010\u0000\u0052\u0010\u0010\u0070\u0010\u0020\u0077\u0010\u0000\u007c\u0015\u0000\u007c\u001c\u0030\u0051\u0010\u0000\u0000\u0000\u0000\u0010\u001c\u0010\u0034\u001c\u0020\u003b\u001c\u0000\u0040\u0021\u0000\u0040\u0028\u0010\u0040\u0034\u0020\u0040\u003b\u0000\u003b\u0040\u0000\u0034\u0040\u0010\u0010\u0040\u0020\u0009\u0040\u0000\u0004\u003b\u0000\u0004\u0034\u0010\u0004\u0028\u0020\u0004\u0021\u0000\u0009\u001c\u0000\u0010\u001c\u0030\u0074\u007f\u0000\u0000\u0000\u007f\u0005\u0005\u0005\u0000\u0011\u0028\u0020\n\u0028\u0000\u000b\u0038\u0000\u0015\u0038\u0010\u002d\u0038\u0020\u0036\u0038\u0000\u0038\u0028\u0000\u0031\u0028\u0010\u0011\u0028\u0030\u0072\u007f\r\r\r\u007f\u0013\u0013\u0013\u0000\u001c\u0030\u0020\u001c\u0034\u0000\u0019\u0037\u0000\u0015\u0037\u0020\u0011\u0037\u0000\u000e\u0034\u0000\u000e\u0030\u0020\u000e\u002c\u0000\u0011\u0029\u0000\u0015\u0029\u0020\u0019\u0029\u0000\u001c\u002c\u0000\u001c\u0030\u0030\u0072\u007f\r\r\r\u007f\u0013\u0013\u0013\u0000\u0034\u0030\u0020\u0034\u0034\u0000\u0031\u0037\u0000\u002d\u0037\u0020\u0029\u0037\u0000\u0026\u0034\u0000\u0026\u0030\u0020\u0026\u002c\u0000\u0029\u0029\u0000\u002d\u0029\u0020\u0031\u0029\u0000\u0034\u002c\u0000\u0034\u0030\u0030\u0071\u007f\u0015\u0000\u0000\u007f\u0040\u0000\u0000\u0000\u0008\u0020\u0010\u0038\u0020\u0010\u0038\u0032\u0010\u0008\u0032\u0010\u0008\u0020\u0030\u0071\u007f\u0015\u0000\u0000\u007f\u006a\u0000\u0000\u0000\r\u0018\u0010\u0038\u0018\u0010\u0038\u002a\u0010\r\u002a\u0010\u0008\u002f\u0010\u0008\u001d\u0010\r\u0018\u0030\u0071\u007f\r\r\r\u007f\u0019\u0019\u0019\u0000\u000b\u0017\u0010\u0017\u0017\u0010\u0017\u0021\u0010\u000b\u0021\u0010\u000b\u0017\u0030\u0051\u007f\u0040\u0040\u0040\u0000\u000f\u0019\u0010\u0017\u0019\u0010\u0017\u001b\u0010\u000f\u001b\u0010\u000f\u0019\u0030\u0071\u007f\u0015\u0000\u0000\u007f\u0040\u0000\u0000\u0000\u0033\u0014\u0010\u0033\u0026\u0010\u002f\u0028\u0010\u001f\u0028\u0010\u0017\u0024\u0010\u0017\u0013\u0010\u0033\u0014\u0030\u0061\u007f\u0015\u0000\u0000\u0000\r\u001a\u0010\r\u002a\u0030\u0051\u007f\u0019\u0019\u0019\u0000\n\u0016\u0010\u000f\u0016\u0010\u000f\"\u0010\n\"\u0010\n\u0016\u0030\u0061\u007f\u0015\u0000\u0000\u0000\u001f\u001c\u0010\u001f\u0028\u0030\u0061\u007f\u0015\u0000\u0000\u0000\u002f\u001c\u0010\u002f\u0028\u0030\u0071\u007f\u0015\u0000\u0000\u007f\u006a\u0000\u0000\u0000\u001f\u000e\u0010\u002f\u000e\u0010\u0033\u0012\u0010\u0033\u001a\u0010\u002f\u001c\u0010\u001f\u001c\u0010\u0017\u0018\u0010\u0017\u0012\u0010\u001f\u000e\u0030\u0071\u007f\u0015\u0000\u0000\u007f\u006a\u0000\u0000\u0000\u001f\u0011\u0010\u0026\u0011\u0010\u0026\u0019\u0010\u001f\u0019\u0010\u001f\u0011\u0030\u0071\u007f\u0015\u0000\u0000\u007f\u006a\u0000\u0000\u0000\u0026\u0011\u0010\u002d\u0011\u0010\u002d\u0019\u0010\u0026\u0019\u0010\u0026\u0011\u0030\u0061\u007f\u0015\u0000\u0000\u0000\u002b\u001f\u0010\u002b\u0025\u0030\u0061\u007f\u0015\u0000\u0000\u0000\u002d\u001f\u0010\u002d\u0025\u0030\u0061\u007f\u0015\u0000\u0000\u0000\u0029\u001f\u0010\u0029\u0025\u0030\u0051\u007f\u0040\u0040\u0040\u0000\n\u0018\u0010\u000f\u0018\u0010\u000f\u001b\u0010\n\u001b\u0010\n\u0018\u0030\u0061\u007f\r\r\r\u0000\n\u0016\u0010\u000f\u0016\u0010\u000f\"\u0010\n\"\u0010\n\u0016\u0030\u0051\u007f\u0019\u0019\u0019\u0000\u0066\r\u0010\u0066\u000f\u0010\u005a\u000f\u0010\u005a\u000c\u0020\u005a\u0007\u0000\u0066\u0007\u0000\u0066\r\u0030\u0051\u007f\u0040\u0040\u0040\u0000\u0064\u0009\u0010\u0064\u000f\u0010\u0061\u000f\u0010\u0061\u0008\u0010\u0064\u0009\u0030\u0061\u007f\r\r\r\u0000\u0066\u000c\u0010\u0066\u000f\u0010\u005a\u000f\u0010\u005a\u000c\u0020\u005a\u0007\u0000\u0066\u0007\u0000\u0066\u000c\u0030\u0071\u007f\u0000\u0000\u0000\u007f\u0000\u0000\u0000\u0000\u004d\u002f\u0010\u005a\u002f\u0010\u005a\u0038\u0010\u004d\u0038\u0010\u004d\u002f\u0030\u0071\u007f\u0000\u0000\u0000\u007f\u0000\u0000\u0000\u0000\u0066\u002f\u0010\u0073\u002f\u0010\u0073\u0038\u0010\u0066\u0038\u0010\u0066\u002f\u0030\u0071\u007f\u0015\u0000\u0000\u007f\u0040\u0000\u0000\u0000\u004c\u002c\u0010\u0074\u002c\u0010\u0074\u0034\u0010\u004c\u0034\u0010\u004c\u002c\u0030\u0071\u007f\u0015\u0000\u0000\u007f\u006a\u0000\u0000\u0000\u004c\u0010\u0010\u0074\u0010\u0010\u0074\u002c\u0010\u004c\u002c\u0010\u004c\u0010\u0030\u0071\u007f\u0015\u0000\u0000\u007f\u0040\u0000\u0000\u0000\u0070\u0018\u0010\u0070\u0026\u0010\u0068\u002a\u0010\u0058\u002a\u0010\u0050\u0026\u0010\u0050\u0018\u0010\u0070\u0018\u0030\u0061\u007f\u0015\u0000\u0000\u0000\u0058\u001c\u0010\u0058\u002a\u0030\u0061\u007f\u0015\u0000\u0000\u0000\u0068\u001c\u0010\u0068\u002a\u0030\u0071\u007f\u0015\u0000\u0000\u007f\u006a\u0000\u0000\u0000\u0058\u000e\u0010\u0068\u000e\u0010\u0070\u0013\u0010\u0070\u0018\u0010\u0068\u001c\u0010\u0058\u001c\u0010\u0050\u0018\u0010\u0050\u0013\u0010\u0058\u000e\u0030\u0071\u007f\u0015\u0000\u0000\u007f\u006a\u0000\u0000\u0000\u0066\u0010\u0010\u0066\u0015\u0010\u005a\u0015\u0010\u005a\u0010\u0010\u0066\u0010\u0030\u0071\u007f\u0015\u0000\u0000\u007f\u006a\u0000\u0000\u0000\u0066\u0015\u0010\u0066\u001a\u0010\u005a\u001a\u0010\u005a\u0015\u0010\u0066\u0015\u0030\u0071\u007f\u0000\u0000\u0000\u007f\u0000\u0000\u0000\u0004\u000f\u002d\u0014\u001c\u002d\u0014\u001c\u0036\u0014\u000f\u0036\u0014\u000f\u002d\u0030\u0071\u007f\u0000\u0000\u0000\u007f\u0000\u0000\u0000\u0004\u0028\u002d\u0014\u0035\u002d\u0014\u0035\u0036\u0014\u0028\u0036\u0014\u0028\u002d\u0030\u0071\u007f\u0015\u0000\u0000\u007f\u0040\u0000\u0000\u0004\u000e\u002d\u0014\u0036\u002d\u0014\u0036\u0035\u0014\u000e\u0035\u0014\u000e\u002d\u0030\u0071\u007f\u0015\u0000\u0000\u007f\u006a\u0000\u0000\u0004\u000e\u000e\u0014\u0036\u000e\u0014\u0036\u002a\u0014\u000e\u002a\u0014\u000e\u000e\u0030\u0071\u007f\u0015\u0000\u0000\u007f\u0040\u0000\u0000\u0004\u0032\u000f\u0014\u0032\u001d\u0014\u002a\u0021\u0014\u001a\u0021\u0014\u0012\u001d\u0014\u0012\u000f\u0014\u0032\u000f\u0030\u0061\u007f\u0015\u0000\u0000\u0004\u001a\u0013\u0014\u001a\u0021\u0030\u0061\u007f\u0015\u0000\u0000\u0004\u002a\u0013\u0014\u002a\u0021\u0030\u0071\u007f\u0015\u0000\u0000\u007f\u006a\u0000\u0000\u0004\u001a\u0005\u0014\u002a\u0005\u0014\u0032\n\u0014\u0032\u000f\u0014\u002a\u0013\u0014\u001a\u0013\u0014\u0012\u000f\u0014\u0012\n\u0014\u001a\u0005\u0030\u0071\u007f\u0015\u0000\u0000\u007f\u006a\u0000\u0000\u0004\u0028\u0007\u0014\u0028\u000c\u0014\u001c\u000c\u0014\u001c\u0007\u0014\u0028\u0007\u0030\u0071\u007f\u0015\u0000\u0000\u007f\u006a\u0000\u0000\u0004\u0028\u000c\u0014\u0028\u0011\u0014\u001c\u0011\u0014\u001c\u000c\u0014\u0028\u000c\u0030\u0051\u007f\u0019\u0019\u0019\u0004\u0027\u001a\u0014\u0027\u001d\u0014\u001d\u001d\u0014\u001d\u001a\u0024\u001d\u0015\u0004\u0027\u0015\u0004\u0027\u001a\u0030\u0051\u007f\u0040\u0040\u0040\u0004\u0026\u0017\u0014\u0026\u001d\u0014\u0023\u001d\u0014\u0023\u0016\u0014\u0026\u0017\u0030\u0061\u007f\r\r\r\u0004\u0027\u0019\u0014\u0027\u001f\u0014\u001d\u001f\u0014\u001d\u0019\u0024\u001d\u0015\u0004\u0027\u0015\u0004\u0027\u0019\u0030\u0051\u007f\u0019\u0019\u0019\u0004\u0028\u0020\u0014\u0028\"\u0014\u001c\"\u0014\u001c\u001f\u0024\u001c\u001a\u0004\u0028\u001a\u0004\u0028\u0020\u0030\u0051\u007f\u0040\u0040\u0040\u0004\u0027\u001d\u0014\u0027\u0021\u0014\u0023\u001f\u0014\u0023\u001b\u0014\u0027\u001d\u0030\u0061\u007f\r\r\r\u0004\u0028\u001f\u0014\u0028\"\u0014\u001c\"\u0014\u001c\u001f\u0024\u001c\u001c\u0004\u001f\u001b\u0004\"\u001b\u0024\u0025\u001b\u0004\u0028\u001d\u0004\u0028\u001f\u0030\u0071\u007f\r\r\r\u007f\u0000\u0000\u0000\u0004\u0028\"\u0024\u0028\u0024\u0004\u0025\u0026\u0004\"\u0026\u0024\u001f\u0026\u0004\u001c\u0024\u0004\u001c\"\u0024\u001c\u0020\u0004\u001f\u001e\u0004\"\u001e\u0024\u0026\u001e\u0004\u0028\u0020\u0004\u0028\"\u0030\u0071\u007f\u0015\u0000\u0000\u007f\u0055\u0000\u0000\u0004\u000e\u0027\u0014\u0036\u0027\u0014\u0036\u002d\u0014\u000e\u002d\u0014\u000e\u0027\u0030";
	String cowData = "\u0001\u0061\u0001\u007e\u0074\u007f\u0000\u0000\u0000\u007f\u007f\u007f\u007f\u0005\u005e\u0004\u0025\u005e\u0041\u0005\u002d\u0072\u0001\u0070\u0072\u0021\u0034\u0072\u0001\u0003\u0041\u0001\u0003\u0004\u0020\u0003\u0048\u0000\u0034\u0017\u0000\u0070\u0017\u0024\u002d\u0017\u0004\u005e\u0048\u0005\u005e\u0004\u0030\u0051\u007f\u0026\u0026\u0026\u0004\u004a\u0048\u0024\u0045\u004f\u0004\u0044\u0059\u0004\u0046\u005d\u0024\u0047\u0060\u0004\u004f\u0062\u0004\u0057\u0063\u0024\u0054\u0059\u0004\u0050\u0050\u0004\u004a\u0048\u0030\u0000\u0009\u0066\u0020\u0006\u0070\u0000\u0004\u007a\u0001\u0004\u0004\u0021\u0004\n\u0001\u0005\u000f\u0001\u0006\u0015\u0021\u000e\u001a\u0001\u0018\u0029\u0001\u0021\u002a\u0021\u002d\u002c\u0001\u002a\u0015\u0001\u0023\u0013\u0021\u001d\u0012\u0001\u001a\u0007\u0000\u0019\u007b\u0020\u0019\u0073\u0000\u0014\u006b\u0000\u0009\u0066\u0030\u0005\\\u0002\u0025\u0059\u0003\u0005\u0057\u0005\u0005\u0054\u0008\u0025\u0049\u0017\u0005\u003f\r\u0005\u0033\u0012\u0025\u0027\u0018\u0005\u002f\u0025\u0005\u0033\u0033\u0025\u0037\u003c\u0005\u0031\u0050\u0005\u0038\u0056\u0025\u004e\u0042\u0005\\\u0025\u0005\\\u0004\u0025\\\u0003\u0005\\\u0003\u0005\\\u0002\u0025\\\u0002\u0005\\\u0002\u0005\\\u0002\u0030\u0001\u0049\u000b\u0021\u004e\u001a\u0001\u0043\u0015\u0001\u0041\u001f\u0021\u0040\u0029\u0001\u0063\u002c\u0001\u0068\u0042\u0021\u006e\u0057\u0005\u0009\u004b\u0005\u0008\u0040\u0025\u0008\u0034\u0001\u0077\u002e\u0001\u007b\u0027\u0025\u0000\u0021\u0005\u0008\u0012\u0005\u0008\u0012\u0011\u0049\u000b\u0030\u0051\u0028\u0000\u0000\u0000\u0004\u0057\u005f\u0024\u0057\u0060\u0004\u0057\u0062\u0004\u0057\u0064\u0025\u0057\u0020\u0005\u0026\u0051\u0001\u006a\u0051\u0021\u003b\u0051\u0001\u0012\u0033\u0001\u0003\u0009\u0021\u0006\u0043\u0001\u0036\u0072\u0001\u0070\u0072\u0025\u002d\u0072\u0005\u005e\u0041\u0005\u005e\u0004\u0024\u005e\u0077\u0004\\\u006a\u0004\u0057\u005f\u0030\u0074\u007f\u0000\u0000\u0000\u007f\u0019\u0019\u0019\u0001\u0079\u0073\u0021\u0079\u007c\u0005\u0007\u007c\u0005\u0019\u007c\u0025\u002b\u007c\u0005\u003a\u007d\u0005\u003a\u0073\u0025\u003a\u0061\u0005\u002b\u0053\u0005\u0019\u0053\u0025\u0007\u0053\u0001\u0079\u0061\u0001\u0079\u0073\u0030\u0051\u0028\u0000\u0000\u0000\u0004\u0045\u0061\u0025\u0045\u000e\u0005\u000e\u0033\u0001\u0073\u0033\u0021\u0059\u0033\u0001\u0021\u000e\u0000\u0021\u0061\u0020\u0021\u0034\u0000\u003a\u000f\u0000\u0073\u000f\u0024\u002c\u000f\u0004\u0045\u0034\u0004\u0045\u0061\u0030\u0074\u007f\u0000\u0000\u0000\u0028\u0000\u0000\u0000\u0005\u0026\u007c\u0025\u0026\u006b\u0005\u001c\u0061\u0005\u001c\u0061\u0025\u001c\u0061\u0005\u0020\u006f\u0005\u0020\u007c\u0015\u0026\u007c\u0030\u0074\u007f\u0000\u0000\u0000\u007f\u007f\u007f\u007f\u0000\u006e\u0002\u0020\u0050\u0003\u0000\u003b\u000e\u0000\u002e\u001f\u0020\u0016\u001c\u0000\u0002\u0036\u0000\u0002\u0036\u0020\u0002\u0036\u0000\u0015\u0040\u0000\"\u0038\u0020\u0020\u0041\u0000\u001e\u004a\u0000\u001e\u0054\u0021\u001e\u0001\u0001\u0057\u0026\u0001\u0070\u0026\u0025\u000b\u0026\u0005\u0042\u0001\u0004\u0042\u0054\u0024\u0042\u004a\u0004\u0041\u0041\u0004\u003f\u0038\u0024\u004c\u0040\u0004\u005f\u0036\u0004\u005f\u0036\u0024\u005f\u0036\u0004\u004b\u001c\u0004\u0033\u001f\u0024\u0026\r\u0004\u0010\u0002\u0000\u0070\u0002\u0020\u006f\u0002\u0000\u006f\u0002\u0000\u006e\u0002\u0030\u0051\u007f\u0026\u0026\u0026\u0000\u007f\u0004\u0024\u0018\u0016\u0000\u007c\u0015\u0000\u0076\u001b\u0020\u006f\"\u0000\u006d\u002c\u0000\u0074\u0033\u0020\u007c\u0039\u0004\"\u0044\u0004\u0028\u0032\u0024\u002b\u0029\u0004\u0027\u001d\u0004\u0025\u0013\u0024\u001b\u000b\u0004\u000f\u0006\u0000\u007f\u0004\u0030\u0074\u007f\u0000\u0000\u0000\u007f\u007f\u007f\u007f\u0000\u006d\u0048\u0020\u006d\u0054\u0000\u0063\u005f\u0000\u0056\u005f\u0020\u004a\u005f\u0000\u003f\u0054\u0000\u003f\u0048\u0020\u003f\u003b\u0000\u004a\u0031\u0000\u0056\u0031\u0020\u0063\u0031\u0000\u006d\u003b\u0000\u006d\u0048\u0030\u0074\u007f\u0000\u0000\u0000\u007f\u007f\u007f\u007f\u0004\u0021\u0048\u0024\u0021\u0054\u0004\u0017\u005f\u0004\u000b\u005f\u0020\u007e\u005f\u0000\u0074\u0054\u0000\u0074\u0048\u0020\u0074\u003b\u0000\u007e\u0031\u0004\u000b\u0031\u0024\u0017\u0031\u0004\u0021\u003b\u0004\u0021\u0048\u0030\u0051\u007f\u0000\u0000\u0000\u0004\r\u004c\u0024\r\u0050\u0004\n\u0053\u0004\u0006\u0053\u0024\u0002\u0053\u0000\u007e\u0050\u0000\u007e\u004c\u0020\u007e\u0048\u0004\u0002\u0044\u0004\u0006\u0044\u0024\n\u0044\u0004\r\u0048\u0004\r\u004c\u0030\u0051\u007f\u0000\u0000\u0000\u0000\u0063\u004c\u0020\u0063\u0050\u0000\u0060\u0053\u0000\\\u0053\u0020\u0058\u0053\u0000\u0054\u0050\u0000\u0054\u004c\u0020\u0054\u0048\u0000\u0058\u0044\u0000\\\u0044\u0020\u0060\u0044\u0000\u0063\u0048\u0000\u0063\u004c\u0030\u0074\u007f\u0000\u0000\u0000\u007f\u007f\u006a\u0072\u0000\u0070\u0073\u0020\\\u0073\u0001\u004c\u0000\u0001\u004c\u0011\u0021\u004c\u0014\u0001\u004d\u0017\u0001\u004e\u0019\u0021\u005b\u0021\u0001\u0067\u0026\u0001\u0070\u0026\u0021\u007a\u0026\u0005\u0006\u0021\u0005\u0013\u001a\u0025\u0014\u0017\u0005\u0014\u0014\u0005\u0014\u0011\u0025\u0014\u0000\u0004\u0004\u0073\u0000\u0070\u0073\u0030\u0051\u0028\u0000\u0000\u0000\u0004\u003f\u0039\u0014\u003d\u003c\u0024\u003d\u003f\u0004\u003d\u0042\u0004\u003d\u0045\u0024\u003d\u0072\u0005\u0006\u0017\u0001\u006c\u0017\u0021\u0057\u0017\u0000\u002e\u007f\u0000\u001f\u005e\u0021\u0027\u0007\u0001\u0059\u0026\u0001\u0070\u0026\u0025\u000b\u0026\u0005\u0042\u0001\u0004\u0042\u0054\u0024\u0042\u004a\u0004\u0041\u0041\u0004\u003f\u0039\u0030\u0074\u007f\u0000\u0000\u0000\u007f\u0019\u0019\u0019\u0001\u006a\u0073\u0021\u006a\u007c\u0001\u005b\u007c\u0001\u0049\u007c\u0021\u0037\u007c\u0001\u0028\u007d\u0001\u0028\u0073\u0021\u0028\u0061\u0001\u0037\u0053\u0001\u0049\u0053\u0021\u005b\u0053\u0001\u006a\u0061\u0001\u006a\u0073\u0030\u0074\u007f\u0000\u0000\u0000\u0028\u0000\u0000\u0000\u0001\u003c\u007c\u0021\u003c\u006b\u0001\u0046\u0061\u0001\u0046\u0061\u0021\u0046\u0061\u0001\u0042\u006f\u0001\u0043\u007c\u0011\u003c\u007c\u0030\u0051\u007f\u0000\u0000\u0000\u0005\u0001\u000c\u0021\u007f\u0010\u0001\u007a\u0012\u0001\u0078\u0011\u0021\u0075\u000f\u0001\u0074\n\u0001\u0076\u0006\u0021\u0079\u0002\u0001\u007d\u0001\u0005\u0000\u0002\u0025\u0003\u0004\u0005\u0003\u0008\u0005\u0001\u000c\u0030\u0051\u007f\u0000\u0000\u0000\u0001\u0060\u000c\u0021\u0063\u0010\u0001\u0067\u0012\u0001\u006a\u0011\u0021\u006d\u000f\u0001\u006d\n\u0001\u006b\u0006\u0021\u0068\u0002\u0001\u0064\u0001\u0001\u0061\u0002\u0021\u005e\u0004\u0001\u005e\u0008\u0001\u0060\u000c\u0030\u0074\u007f\u0000\u0000\u0000\u007f\u0019\u0019\u0019\u0000\u0035\u0020\u0020\u002e\u001f\u0000\u0026\u000b\u0000\u0029\u0007\u0020\u002c\u0003\u0000\u0043\u000b\u0000\u0044\u0014\u0020\u0044\u001c\u0000\u003e\"\u0000\u0035\u0020\u0030\u0074\u007f\u0000\u0000\u0000\u007f\u0019\u0019\u0019\u0004\u002a\u0020\u0024\u0032\u001f\u0004\u003a\u000b\u0004\u0037\u0007\u0024\u0034\u0003\u0004\u001c\u000b\u0004\u001c\u0014\u0024\u001b\u001c\u0004\u0021\"\u0004\u002a\u0020\u0030";
	String tigerData = ""; //omitted for berevity
	String applesData = "\u0002\u002c\u0000\u0064\u0051\u007f\u001e\u0030\u0000\u0000\u0011\u0007\u0020\u000f\n\u0000\u000f\u000f\u0000\u0012\u0010\u0020\u0014\u0011\u0000\u0015\u000f\u0000\u0016\u000e\u0020\u0017\u000c\u0000\u001a\r\u0000\u001a\u000f\u0020\u001c\u0010\u0000\u001e\u0010\u0000\u001e\u000e\u0020\u0020\u000b\u0000\"\u0007\u0000\u0020\u0004\u0020\u001d\u0001\u0000\u0017\u0001\u0000\u0014\u0004\u0020\u0013\u0005\u0000\u0012\u0006\u0000\u0011\u0007\u0030\u0051\u007f\u0046\u004e\u0001\u0000\u0012\u000f\u0020\u0013\u000c\u0000\u0018\u0009\u0000\u001b\u000e\u0020\u001d\u000b\u0000\u001f\u0008\u0000\u001d\u0006\u0020\u0018\u0000\u0000\r\u000b\u0000\u0012\u000f\u0030\u0051\u007f\u007b\u007f\u0000\u0000\u0007\u0026\u0020\u0001\u002d\u0000\u0000\u0036\u0000\u0001\u003f\u0020\u0005\u004a\u0000\u000f\u0052\u0000\u001a\u0057\u0020\u0021\u005a\u0000\u0029\u005a\u0000\u0030\u005e\u0020\u0035\u0061\u0000\u003b\u0065\u0000\u0041\u0064\u0020\u0048\u0062\u0000\u004d\\\u0000\u004f\u0057\u0020\u0051\u0054\u0000\u0051\u0051\u0000\u0053\u004e\u0020\u0056\u004b\u0000\u005a\u0049\u0000\\\u0046\u0020\u0060\u0042\u0000\u0064\u003d\u0000\u0064\u0038\u0020\u0064\u0031\u0000\u005f\u002c\u0000\u005a\u0027\u0020\u0056\u0024\u0000\u0053\u0020\u0000\u0050\u001b\u0020\u004c\u0013\u0000\u0046\u000b\u0000\u003d\u0007\u0020\u0035\u0003\u0000\u002c\u0001\u0000\u0024\u0005\u0020\u001c\u0009\u0000\u0018\u0010\u0000\u0013\u0017\u0020\u0010\u001c\u0000\u000c\u0020\u0000\u0009\u0024\u0020\u0008\u0024\u0000\u0007\u0025\u0000\u0007\u0026\u0030\u0051\u007f\u007f\u007c\u0026\u0000\u0047\u005a\u0020\u004d\u0053\u0000\u004d\u004e\u0000\u004f\u004b\u0020\u0052\u0047\u0000\u0055\u0048\u0000\\\u003f\u0020\u0063\u0036\u0000\\\u002f\u0000\u0053\u0027\u0020\u004c\u0020\u0000\u0049\u0012\u0000\u003a\u000b\u0020\u002f\u0006\u0000\u0027\u0007\u0000\u0021\u000c\u0020\u001c\u0011\u0000\u0018\u0018\u0000\u0014\u001d\u0020\u0010\"\u0000\n\u0027\u0000\u0007\u002d\u0020\u0005\u0032\u0000\u0000\u003d\u0000\u0010\u004b\u0020\u001b\u0055\u0000\u0025\u0054\u0000\u002d\u0058\u0020\u0037\u005d\u0000\u003f\u0064\u0000\u0047\u005a\u0030\u0051\u007f\u001e\u0030\u0000\u0000\u000c\u0008\u0020\u0008\u000c\u0000\u0007\u0014\u0000\u000b\u0019\u0020\r\u001b\u0000\u0011\u001c\u0000\u0013\u001f\u0020\u0014\u0021\u0000\u0015\u0023\u0000\u0018\"\u0020\u001a\u0021\u0000\u001a\u001e\u0000\u0019\u001c\u0020\u0017\u0018\u0000\u0013\u0013\u0000\u0015\u000e\u0020\u0015\u000b\u0000\u0017\u0007\u0000\u001b\u0007\u0020\u001d\u0007\u0000\u001f\u0008\u0000\u0020\u0006\u0020\u0020\u0003\u0000\u001d\u0002\u0000\u001b\u0001\u0020\u0016\u0000\u0000\u0012\u0002\u0000\u000f\u0005\u0020\u000e\u0006\u0000\r\u0007\u0000\u000c\u0008\u0030\u0051\u007f\u0046\u0060\u0000\u0000\u0015\u0021\u0020\u0015\u0021\u0000\u0013\u001c\u0000\u000e\u0019\u0020\u0009\u0017\u0000\u0009\u000f\u0000\u000c\u000b\u0020\u0010\u0004\u0000\u0018\u0000\u0000\u001d\u0006\u0020\u0017\u0004\u0000\u0012\n\u0000\u0012\u0010\u0020\u0011\u0017\u0000\u001a\u0021\u0000\u0015\u0021\u0030\u0051\u007f\u0032\u0013\u0002\u0000\u0004\u001e\u0020\u0004\u0020\u0000\u0003\"\u0000\u0005\u0023\u0020\u0007\u0024\u0000\u0008\"\u0000\n\"\u0020\u000f\u0020\u0000\u0013\"\u0000\u0017\u0023\u0020\u0018\u0023\u0000\u001b\u0023\u0000\u001a\u0021\u0020\u001a\u001f\u0000\u0017\u001f\u0000\u0015\u001e\u0020\u0010\u001b\u0000\n\u001a\u0000\u0005\u001d\u0020\u0005\u001d\u0000\u0004\u001e\u0000\u0004\u001e\u0030\u0051\u007f\u003d\u0025\u0000\u0000\u0005\u0021\u0020\u0006\"\u0000\u0007\u0021\u0000\u0008\u0021\u0020\u000c\u001f\u0000\u0010\u001f\u0000\u0014\u0021\u0020\u0016\"\u0000\u0017\"\u0000\u0019\"\u0020\u001a\u0021\u0000\u0017\u0021\u0000\u0016\u0020\u0020\u0012\u001e\u0000\r\u001c\u0000\u0008\u001d\u0020\u0007\u001d\u0000\u0005\u001e\u0000\u0005\u001f\u0020\u0005\u0020\u0000\u0005\u0021\u0000\u0005\u0021\u0030\u0051\u002a\u007f\u0053\u0000\u0000\u000e\u002c\u0020\u0012\u002e\u0000\u0019\u002a\u0000\u001e\u0023\u0020\"\u001c\u0000\u0023\u0014\u0000\u001f\u0012\u0020\u0020\u0016\u0000\u001f\u001c\u0000\u001b\"\u0020\u0018\u0027\u0000\u0013\u002b\u0000\u000e\u002c\u0030\u0051\u002a\u007f\u0053\u0000\u0000\u0012\u004d\u0020\u001d\u0055\u0000\u0026\u0054\u0000\u002d\u0058\u0020\u0037\u005d\u0000\u003f\u0064\u0000\u0047\u005a\u0020\u004d\u0053\u0000\u004d\u004e\u0000\u004f\u004b\u0020\u0052\u0047\u0000\u0055\u0048\u0000\\\u003f\u0020\u0063\u0037\u0000\\\u0030\u0000\u0055\u0029\u0020\u0053\u002e\u0000\u0050\u0034\u0000\u004c\u0039\u0020\u003e\u004b\u0000\u0027\u0052\u0000\u0012\u004d\u0030\\\u007f\u0033\u0066\u0001\u0004\u006a\u001f\u0024\u006a\u001b\u0004\u0068\u000e\u0004\u0071\u0006\u0024\u007a\u0000\u0008\u0007\u0013\u0008\u0001\u001a\u0024\u007b\u0021\u0004\u006f\u0021\u0004\u006b\u0021\u0024\u006a\u0021\u0004\u006a\u0020\u0004\u006a\u001f\u0030\\\u007f\u0000\u002d\u0000\u0004\u006b\u001e\u0024\u006b\u001a\u0004\u006b\u000f\u0004\u0072\u0009\u0024\u007a\u0002\u0008\u0004\u0014\u0004\u007f\u001a\u0024\u0079\u0020\u0004\u0070\u001f\u0004\u006c\u001f\u0024\u006b\u001f\u0004\u006b\u001f\u0004\u006b\u001e\u0030\\\u007f\u0052\u0000\u0000\u0004\u0078\u0013\u0024\u0072\u0016\u0004\u006d\u001b\u0004\u006a\u0021\u0024\u0064\u0020\u0004\u005e\u0021\u0004\u0058\u0024\u0024\u0048\u002d\u0004\u0043\u0040\u0004\u004d\u0050\u0024\u0057\u0060\u0004\u0076\u0069\u0008\u000c\u0061\u0028\u0010\u0060\u0008\u0010\u005d\u0008\u0011\u005b\u0028\u0018\\\u0008\u0016\u005d\u0008\u001c\u005a\u0028\u002c\u0051\u0008\u0031\u0030\u0008\u0027\u0020\u0028\u001d\u0010\u0008\u0008\n\u0004\u0078\u0013\u0030\\\u007f\u0030\n\u0002\u0004\u006b\u0000\u0024\u0069\u0003\u0004\u0066\u0006\u0004\u0066\n\u0024\u0066\u0010\u0004\u0067\u0016\u0004\u0068\u001b\u0024\u0068\u001e\u0004\u006a\"\u0004\u006a\u0025\u0024\u006b\u0025\u0004\u006c\u0025\u0004\u006c\u0024\u0024\u006c\u0020\u0004\u006b\u001c\u0004\u006b\u0018\u0024\u006b\u0014\u0004\u006b\u0010\u0004\u006b\r\u0024\u006b\n\u0004\u006c\u0007\u0004\u006c\u0003\u0024\u006c\u0002\u0004\u006c\u0001\u0004\u006c\u0000\u0024\u006c\u0000\u0004\u006b\u0000\u0004\u006b\u0000\u0030\\\u007f\u007f\u0000\u0000\u0004\u0079\u0017\u0024\u0073\u001a\u0004\u006e\u001f\u0004\u006c\u0024\u0024\u0066\u0024\u0004\u005f\u0023\u0004\u0059\u0026\u0024\u004b\u002e\u0004\u004b\u0042\u0004\u0054\u004f\u0024\\\u005b\u0004\u006b\u0063\u0008\u0006\u005e\u0028\n\\\u0008\u000c\u005a\u0008\r\u0057\u0028\u0012\u0057\u0008\u0014\u0058\u0008\u0019\u0055\u0028\u0029\u0049\u0008\u002b\u0032\u0008\u0021\u0023\u0028\u0017\u0014\u0008\u0008\u0010\u0004\u0079\u0017\u0030\\\u007f\u0033\u0066\u0001\u0004\u006b\u0023\u0024\u0068\u0021\u0004\u005d\u0018\u0004\u0051\u001a\u0024\u0045\u001b\u0004\u0049\u0034\u0004\u0054\u0034\u0024\u0060\u0034\u0004\u0068\u0028\u0004\u006b\u0025\u0024\u006c\u0024\u0004\u006c\u0024\u0004\u006b\u0023\u0030\\\u007f\u0000\u002d\u0000\u0004\u0069\u0023\u0024\u0066\u0021\u0004\u005d\u001b\u0004\u0052\u001c\u0024\u0048\u001d\u0004\u004c\u0032\u0004\u0056\u0031\u0024\u0060\u0031\u0004\u0067\u0028\u0004\u0069\u0025\u0024\u006a\u0024\u0004\u0069\u0024\u0004\u0069\u0023\u0030\\\u0016\u0000\u0000\u0000\u0004\u0050\u0031\u0024\u004c\u003a\u0004\u004e\u0046\u0004\u0054\u004f\u0024\\\u005b\u0004\u006b\u0063\u0008\u0006\u005e\u0028\u0007\u005d\u0008\u0008\u005d\u0008\u0009\\\u0024\u006d\u005b\u0004\u0056\u0049\u0004\u0050\u0031\u0030\u0051\u007f\u0007\u002f\u0000\u0004\u0029\u0009\u0024\u0024\u0005\u0004\u001a\u0002\u0004\u0014\u0001\u0024\u0010\u0001\u0004\u000b\u0003\u0004\u0008\u0004\u0024\u0005\u0005\u0004\u0001\u0007\u0000\u007f\u0009\u0020\u007a\u000b\u0000\u0075\u0010\u0000\u0072\u0014\u0020\u0070\u0017\u0000\u006d\u001b\u0000\u006c\u001f\u0020\u0069\u0024\u0000\u0066\u002a\u0000\u0065\u0030\u0020\u0062\u003f\u0000\u0067\u003d\u0000\u0069\u0043\u0020\u006b\u0048\u0000\u0070\u004d\u0000\u0073\u0051\u0020\u0078\u0055\u0000\u007e\u005a\u0004\u0003\u005d\u0024\u0007\u005f\u0004\u000c\u0061\u0004\u0010\u0062\u0024\u0013\u0063\u0004\u0017\u0064\u0004\u001a\u0064\u0024\u001e\u0064\u0004\u0024\u0062\u0004\u0028\u0060\u0024\u002d\u005d\u0004\u0032\u0058\u0004\u0036\u0054\u0024\u0039\u0051\u0004\u003d\u004d\u0004\u003f\u0049\u0024\u0040\u0046\u0004\u0041\u0041\u0004\u0042\u003e\u0024\u0043\u003a\u0004\u0045\u0036\u0004\u0045\u0032\u0024\u0044\u002c\u0004\u0042\u0023\u0004\u003e\u001e\u0024\u0038\u0016\u0004\u0033\u000e\u0004\u0029\u0009\u0030\u0051\u007f\u0010\u005a\u0000\u0004\u0019\u0008\u0024\u0015\u0006\u0004\u000f\u0008\u0004\u000b\u0009\u0024\u0006\n\u0004\u0000\u000c\u0000\u007d\u000f\u0020\u0079\u0012\u0000\u0078\u0015\u0000\u0075\u0019\u0020\u0073\u001d\u0000\u006f\"\u0000\u006e\u0027\u0020\u006d\u002c\u0000\u006a\u0032\u0000\u006b\u0037\u0020\u006b\u003c\u0000\u0070\u0041\u0000\u0074\u0045\u0020\u0077\u004a\u0000\u007f\u0052\u0004\u0006\u0056\u0024\u000c\u005a\u0004\u0014\u005f\u0004\u001c\u005f\u0024\u0024\u005e\u0004\u0034\u0052\u0004\u0035\u0050\u0024\u0036\u004e\u0004\u003a\u0040\u0004\u003b\u003e\u0024\u003c\u003c\u0004\u003f\u0031\u0004\u003e\u002d\u0024\u003c\u002a\u0004\u003a\u0023\u0004\u0036\u001f\u0024\u0032\u001a\u0004\u002c\u0015\u0004\u0025\u000e\u0024\"\u000c\u0004\u001c\n\u0004\u0019\u0008\u0030\u0051\u007f\u0020\r\u0004\u0004\u0049\u0000\u0024\u0047\u0000\u0004\u0036\u0009\u0004\u0034\n\u0024\u0033\n\u0004\u002f\u000e\u0004\u002b\u0013\u0014\u0023\u001b\u0014\u002a\u0021\u0014\u0035\u0019\u0014\u0045\u0011\u0014\u0049\u0000\u0030\u0051\u007f\u003a\u0012\u0000\u0004\u0043\u0006\u0024\u0042\u0006\u0004\u0036\r\u0004\u0035\r\u0024\u0034\r\u0004\u0031\u0011\u0004\u002e\u0014\u0014\u0027\u001b\u0014\u002a\u001e\u0014\u0033\u0017\u0014\u0040\u0010\u0014\u0043\u0006\u0030\u0051\u0020\u0000\u0000\u0000\u0004\u0020\u001a\u0024\u001f\u0017\u0004\"\u0012\u0004\u0020\u0012\u0024\u001f\u0011\u0004\u001e\u0014\u0004\u001e\u0014\u0024\u001d\u0015\u0004\u001c\u0017\u0004\u001c\u0018\u0024\u001b\u0019\u0004\u001b\u001b\u0004\u001b\u001c\u0024\u001b\u001d\u0004\u001b\u001f\u0004\u001c\u0021\u0024\u001c\"\u0004\u001e\u0023\u0004\u001f\u0024\u0024\u0021\u0026\u0004\u0024\u0028\u0004\u0026\u0029\u0024\u0028\u002a\u0004\u002b\u002c\u0004\u002e\u002c\u0024\u0030\u002b\u0004\u0035\u0028\u0004\u0034\u0028\u0024\u002f\u0028\u0004\u002c\u0027\u0004\u002a\u0025\u0024\u002a\u0025\u0004\u0028\u0023\u0004\u0027\u0023\u0024\u0026\u0021\u0004\u0024\u0020\u0004\u0023\u001e\u0024\"\u001d\u0004\u0020\u001b\u0004\u0020\u001a\u0030\u0051\u0020\u0000\u0000\u0000\u0000\u0075\u0018\u0020\u0075\u0018\u0000\u0075\u0019\u0000\u0075\u0019\u0020\u0073\u001d\u0000\u006f\"\u0000\u006e\u0027\u0020\u006d\u002b\u0000\u006b\u0030\u0000\u006a\u0034\u0020\u006a\u0034\u0000\u006a\u0034\u0000\u006a\u0034\u0010\u006b\u0038\u0020\u006c\u003c\u0000\u0070\u0041\u0000\u0074\u0045\u0020\u0077\u004a\u0000\u007f\u0052\u0004\u0006\u0056\u0024\u000c\u005a\u0004\u0014\u005f\u0004\u001c\u005f\u0024\u001f\u005e\u0004\"\u005d\u0004\u0025\\\u0024\u0018\u005a\u0004\u0012\u0056\u0004\u000f\u0050\u0014\u0008\u0047\u0010\u007c\u0039\u0010\u0075\u002b\u0010\u0075\u0018\u0030";


	
	private BufferedImage tiger;
	private BufferedImage cow;
	private BufferedImage tanks;
	private BufferedImage apples;
	
	private final float[] decodePt(String s, int index){
		int c = s.charAt(index);
		return new float[]{s.charAt(index+1) | ((c & 0x0C) << 5), s.charAt(index+2) | ((c & 0x03) << 7)};
	}
	
	public BufferedImage loadSprite(String src){
		int w = src.charAt(0) << 7 | src.charAt(1);
		int h = src.charAt(2) << 7 | src.charAt(3);
		BufferedImage sprite = new BufferedImage(w,h,BufferedImage.TYPE_4BYTE_ABGR);
    	GeneralPath curShape = null;
    	Graphics2D g2d = (Graphics2D)sprite.getGraphics();
		g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
		BasicStroke stroke = null;
		Color strokeColor = null;
    	Color fill = null;
    	int index = 4;
        while(index < src.length()){
        	if (curShape == null){
        		curShape = new GeneralPath();
        	} else {
        		int cmd = src.charAt(index);
        		switch (cmd>>4){
        		case 0:
        			float[] m = decodePt(src,index);
        			curShape.moveTo(m[0],m[1]);
        			index += 3;
        			break;
        		case 1:
        			float[] l = decodePt(src,index);
        			curShape.lineTo(l[0],l[1]);
        			index += 3;
        			break;
        		case 2:
        			float[] a = decodePt(src,index);
        			float[] b = decodePt(src,index+3);
        			float[] c = decodePt(src,index+6);
        			curShape.curveTo(a[0],a[1],b[0],b[1],c[0],c[1]);
        			index += 9;
        			break;
        		case 3: 
        			curShape.closePath();
        			if (fill != null){
        				g2d.setColor(fill);
        				g2d.fill(curShape);
        			}
        			if (stroke != null){
        				g2d.setStroke(stroke);
        				g2d.setColor(strokeColor);
        				g2d.draw(curShape);
        			}
        			curShape = null;
        			index++;
        			break;
        		default:
        			index++;
        			// set style
        			if ((cmd & 0x20) != 0){
        				stroke = new BasicStroke(cmd & 0x0F);
                		strokeColor = new Color((src.charAt(index) << 25) | (src.charAt(index + 1) << 17) | (src.charAt(index + 2) << 9) | (src.charAt(index+3) << 1),true);
        				index += 4;
        			} else {
        				stroke = null;
        			}
        			if ((cmd & 0x10) != 0){
        				fill = new Color((src.charAt(index) << 25) | (src.charAt(index + 1) << 17) | (src.charAt(index + 2) << 9) | (src.charAt(index+3) << 1),true);
        				index += 4;
        			} else {
        				fill = null;
        			}
        		}
        	}
        }
        return sprite;
	}
	
	public Vector4K(){
		tiger = loadSprite(tigerData);
		tanks = loadSprite(tankData);
		cow = loadSprite(cowData);
		apples = loadSprite(applesData);
	}

	public void paint(Graphics g){
		g.setColor(Color.WHITE);
		g.fillRect(0,0,getWidth(),getHeight());
		g.drawImage(cow,0,0,null);
		g.drawImage(tiger,150,0,null);
		g.drawImage(tanks,96,240,null);
		g.drawImage(apples,64,300,null);
	}
	
	
	
}

convert source:

import java.awt.Color;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import java.io.File;
import java.io.IOException;
import java.util.LinkedList;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;


public class SVGConvert {
	
	private LinkedList txStack;
	private AffineTransform curTransform;

	public static final Color SVG_BLACK = new Color(0,0,0); 
	public static final Color SVG_SILVER = new Color(192,192,192); 
	public static final Color SVG_GRAY = new Color(128,128,128); 
	public static final Color SVG_WHITE = new Color(255,255,255); 
	public static final Color SVG_MAROON = new Color(0,0,128); 
	public static final Color SVG_RED = new Color(255,0,0); 
	public static final Color SVG_PURPLE = new Color(128,0,128); 
	public static final Color SVG_FUCHSIA = new Color(255,0,255); 
	public static final Color SVG_GREEN = new Color(0,128,0); 
	public static final Color SVG_LIME = new Color(0,255,0); 
	public static final Color SVG_OLIVE = new Color(128,128,0); 
	public static final Color SVG_YELLOW = new Color(255,255,0); 
	public static final Color SVG_NAVY = new Color(0,0,128); 
	public static final Color SVG_BLUE = new Color(0,0,255); 
	public static final Color SVG_TEAL = new Color(0,128,128); 
	public static final Color SVG_AQUA = new Color(0,255,255); 
	
	public static void main(String[] args){
		if (args.length != 1){
			System.out.println("Usage: SVGConvert svgfile");
			return;
		}
		
		File src = new File(args[0]);
		SVGConvert converter = new SVGConvert();
		System.out.println(converter.convert(src));
	}
	
	public SVGConvert(){
		txStack = new LinkedList();
		curTransform = new AffineTransform();
	}
	
	public String convert(File src){
		txStack.clear();
		curTransform.setToIdentity();
		try {
			Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(src);
			String output = processElement(doc.getDocumentElement());
			return toJavaString(output); 
		} catch (IOException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public String processElement(Element ele){
		StringBuilder output = new StringBuilder();
		String tagName = ele.getTagName();
		if (tagName.equals("svg")){
			pushTransform();
			int w = Math.round(Float.parseFloat(ele.getAttribute("width")));
			int h = Math.round(Float.parseFloat(ele.getAttribute("height")));;
			if (ele.getAttribute("x").length() > 0){
				int x = Math.round(Float.parseFloat(ele.getAttribute("x")));
				int y = Math.round(Float.parseFloat(ele.getAttribute("y")));
				curTransform.translate(-x, -y);
			}
			output.append(new String(new char[]{(char)(w >> 7),(char)(w & 0x7F), (char)(h >> 7),(char)(h & 0x7F)}));
			for(int i = 0; i< ele.getChildNodes().getLength(); i++){
				Node child = ele.getChildNodes().item(i);
				if (child.getNodeType() == Node.ELEMENT_NODE){
					output.append(processElement((Element)child));
				}
			}
			popTransform();
		} else if (tagName.equals("g")){
			pushTransform();			
			String tx = ele.getAttribute("transform"); 
			if (tx.length() > 0){
				curTransform.concatenate(loadTransform((tx)));
			}
			for(int i = 0; i< ele.getChildNodes().getLength(); i++){
				Node child = ele.getChildNodes().item(i);
				if (child.getNodeType() == Node.ELEMENT_NODE){
					output.append(processElement((Element)child));
				}
			}
			popTransform();			
		} else if (tagName.equals("path")){
			pushTransform();
			String tx = ele.getAttribute("transform"); 
			if (tx.length() > 0){
				curTransform.concatenate(loadTransform((tx)));
			}
			String style = loadStyle(ele.getAttribute("style"));
			String data = loadPath(ele.getAttribute("d"),style);
			output.append(style);
			output.append(data);
			popTransform();
		}
		return output.toString();
	}
	
	public void pushTransform(){
		txStack.push(new AffineTransform(curTransform));
	}
	
	public void popTransform(){
		curTransform.setTransform(txStack.pop());
	}

	
	public String loadPath(String d, String style){
		StringBuilder sb = new StringBuilder();
		String[] fields = d.split("[\\s+\\,]");
		int index = 0;
		float x = 0;
		float y = 0;
		char lastCmd = 'L';
		while (index < fields.length){
			char cmd = fields[index].charAt(0);
			if (Character.isLetter(cmd)){
				if (fields[index].length() > 1){
					fields[index] = fields[index].substring(1);
				} else {
					index++;
				}
			} else {
				cmd = lastCmd;
			}
			switch(cmd){
			case 'M':
				x = Float.parseFloat(fields[index]);
				y = Float.parseFloat(fields[index+1]);
				sb.append(encodePoint(0, transformPt(x, y)));
				lastCmd = 'L';
				index += 2;
				break;
			case 'm':
				x += Float.parseFloat(fields[index]);
				y += Float.parseFloat(fields[index+1]);
				sb.append(encodePoint(0, transformPt(x, y)));
				lastCmd = 'l';
				index += 2;
				break;
			case 'L':
				x = Float.parseFloat(fields[index]);
				y = Float.parseFloat(fields[index+1]);
				sb.append(encodePoint(1,transformPt(x, y)));
				lastCmd = 'L';
				index += 2;
				break;
			case 'l':
				x += Float.parseFloat(fields[index]);
				y += Float.parseFloat(fields[index+1]);
				sb.append(encodePoint(1,transformPt(x,y)));
				lastCmd = 'l';
				index += 2;
				break;
			case 'C':
				sb.append(encodePoint(2,transformPt(Float.parseFloat(fields[index]), Float.parseFloat(fields[index+1]))));
				sb.append(encodePoint(0,transformPt(Float.parseFloat(fields[index+2]), Float.parseFloat(fields[index+3]))));
				x = Float.parseFloat(fields[index+4]);
				y = Float.parseFloat(fields[index+5]);
				sb.append(encodePoint(0,transformPt(x,y)));
				lastCmd = 'C';
				index += 6;
				break;
			case 'c':
				sb.append(encodePoint(2,transformPt(Float.parseFloat(fields[index]) + x, Float.parseFloat(fields[index+1]) + y)));
				sb.append(encodePoint(0,transformPt(Float.parseFloat(fields[index+2]) + x, Float.parseFloat(fields[index+3]) + y)));
				x += Float.parseFloat(fields[index+4]);
				y += Float.parseFloat(fields[index+5]);
				sb.append(encodePoint(0,transformPt(x,y)));
				lastCmd = 'c';
				index += 6;
				break;
			case 'Z':
			case 'z':
				sb.append((char)(0x03 << 4));
				lastCmd = 'z';
				break;
			default:
				System.out.println("Unrecoginzed path cmd: " + fields[index] + " in " + d);
				index++;
			}
		}
		if (lastCmd != 'z'){
			sb.append((char)(0x03 << 4));
		}
		return sb.toString();
	}

	public Point2D.Float transformPt(float x, float y){
		Point2D.Float pt = new Point2D.Float(x,y);
		curTransform.transform(pt, pt);
		return pt;
	}
	
	public static String encodePoint(int cmd, Point2D.Float pt){
		float fx = pt.x;
		float fy = pt.y;
		
		if (fx < 0) fx = 0;
		if (fy < 0) fy = 0;
		if (fx > 511) fx = 511;
		if (fy > 511) fy = 511;
		
		if ((cmd >> 4) > 2){
			throw new IllegalStateException();
		}
		int x = Math.round(fx) & 0x1FF;
		int y = Math.round(fy) & 0x1FF;
		int b1 = ((cmd << 4) | ((x>>7) << 2) | (y>>7));
		int b2 = (x & 0x7F);
		int b3 = (y & 0x7F);
		String encoded = new String(new char[]{(char)b1,(char)b2,(char)b3}); 
		return encoded; 
	}
	
	public static String loadStyle(String s){
		String[] fields = s.split("\\;");
		int fillColor = 0;
		int strokeColor = 0;
		int fillAlpha = -1;
		int strokeAlpha = -1;
		int width = 1;
		for(int i = 0; i < fields.length; i++){
			String[] cmd = fields[i].split("\\:");
			if (cmd[0].equals("fill")){
				if (!cmd[1].equals("none")){
					fillColor = decodeColour(cmd[1]).getRGB();
					if (fillAlpha == -1){
						fillAlpha = 255;
					}
				} else {
					fillAlpha = 0;
				}
			} else if (cmd[0].equals("stroke")){
				if (!cmd[1].equals("none")){
					strokeColor = decodeColour(cmd[1]).getRGB();
					if (strokeAlpha == -1){
						strokeAlpha = 255;
					}
				} else {
					strokeAlpha = 0;
				}
			} else if (cmd[0].equals("fill-opacity")){
				if (fillAlpha != 0){
					fillAlpha = (int)(Float.parseFloat(cmd[1])*255);
				}
			} else if (cmd[0].equals("stroke-opacity")){
				strokeAlpha = (int)(Float.parseFloat(cmd[1])*255);
			} else if (cmd[0].equals("stroke-width")){
				String strokeWidth = cmd[1];
				if (strokeWidth.endsWith("px")){
					strokeWidth = strokeWidth.substring(0,strokeWidth.length()-2).trim();
				}
				width = Math.round(Float.parseFloat(strokeWidth)) & 0x0F;
			}
		}
		if (fillAlpha > 255 || strokeAlpha > 255){
			throw new IllegalStateException();
		}
		
		fillColor &= 0x00FFFFFF;
		fillColor |= (fillAlpha<<24);
		strokeColor &= 0x00FFFFFF;
		strokeColor |= (strokeAlpha<<24);
		if (strokeAlpha <= 0){
			strokeColor = 0;
		}
		if (fillAlpha <= 0){
			fillColor = 0;
		}
		int strokeBit = strokeAlpha <= 0 ? 0 : (1<<5);
		int fillBit = fillAlpha <= 0 ? 0 : (1<<4);
		int cmd = (1<<6) | strokeBit | fillBit | width; 
		
		String style = Character.toString((char)cmd);
		if (strokeBit != 0){
			style += encodeColor(new Color(strokeColor,true));
		}
		if (fillBit != 0){
			style += encodeColor(new Color(fillColor,true));
		}
		return style;
	}
	
	public AffineTransform loadTransform(String transform){
		AffineTransform tx = new AffineTransform();
		String[] fields = transform.split("[\\(\\)\\,]");
		if (fields[0].equals("matrix")){
			tx.setTransform(Double.parseDouble(fields[1]),
							Double.parseDouble(fields[2]),
							Double.parseDouble(fields[3]),
							Double.parseDouble(fields[4]),
							Double.parseDouble(fields[5]),
							Double.parseDouble(fields[6]));
					
		} else if (fields[0].equals("translate")){
			double x = Double.parseDouble(fields[1]);
			double y = x;
			if (fields.length > 2){
				y = Double.parseDouble(fields[2]);
			}
			tx.setToTranslation(x, y);
		}  else {
			System.out.println("Unsupported transform: " + transform);
		}
		return tx;
	}
	
	public static String encodeColor(Color col){
		String s = new String(new char[]{//(char)0x7F,0,0,(char)0x7F});
			(char)(col.getAlpha() >> 1),
			(char)(col.getRed() >> 1),	
			(char)(col.getGreen() >> 1),
			(char)(col.getBlue() >> 1),
		});
		return s;
	}
	
	public static Color decodeColour(String colour){
		if (colour.startsWith("#")){
			return Color.decode(colour);
		} else if (colour.equals("black")){
			return SVG_BLACK;
		} else if (colour.equals("silver")){
			return SVG_SILVER;
		} else if (colour.equals("gray")){
			return SVG_GRAY;
		} else if (colour.equals("white")){
			return SVG_WHITE;
		} else if (colour.equals("maroon")){
			return SVG_MAROON;
		} else if (colour.equals("red")){
			return SVG_RED;
		} else if (colour.equals("purple")){
			return SVG_PURPLE;
		} else if (colour.equals("fuchsia")){
			return SVG_FUCHSIA;
		} else if (colour.equals("green")){
			return SVG_GREEN;
		} else if (colour.equals("lime")){
			return SVG_LIME;
		} else if (colour.equals("olive")){
			return SVG_OLIVE;
		} else if (colour.equals("yellow")){
			return SVG_YELLOW;
		} else if (colour.equals("navy")){
			return SVG_NAVY;
		} else if (colour.equals("blue")){
			return SVG_BLUE;
		} else if (colour.equals("teal")){
			return SVG_TEAL;
		} else if (colour.equals("aqua")){
			return SVG_AQUA;
		} else {
			return Color.BLACK;
		}
	}
	
	public static String toJavaString(String str){
		StringBuilder sb = new StringBuilder();
		sb.append("String data = \"");
		for (int i = 0; i < str.length(); i++) {
			int val = str.charAt(i);
			if (val == 10){
				sb.append("\\n");
			} else if (val == 13){
				sb.append("\\r");
			} else if (val == 34){
				sb.append("\\\"");
			} else if (val == 92){
				sb.append("\\\\");
			} else if (val > 31 && val < 127){
				sb.append((char)val);
			} else {
				String ucode = Integer.toHexString(val);
				while (ucode.length() < 4) ucode = "0" + ucode;
				sb.append("\\u" + ucode);
			}
		}
		sb.append("\";");
		return sb.toString();
	}

	
}