// Path: AjaxChess/src/ajaxchess/util/ClassPath.java
// public class ClassPath extends File {
// 	private static final long serialVersionUID = 1L;
// 
// 	private static ClassPath instance = new ClassPath();
// 
// 	private static String getPath(Class<? extends ClassPath> cls) {
// 		try {
// 			String path = URLDecoder.decode(cls.getProtectionDomain().getCodeSource().getLocation().getPath(), "UTF-8");
// 			if (path.endsWith(".jar")) {
// 				path += separator + "..";
// 			} else if (path.endsWith(".class")) {
// 				int nParent = ClassPath.class.getPackage().getName().split("\\.").length + 1;
// 				for (int i = 0; i < nParent; i ++) {
// 					path += separator + "..";
// 				}
// 			}
// 			return new File(path).getCanonicalPath();
// 		} catch (Exception e) {
// 			throw new RuntimeException(e);
// 		}
// 	}
// 
// 	private ClassPath(String strFile) {
// 		super(strFile);
// 	}
// 
// 	private ClassPath() {
// 		this(ClassPath.class);
// 	}
// 
// 	public ClassPath(Class<? extends ClassPath> cls) {
// 		super(getPath(cls));
// 	}
// 
// 	public ClassPath append(String strPath) {
// 		try {
// 			return new ClassPath(new File(getPath() + separator + strPath).getCanonicalPath());
// 		} catch (Exception e) {
// 			throw new RuntimeException(e);
// 		}
// 	}
// 
// 	public static ClassPath getInstance() {
// 		return instance;
// 	}
// 
// 	public static ClassPath getInstance(String strPath) {
// 		return instance.append(strPath);
// 	}
// }
// 
// Path: AjaxChess/src/ajaxchess/util/Integers.java
// public class Integers {
// 	public static int parse(String s) {
// 		return parse(s, 0);
// 	}
// 
// 	public static int parse(String s, int i) {
// 		int n = i;
// 		try {
// 			n = Integer.parseInt(s);
// 		} catch (Exception e) {
// 			// Ignored
// 		}
// 		return n;
// 	}
// 
// 	public static int minMax(int min, int mid, int max) {
// 		return mid < min ? min : mid > max ? max : mid;
// 	}
// }
// 
// Path: AjaxChess/src/ajaxchess/util/server/JettyServer.java
// public class JettyServer extends Server {
// 	public JettyServer(File home) throws Exception {
// 		this(home, 80);
// 	}
// 
// 	public JettyServer(File home, int port) throws Exception {
// 		SocketConnector connector = new SocketConnector();
// 		connector.setPort(port);
// 		addConnector(connector);
// 		initWebApp(home);
// 	}
// 
// 	public JettyServer(File home, File filePfx, String password) throws Exception {
// 		this(home, 443, filePfx, password);
// 	}
// 
// 	public JettyServer(File home, int nPort, File filePfx, String password) throws Exception {
// 		SslSocketConnector connector = new SslSocketConnector();
// 		connector.setPassword(password);
// 		connector.setKeystoreType("PKCS12");
// 		connector.setKeystore(filePfx.getPath());
// 		connector.setKeyPassword(password);
// 		connector.setTruststoreType("PKCS12");
// 		connector.setTruststore(filePfx.getPath());
// 		connector.setTrustPassword(password);
// 		connector.setWantClientAuth(true);
// 		connector.setPort(nPort);
// 		addConnector(connector);
// 		initWebApp(home);
// 	}
// 
// 	private void initWebApp(File home) throws Exception {
// 		HandlerCollection handler = new HandlerCollection();
// 		setHandler(handler);
// 		WebAppDeployer webapp = new WebAppDeployer();
// 		webapp.setContexts(handler);
// 		webapp.setWebAppDir(home + File.separator + "webapps");
// 		webapp.start();
// 	}
// }


import java.io.File;
import ajaxchess.util.ClassPath;
import ajaxchess.util.Integers;
import ajaxchess.util.server.JettyServer;



public class Startup {
	private static final File DEFAULT_HOME = ClassPath.getInstance("../../../..");

	public static void main(String[] args) throws Exception {

// Path: AjaxChess/src/ajaxchess/util/ClassPath.java
// public class ClassPath extends File {
// 	private static final long serialVersionUID = 1L;
// 
// 	private static ClassPath instance = new ClassPath();
// 
// 	private static String getPath(Class<? extends ClassPath> cls) {
// 		try {
// 			String path = URLDecoder.decode(cls.getProtectionDomain().getCodeSource().getLocation().getPath(), "UTF-8");
// 			if (path.endsWith(".jar")) {
// 				path += separator + "..";
// 			} else if (path.endsWith(".class")) {
// 				int nParent = ClassPath.class.getPackage().getName().split("\\.").length + 1;
// 				for (int i = 0; i < nParent; i ++) {
// 					path += separator + "..";
// 				}
// 			}
// 			return new File(path).getCanonicalPath();
// 		} catch (Exception e) {
// 			throw new RuntimeException(e);
// 		}
// 	}
// 
// 	private ClassPath(String strFile) {
// 		super(strFile);
// 	}
// 
// 	private ClassPath() {
// 		this(ClassPath.class);
// 	}
// 
// 	public ClassPath(Class<? extends ClassPath> cls) {
// 		super(getPath(cls));
// 	}
// 
// 	public ClassPath append(String strPath) {
// 		try {
// 			return new ClassPath(new File(getPath() + separator + strPath).getCanonicalPath());
// 		} catch (Exception e) {
// 			throw new RuntimeException(e);
// 		}
// 	}
// 
// 	public static ClassPath getInstance() {
// 		return instance;
// 	}
// 
// 	public static ClassPath getInstance(String strPath) {
// 		return instance.append(strPath);
// 	}
// }
// 
// Path: AjaxChess/src/ajaxchess/util/Integers.java
// public class Integers {
// 	public static int parse(String s) {
// 		return parse(s, 0);
// 	}
// 
// 	public static int parse(String s, int i) {
// 		int n = i;
// 		try {
// 			n = Integer.parseInt(s);
// 		} catch (Exception e) {
// 			// Ignored
// 		}
// 		return n;
// 	}
// 
// 	public static int minMax(int min, int mid, int max) {
// 		return mid < min ? min : mid > max ? max : mid;
// 	}
// }
// 
// Path: AjaxChess/src/ajaxchess/util/server/JettyServer.java
// public class JettyServer extends Server {
// 	public JettyServer(File home) throws Exception {
// 		this(home, 80);
// 	}
// 
// 	public JettyServer(File home, int port) throws Exception {
// 		SocketConnector connector = new SocketConnector();
// 		connector.setPort(port);
// 		addConnector(connector);
// 		initWebApp(home);
// 	}
// 
// 	public JettyServer(File home, File filePfx, String password) throws Exception {
// 		this(home, 443, filePfx, password);
// 	}
// 
// 	public JettyServer(File home, int nPort, File filePfx, String password) throws Exception {
// 		SslSocketConnector connector = new SslSocketConnector();
// 		connector.setPassword(password);
// 		connector.setKeystoreType("PKCS12");
// 		connector.setKeystore(filePfx.getPath());
// 		connector.setKeyPassword(password);
// 		connector.setTruststoreType("PKCS12");
// 		connector.setTruststore(filePfx.getPath());
// 		connector.setTrustPassword(password);
// 		connector.setWantClientAuth(true);
// 		connector.setPort(nPort);
// 		addConnector(connector);
// 		initWebApp(home);
// 	}
// 
// 	private void initWebApp(File home) throws Exception {
// 		HandlerCollection handler = new HandlerCollection();
// 		setHandler(handler);
// 		WebAppDeployer webapp = new WebAppDeployer();
// 		webapp.setContexts(handler);
// 		webapp.setWebAppDir(home + File.separator + "webapps");
// 		webapp.start();
// 	}
// }


// Path: AjaxChess/src/Startup.java
import java.io.File;
import ajaxchess.util.ClassPath;
import ajaxchess.util.Integers;
import ajaxchess.util.server.JettyServer;



public class Startup {
	private static final File DEFAULT_HOME = ClassPath.getInstance("../../../..");

	public static void main(String[] args) throws Exception {

		int port = (args.length == 0 ? 80 : Integers.parse(args[0], 80));
