Index: /orxonox/branches/movie_player/ChangeLog
===================================================================
--- /orxonox/branches/movie_player/ChangeLog	(revision 4216)
+++ /orxonox/branches/movie_player/ChangeLog	(revision 4217)
@@ -1,2 +1,6 @@
+2005-05-10	Benjamin Grauer <bensch@orxonox.ethz.ch>
+	Merged the gui into the executable
+	Windows compiles again.
+
 2005-04-27	orxonox
 	Tagged Version 0.2.3-pre-alpha
Index: /orxonox/branches/movie_player/Makefile.in
===================================================================
--- /orxonox/branches/movie_player/Makefile.in	(revision 4216)
+++ /orxonox/branches/movie_player/Makefile.in	(revision 4217)
@@ -105,12 +105,8 @@
 EXEEXT = @EXEEXT@
 GPROF = @GPROF@
-GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
-GTHREAD_LIBS = @GTHREAD_LIBS@
 GTK2_CFLAGS = @GTK2_CFLAGS@
 GTK2_LIBS = @GTK2_LIBS@
 HAVE_CURL_FALSE = @HAVE_CURL_FALSE@
 HAVE_CURL_TRUE = @HAVE_CURL_TRUE@
-HAVE_GTHREAD_FALSE = @HAVE_GTHREAD_FALSE@
-HAVE_GTHREAD_TRUE = @HAVE_GTHREAD_TRUE@
 HAVE_GTK2_FALSE = @HAVE_GTK2_FALSE@
 HAVE_GTK2_TRUE = @HAVE_GTK2_TRUE@
@@ -133,4 +129,6 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+RANLIB = @RANLIB@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -141,4 +139,5 @@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
Index: /orxonox/branches/movie_player/config.h.in
===================================================================
--- /orxonox/branches/movie_player/config.h.in	(revision 4216)
+++ /orxonox/branches/movie_player/config.h.in	(revision 4217)
@@ -18,7 +18,4 @@
 /* Define to 1 if you have the <GL/gl.h> header file. */
 #undef HAVE_GL_GL_H
-
-/* if we have gThread */
-#undef HAVE_GTHREAD
 
 /* if we have GTK2 */
@@ -43,7 +40,4 @@
 /* Define to 1 if you have the <OpenGL/gl.h> header file. */
 #undef HAVE_OPENGL_GL_H
-
-/* Define to 1 if you have the <pthread.h> header file. */
-#undef HAVE_PTHREAD_H
 
 /* Define to 1 if you have the <SDL.h> header file. */
Index: /orxonox/branches/movie_player/configure
===================================================================
--- /orxonox/branches/movie_player/configure	(revision 4216)
+++ /orxonox/branches/movie_player/configure	(revision 4217)
@@ -312,5 +312,5 @@
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CC CFLAGS ac_ct_CC CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP DEBUG SUB_PROJECTS_TRUE SUB_PROJECTS_FALSE DOCUMENTATION_TRUE DOCUMENTATION_FALSE DOXYGEN DOXYGEN_TRUE DOXYGEN_FALSE GPROF MSBITFIELDS GTK2_LIBS GTK2_CFLAGS HAVE_GTK2_TRUE HAVE_GTK2_FALSE GTHREAD_LIBS GTHREAD_CFLAGS HAVE_GTHREAD_TRUE HAVE_GTHREAD_FALSE CURL_LIBS CURL_CFLAGS HAVE_CURL_TRUE HAVE_CURL_FALSE LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE RANLIB ac_ct_RANLIB CC CFLAGS ac_ct_CC CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP DEBUG SUB_PROJECTS_TRUE SUB_PROJECTS_FALSE DOCUMENTATION_TRUE DOCUMENTATION_FALSE DOXYGEN DOXYGEN_TRUE DOXYGEN_FALSE GPROF PKG_CONFIG MSBITFIELDS GTK2_LIBS GTK2_CFLAGS HAVE_GTK2_TRUE HAVE_GTK2_FALSE CURL_LIBS CURL_CFLAGS HAVE_CURL_TRUE HAVE_CURL_FALSE LIBOBJS LTLIBOBJS'
 ac_subst_files=''
 
@@ -879,6 +879,4 @@
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
   --without-gtk           Prevents GTK from being loaded
-  --without-gthread       Prevents gThread from being loaded
-  --without-pthread       Prevents pthread from being loaded
   --without-curl          Prevents libcURL from being loaded
 
@@ -2591,4 +2589,84 @@
 
 
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  RANLIB=$ac_ct_RANLIB
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -3926,44 +4004,4 @@
 
 #------------------#
-# gThread-disabled #
-#------------------#
-echo "$as_me:$LINENO: checking if gThread should be enabled" >&5
-echo $ECHO_N "checking if gThread should be enabled... $ECHO_C" >&6
-
-# Check whether --with-gthread or --without-gthread was given.
-if test "${with_gthread+set}" = set; then
-  withval="$with_gthread"
-  def_gthread=no
-else
-  def_gthread=yes
-fi;
-if test x$def_gthread = xyes; then
-  echo "yes"
-fi
-if test x$def_gthread = xno; then
-  echo "no"
-fi
-
-#------------------#
-# pthread-disabled #
-#------------------#
-echo "$as_me:$LINENO: checking if pthread should be enabled" >&5
-echo $ECHO_N "checking if pthread should be enabled... $ECHO_C" >&6
-
-# Check whether --with-pthread or --without-pthread was given.
-if test "${with_pthread+set}" = set; then
-  withval="$with_pthread"
-  def_pthread=no
-else
-  def_pthread=yes
-fi;
-if test x$def_pthread = xyes; then
-  echo "yes"
-fi
-if test x$def_pthread = xno; then
-  echo "no"
-fi
-
-#------------------#
 # libCurl-disabled #
 #------------------#
@@ -4175,4 +4213,50 @@
   echo "$as_me:$LINENO: result: no" >&5
 echo "${ECHO_T}no" >&6
+fi
+
+
+#-------------------------#
+# checking for pkg-config #
+#-------------------------#
+if test x$def_gtk = xyes; then
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+  echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
 fi
 
@@ -6636,13 +6720,12 @@
 #-----#
 if test x$def_gtk = xyes; then
-
 	#PKG_CHECK_MODULES(GTK2, gtk+-2.0 >= 2.0.3 gthread-2.0 >= 2.0.3, have_gtk2=yes, have_gtk2=no)
 	echo "$as_me:$LINENO: checking for gtk2.0" >&5
 echo $ECHO_N "checking for gtk2.0... $ECHO_C" >&6
-	if `pkg-config --exists gtk+-2.0`; then
+	if `$PKG_CONFIG --exists gtk+-2.0`; then
   		echo "yes"
   		have_gtk2=yes
-		GTK2_LIBS=`pkg-config --libs gtk+-2.0`
-		GTK2_CFLAGS=`pkg-config --cflags gtk+-2.0`
+		GTK2_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
+		GTK2_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
 
 cat >>confdefs.h <<_ACEOF
@@ -6650,4 +6733,8 @@
 _ACEOF
 
+		if test $DEBUG -ge 3; then
+		 echo "cflags: $GTK2_CFLAGS"
+		 echo "libs: $GTK2_LIBS"
+		fi
 	else
 		echo "no"
@@ -6665,39 +6752,4 @@
   HAVE_GTK2_TRUE='#'
   HAVE_GTK2_FALSE=
-fi
-
-
-#---------#
-# gThread #
-#---------#
-if test x$def_gthread = xyes; then
-
-	echo "$as_me:$LINENO: checking for gthread" >&5
-echo $ECHO_N "checking for gthread... $ECHO_C" >&6
-	if `pkg-config --exists gthread-2.0`; then
-  		echo "yes"
-  		have_gthread=yes
-		GTHREAD_LIBS=`pkg-config --libs gthread-2.0`
-		GTHREAD_CFLAGS=`pkg-config --cflags gthread-2.0`
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_GTHREAD 1
-_ACEOF
-
-	else
-		echo "no"
-	fi
-
-fi
-
-
-
-
-if test x$have_gthread = xyes; then
-  HAVE_GTHREAD_TRUE=
-  HAVE_GTHREAD_FALSE='#'
-else
-  HAVE_GTHREAD_TRUE='#'
-  HAVE_GTHREAD_FALSE=
 fi
 
@@ -6949,11 +7001,317 @@
 
 
-#---------#
-# pthread #
-#---------#
-if test x$def_pthread = xyes ; then
- if test x$have_gthread = xyes ; then
-
-for ac_header in pthread.h
+#--------#
+# efence #
+#--------#
+if test x$def_efence = xyes ; then
+  echo "$as_me:$LINENO: checking for main in -lefence" >&5
+echo $ECHO_N "checking for main in -lefence... $ECHO_C" >&6
+if test "${ac_cv_lib_efence_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lefence  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_efence_main=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_efence_main=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_efence_main" >&5
+echo "${ECHO_T}$ac_cv_lib_efence_main" >&6
+if test $ac_cv_lib_efence_main = yes; then
+  FOUND_efence=yes
+fi
+
+   if test x$FOUND_efence = xyes ; then
+      LIBS="$LIBS -lefence"
+   fi
+
+fi
+
+# FIXME: Replace `main' with a function in `-lm':
+
+echo "$as_me:$LINENO: checking for main in -lm" >&5
+echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_m_main=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_main=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5
+echo "${ECHO_T}$ac_cv_lib_m_main" >&6
+if test $ac_cv_lib_m_main = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+  LIBS="-lm $LIBS"
+
+fi
+
+
+
+# Checks for header files.
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_header_stdc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      exit(2);
+  exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+
+
+for ac_header in stdlib.h string.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -7099,19 +7457,17 @@
 #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
- pthreadHeader="yes"
-else
-  pthreadHeader="no"
+
 fi
 
 done
 
-  echo "$as_me:$LINENO: checking for main in -lpthread" >&5
-echo $ECHO_N "checking for main in -lpthread... $ECHO_C" >&6
-if test "${ac_cv_lib_pthread_main+set}" = set; then
+
+# Checks for typedefs, structures, and compiler characteristics.
+echo "$as_me:$LINENO: checking for stdbool.h that conforms to C99" >&5
+echo $ECHO_N "checking for stdbool.h that conforms to C99... $ECHO_C" >&6
+if test "${ac_cv_header_stdbool_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lpthread  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
+  cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -7120,16 +7476,47 @@
 /* end confdefs.h.  */
 
+#include <stdbool.h>
+#ifndef bool
+# error bool is not defined
+#endif
+#ifndef false
+# error false is not defined
+#endif
+#if false
+# error false is not 0
+#endif
+#ifndef true
+# error true is not defined
+#endif
+#if true != 1
+# error true is not 1
+#endif
+#ifndef __bool_true_false_are_defined
+# error __bool_true_false_are_defined is not defined
+#endif
+
+	struct s { _Bool s: 1; _Bool t; } s;
+
+	char a[true == 1 ? 1 : -1];
+	char b[false == 0 ? 1 : -1];
+	char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+	char d[(bool) -0.5 == true ? 1 : -1];
+	bool e = &s;
+	char f[(_Bool) -0.0 == false ? 1 : -1];
+	char g[true];
+	char h[sizeof (_Bool)];
+	char i[sizeof s.t];
 
 int
 main ()
 {
-main ();
+ return !a + !b + !c + !d + !e + !f + !g + !h + !i;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
@@ -7145,5 +7532,5 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
+	 { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
@@ -7151,40 +7538,21 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_lib_pthread_main=yes
+  ac_cv_header_stdbool_h=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_lib_pthread_main=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_main" >&5
-echo "${ECHO_T}$ac_cv_lib_pthread_main" >&6
-if test $ac_cv_lib_pthread_main = yes; then
-  FOUND_pthread=yes
-fi
-
-   if test x$FOUND_pthread = xyes ; then
-      LIBS="$LIBS -lpthread"
-   fi
- fi
-fi
-
-
-#--------#
-# efence #
-#--------#
-if test x$def_efence = xyes ; then
-  echo "$as_me:$LINENO: checking for main in -lefence" >&5
-echo $ECHO_N "checking for main in -lefence... $ECHO_C" >&6
-if test "${ac_cv_lib_efence_main+set}" = set; then
+ac_cv_header_stdbool_h=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdbool_h" >&5
+echo "${ECHO_T}$ac_cv_header_stdbool_h" >&6
+echo "$as_me:$LINENO: checking for _Bool" >&5
+echo $ECHO_N "checking for _Bool... $ECHO_C" >&6
+if test "${ac_cv_type__Bool+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lefence  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
+  cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -7192,17 +7560,19 @@
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-
-
+$ac_includes_default
 int
 main ()
 {
-main ();
+if ((_Bool *) 0)
+  return 0;
+if (sizeof (_Bool))
+  return 0;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
@@ -7218,145 +7588,4 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_efence_main=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_efence_main=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_efence_main" >&5
-echo "${ECHO_T}$ac_cv_lib_efence_main" >&6
-if test $ac_cv_lib_efence_main = yes; then
-  FOUND_efence=yes
-fi
-
-   if test x$FOUND_efence = xyes ; then
-      LIBS="$LIBS -lefence"
-   fi
-
-fi
-
-# FIXME: Replace `main' with a function in `-lm':
-
-echo "$as_me:$LINENO: checking for main in -lm" >&5
-echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6
-if test "${ac_cv_lib_m_main+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-int
-main ()
-{
-main ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_m_main=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_m_main=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5
-echo "${ECHO_T}$ac_cv_lib_m_main" >&6
-if test $ac_cv_lib_m_main = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBM 1
-_ACEOF
-
-  LIBS="-lm $LIBS"
-
-fi
-
-
-
-# Checks for header files.
-echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
-if test "${ac_cv_header_stdc+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
 	 { ac_try='test -s conftest.$ac_objext'
   { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
@@ -7365,127 +7594,36 @@
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_header_stdc=yes
+  ac_cv_type__Bool=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_header_stdc=no
+ac_cv_type__Bool=no
 fi
 rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then
-  :
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then
-  :
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then
-  :
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ctype.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      exit(2);
-  exit (0);
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  :
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_header_stdc=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6
-if test $ac_cv_header_stdc = yes; then
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type__Bool" >&5
+echo "${ECHO_T}$ac_cv_type__Bool" >&6
+if test $ac_cv_type__Bool = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+if test $ac_cv_header_stdbool_h = yes; then
 
 cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
-
-fi
-
-
-
-for ac_header in stdlib.h string.h
+#define HAVE_STDBOOL_H 1
+_ACEOF
+
+fi
+
+
+# Checks for library functions.
+
+for ac_header in stdlib.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -7636,316 +7774,4 @@
 done
 
-
-# Checks for typedefs, structures, and compiler characteristics.
-echo "$as_me:$LINENO: checking for stdbool.h that conforms to C99" >&5
-echo $ECHO_N "checking for stdbool.h that conforms to C99... $ECHO_C" >&6
-if test "${ac_cv_header_stdbool_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#include <stdbool.h>
-#ifndef bool
-# error bool is not defined
-#endif
-#ifndef false
-# error false is not defined
-#endif
-#if false
-# error false is not 0
-#endif
-#ifndef true
-# error true is not defined
-#endif
-#if true != 1
-# error true is not 1
-#endif
-#ifndef __bool_true_false_are_defined
-# error __bool_true_false_are_defined is not defined
-#endif
-
-	struct s { _Bool s: 1; _Bool t; } s;
-
-	char a[true == 1 ? 1 : -1];
-	char b[false == 0 ? 1 : -1];
-	char c[__bool_true_false_are_defined == 1 ? 1 : -1];
-	char d[(bool) -0.5 == true ? 1 : -1];
-	bool e = &s;
-	char f[(_Bool) -0.0 == false ? 1 : -1];
-	char g[true];
-	char h[sizeof (_Bool)];
-	char i[sizeof s.t];
-
-int
-main ()
-{
- return !a + !b + !c + !d + !e + !f + !g + !h + !i;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_header_stdbool_h=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_header_stdbool_h=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_stdbool_h" >&5
-echo "${ECHO_T}$ac_cv_header_stdbool_h" >&6
-echo "$as_me:$LINENO: checking for _Bool" >&5
-echo $ECHO_N "checking for _Bool... $ECHO_C" >&6
-if test "${ac_cv_type__Bool+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if ((_Bool *) 0)
-  return 0;
-if (sizeof (_Bool))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type__Bool=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type__Bool=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type__Bool" >&5
-echo "${ECHO_T}$ac_cv_type__Bool" >&6
-if test $ac_cv_type__Bool = yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE__BOOL 1
-_ACEOF
-
-
-fi
-
-if test $ac_cv_header_stdbool_h = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_STDBOOL_H 1
-_ACEOF
-
-fi
-
-
-# Checks for library functions.
-
-for ac_header in stdlib.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------- ##
-## Report this to orxonox-dev at mail.datacore.ch ##
-## ---------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
 echo "$as_me:$LINENO: checking for GNU libc compatible malloc" >&5
 echo $ECHO_N "checking for GNU libc compatible malloc... $ECHO_C" >&6
@@ -8276,11 +8102,4 @@
 Usually this means the macro was only invoked conditionally." >&5
 echo "$as_me: error: conditional \"HAVE_GTK2\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${HAVE_GTHREAD_TRUE}" && test -z "${HAVE_GTHREAD_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"HAVE_GTHREAD\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"HAVE_GTHREAD\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
@@ -8882,4 +8701,6 @@
 s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t
 s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t
+s,@RANLIB@,$RANLIB,;t t
+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
 s,@CC@,$CC,;t t
 s,@CFLAGS@,$CFLAGS,;t t
@@ -8899,4 +8720,5 @@
 s,@DOXYGEN_FALSE@,$DOXYGEN_FALSE,;t t
 s,@GPROF@,$GPROF,;t t
+s,@PKG_CONFIG@,$PKG_CONFIG,;t t
 s,@MSBITFIELDS@,$MSBITFIELDS,;t t
 s,@GTK2_LIBS@,$GTK2_LIBS,;t t
@@ -8904,8 +8726,4 @@
 s,@HAVE_GTK2_TRUE@,$HAVE_GTK2_TRUE,;t t
 s,@HAVE_GTK2_FALSE@,$HAVE_GTK2_FALSE,;t t
-s,@GTHREAD_LIBS@,$GTHREAD_LIBS,;t t
-s,@GTHREAD_CFLAGS@,$GTHREAD_CFLAGS,;t t
-s,@HAVE_GTHREAD_TRUE@,$HAVE_GTHREAD_TRUE,;t t
-s,@HAVE_GTHREAD_FALSE@,$HAVE_GTHREAD_FALSE,;t t
 s,@CURL_LIBS@,$CURL_LIBS,;t t
 s,@CURL_CFLAGS@,$CURL_CFLAGS,;t t
Index: /orxonox/branches/movie_player/configure.ac
===================================================================
--- /orxonox/branches/movie_player/configure.ac	(revision 4216)
+++ /orxonox/branches/movie_player/configure.ac	(revision 4217)
@@ -39,4 +39,5 @@
 #########################
 AC_PROG_CXX
+AC_PROG_RANLIB
 AC_HEADER_STDC
 
@@ -96,32 +97,4 @@
 fi 
 if test x$def_gtk = xno; then 
-  echo "no"
-fi
-
-#------------------#
-# gThread-disabled #
-#------------------#
-AC_MSG_CHECKING([if gThread should be enabled])
-AC_ARG_WITH([gthread], 
-	AC_HELP_STRING(	[--without-gthread],
-	[Prevents gThread from being loaded]), [def_gthread=no], [def_gthread=yes]) 
-if test x$def_gthread = xyes; then 
-  echo "yes"
-fi 
-if test x$def_gthread = xno; then 
-  echo "no"
-fi
-
-#------------------#
-# pthread-disabled #
-#------------------#
-AC_MSG_CHECKING([if pthread should be enabled])
-AC_ARG_WITH([pthread], 
-	AC_HELP_STRING(	[--without-pthread], 
-	[Prevents pthread from being loaded]), [def_pthread=no], [def_pthread=yes]) 
-if test x$def_pthread = xyes; then 
-  echo "yes"
-fi 
-if test x$def_pthread = xno; then 
   echo "no"
 fi
@@ -218,4 +191,12 @@
 #--------------------#
 AC_PATH_PROG(GPROF, gprof)
+
+#-------------------------#
+# checking for pkg-config #
+#-------------------------#
+if test x$def_gtk = xyes; then
+ AC_PATH_PROG(PKG_CONFIG, pkg-config)
+fi
+
 
 #########################
@@ -462,13 +443,16 @@
 #-----#
 if test x$def_gtk = xyes; then 
-
 	#PKG_CHECK_MODULES(GTK2, gtk+-2.0 >= 2.0.3 gthread-2.0 >= 2.0.3, have_gtk2=yes, have_gtk2=no)
 	AC_MSG_CHECKING([for gtk2.0])
-	if `pkg-config --exists gtk+-2.0`; then
+	if `$PKG_CONFIG --exists gtk+-2.0`; then
   		echo "yes"
   		have_gtk2=yes
-		GTK2_LIBS=`pkg-config --libs gtk+-2.0`
-		GTK2_CFLAGS=`pkg-config --cflags gtk+-2.0`
+		GTK2_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
+		GTK2_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
 		AC_DEFINE_UNQUOTED(HAVE_GTK2, 1, [if we have GTK2])
+		if test $DEBUG -ge 3; then
+		 echo "cflags: $GTK2_CFLAGS"
+		 echo "libs: $GTK2_LIBS"
+		fi
 	else
 		echo "no"
@@ -479,25 +463,4 @@
 AC_SUBST(GTK2_CFLAGS)
 AM_CONDITIONAL(HAVE_GTK2, test x$have_gtk2 = xyes)
-
-#---------#
-# gThread #
-#---------#
-if test x$def_gthread = xyes; then 
-
-	AC_MSG_CHECKING([for gthread])
-	if `pkg-config --exists gthread-2.0`; then
-  		echo "yes"
-  		have_gthread=yes
-		GTHREAD_LIBS=`pkg-config --libs gthread-2.0`
-		GTHREAD_CFLAGS=`pkg-config --cflags gthread-2.0`
-		AC_DEFINE_UNQUOTED(HAVE_GTHREAD, 1, [if we have gThread])
-	else
-		echo "no"
-	fi
-
-fi
-AC_SUBST(GTHREAD_LIBS)
-AC_SUBST(GTHREAD_CFLAGS)
-AM_CONDITIONAL(HAVE_GTHREAD, test x$have_gthread = xyes)
 
 #---------#
@@ -521,18 +484,4 @@
 AC_SUBST(CURL_CFLAGS)
 AM_CONDITIONAL(HAVE_CURL, test x$have_curl = xyes)
-
-#---------#
-# pthread #
-#---------#
-if test x$def_pthread = xyes ; then
- if test x$have_gthread = xyes ; then
-  AC_CHECK_HEADERS([pthread.h], [pthreadHeader="yes"], [pthreadHeader="no"])
-  AC_CHECK_LIB([pthread], [main], [FOUND_pthread=yes])
-   if test x$FOUND_pthread = xyes ; then
-      LIBS="$LIBS -lpthread"
-   fi
- fi
-fi
-
 
 #--------#
Index: /orxonox/branches/movie_player/scripts/data.genlist.pl
===================================================================
--- /orxonox/branches/movie_player/scripts/data.genlist.pl	(revision 4217)
+++ /orxonox/branches/movie_player/scripts/data.genlist.pl	(revision 4217)
@@ -0,0 +1,68 @@
+#!/usr/bin/perl
+########################################################################## 
+#   orxonox - the future of 3D-vertical-scrollers			 #
+#									 #
+#   Copyright (C) 2004 orx						 #
+#									 #
+#   This program is free software; you can redistribute it and/or modify #
+#   it under the terms of the GNU General Public License as published by #
+#   the Free Software Foundation; either version 2, or (at your option)  #
+#   any later version.							 #
+#									 #
+#   ### File Specific:							 #
+#   main-programmer: Benjamin Grauer					 #
+#   co-programmer: ...							 #
+#									 #
+#   This is a simple perl script, that generates a List of all files     #
+#   contained in a Folder checked out with SVN and writes into an output #
+#   file.                                                                #
+##########################################################################
+
+if (@ARGV[0] eq "-h" || $ARGV[0] eq "--help" || @ARGV != 2)
+  {
+    die ("usage: data.genlist.pl <data-directory> <output-file>\n");
+  }
+
+
+if (! -d @ARGV[0])
+  {
+    die ("@ARGV[0] is not regular Directory.\n");
+  }
+
+open(FD, "> @ARGV[1]") or die("Couldn't open @ARGV[1]\n") ;
+
+
+&createFileList(@ARGV[0]);
+
+close(FD);
+
+
+sub createFileList
+  {
+   my ($folderName) = @_;
+   my ($fullName);
+   my ($inputFile);
+   my ($printFile);
+   my (@folderList);
+
+   open(FOLDERLIST, "ls $folderName -1 |");
+   @folderList = <FOLDERLIST>;
+
+   foreach $inputFile (@folderList)
+     {
+       if ($inputFile eq "." || $inputFile eq "..")
+	 {
+
+	 }
+       chomp($inputFile);
+       $fullName = "$folderName/$inputFile";
+
+       $printFile = $fullName;
+       $printFile =~ s/@ARGV[0]//;
+       print FD "$printFile\n";
+       if (-d $fullName )
+	 {
+	   &createFileList($fullName);
+	 }
+     }
+ }
Index: /orxonox/branches/movie_player/scripts/gtk-config.osXframework
===================================================================
--- /orxonox/branches/movie_player/scripts/gtk-config.osXframework	(revision 4217)
+++ /orxonox/branches/movie_player/scripts/gtk-config.osXframework	(revision 4217)
@@ -0,0 +1,112 @@
+#!/bin/sh
+
+glib_libs="-framework GLib"
+glib_cflags="-I/Library/Frameworks/GLib.framework/Headers"
+glib_thread_libs="-framework GLib -lpthread"
+glib_thread_cflags="-I/Library/Frameworks/GLib.framework/Headers"
+
+prefix=/Library/Frameworks
+gtk_fw_prefix=/Library/Frameworks
+exec_prefix=${prefix}
+exec_prefix_set=no
+
+usage()
+{
+	cat <<EOF
+Usage: gtk-config [OPTIONS] [LIBRARIES]
+Options:
+	[--prefix[=DIR]]
+	[--exec-prefix[=DIR]]
+	[--version]
+	[--libs]
+	[--cflags]
+Libraries:
+	gtk
+	gthread
+EOF
+	exit $1
+}
+
+if test $# -eq 0; then
+	usage 1 1>&2
+fi
+
+lib_gtk=yes
+
+while test $# -gt 0; do
+  case "$1" in
+  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  case $1 in
+    --prefix=*)
+      prefix=$optarg
+      if test $exec_prefix_set = no ; then
+        exec_prefix=$optarg
+      fi
+      ;;
+    --prefix)
+      echo_prefix=yes
+      ;;
+    --exec-prefix=*)
+      exec_prefix=$optarg
+      exec_prefix_set=yes
+      ;;
+    --exec-prefix)
+      echo_exec_prefix=yes
+      ;;
+    --version)
+      echo 1.2.10
+      ;;
+    --cflags)
+      echo_cflags=yes
+      ;;
+    --libs)
+      echo_libs=yes
+      ;;
+    gtk)
+      lib_gtk=yes
+      ;;
+    gthread)
+      lib_gthread=yes
+      ;;
+    *)
+      usage 1 1>&2
+      ;;
+  esac
+  shift
+done
+
+if test "$echo_prefix" = "yes"; then
+	echo $prefix
+fi
+
+if test "$echo_exec_prefix" = "yes"; then
+	echo $exec_prefix
+fi
+
+if test "$lib_gthread" = "yes"; then
+      glib_cflags="$glib_thread_cflags"
+      glib_libs="$glib_thread_libs"
+fi
+
+if test "$echo_cflags" = "yes"; then
+      echo -F${gtk_fw_prefix} ${glib_cflags} -I${gtk_fw_prefix}/GDK.framework/Headers -I${gtk_fw_prefix}/GTK.framework/Headers
+fi
+
+if test "$echo_libs" = "yes"; then
+      my_glib_libs=
+      libdirs=-F${exec_prefix}
+      for i in $glib_libs ; do
+        if test $i != -F${exec_prefix} ; then
+          if test -z "$my_glib_libs" ; then
+            my_glib_libs="$i"
+          else
+            my_glib_libs="$my_glib_libs $i"
+          fi
+        fi
+      done
+
+      echo $libdirs -F${gtk_fw_prefix} -framework GLib -framework GDK -framework GTK ${glib_cflags} -lm
+fi
Index: /orxonox/branches/movie_player/src/Makefile.am
===================================================================
--- /orxonox/branches/movie_player/src/Makefile.am	(revision 4216)
+++ /orxonox/branches/movie_player/src/Makefile.am	(revision 4217)
@@ -10,4 +10,5 @@
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/graphics/particles
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/gui
+AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/gui/gui
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/lang
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/util
@@ -21,13 +22,16 @@
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/util/animation
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/util/common
-
-
-AM_LDFLAGS= $(MWINDOWS)
+AM_CXXFLAGS+=-I$(MAINSRCDIR)/subprojects
+
+
 
 #"-O3 -pedantic -fPIC -ffast-math -I/usr/X11R6/include"
 
 
-bin_PROGRAMS=orxonox
-
+bin_PROGRAMS=orxonox 
+noinst_LIBRARIES = libORXgui.a
+
+orxonox_DEPENDENCIES = libORXgui.a
+orxonox_LDADD = libORXgui.a $(GTK2_LIBS) $(GTHREAD_LIBS) $(CURL_LIBS)
 orxonox_SOURCES= orxonox.cc \
 		 game_loader.cc \
@@ -85,6 +89,6 @@
 		 lib/xmlparser/tinystr.cc \
 		 lib/xmlparser/tinyxmlerror.cc \
-		 lib/xmlparser/tinyxmlparser.cc
-		 
+		 lib/xmlparser/tinyxmlparser.cc \
+		 subprojects/benchmark.cc
 
 noinst_HEADERS = orxonox.h \
@@ -129,4 +133,5 @@
 		 defs/error.h \
 		 defs/debug.h \
+		 defs/globals.h \
 		 lib/coord/p_node.h \
 		 lib/coord/null_parent.h \
@@ -147,5 +152,29 @@
 		 lib/math/vector.h \
 		 lib/math/curve.h \
-		 glmenu/glmenu_imagescreen.h 
+		 glmenu/glmenu_imagescreen.h \
+		 lib/gui/gui/gui.h \
+	         lib/gui/gui/gui_gtk.h \
+	         lib/gui/gui/gui_element.h \
+	         lib/gui/gui/gui_video.h \
+	         lib/gui/gui/gui_audio.h \
+	         lib/gui/gui/gui_exec.h \
+	         lib/gui/gui/gui_flags.h \
+	         lib/gui/gui/gui_banner.h \
+	         lib/gui/gui/gui_keys.h \
+	         lib/gui/gui/gui_update.h \
+		 subprojects/benchmark.h
+
+libORXgui_a_CPPFLAGS=$(GTK2_CFLAGS) $(GTHREAD_CFLAGS) $(CURL_CFLAGS) $(MSBITFIELDS)
+
+libORXgui_a_SOURCES = lib/gui/gui/gui.cc \
+			    lib/gui/gui/gui_gtk.cc \
+	                    lib/gui/gui/gui_element.cc \
+	       	            lib/gui/gui/gui_video.cc \
+	                    lib/gui/gui/gui_audio.cc \
+	                    lib/gui/gui/gui_exec.cc \
+	                    lib/gui/gui/gui_flags.cc \
+	                    lib/gui/gui/gui_banner.cc \
+	                    lib/gui/gui/gui_keys.cc \
+	                    lib/gui/gui/gui_update.cc
 
 
Index: /orxonox/branches/movie_player/src/Makefile.in
===================================================================
--- /orxonox/branches/movie_player/src/Makefile.in	(revision 4216)
+++ /orxonox/branches/movie_player/src/Makefile.in	(revision 4217)
@@ -16,5 +16,6 @@
 
 
-SOURCES = $(orxonox_SOURCES)
+
+SOURCES = $(libORXgui_a_SOURCES) $(orxonox_SOURCES)
 
 srcdir = @srcdir@
@@ -50,4 +51,19 @@
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+libORXgui_a_AR = $(AR) $(ARFLAGS)
+libORXgui_a_LIBADD =
+am_libORXgui_a_OBJECTS = libORXgui_a-gui.$(OBJEXT) \
+	libORXgui_a-gui_gtk.$(OBJEXT) \
+	libORXgui_a-gui_element.$(OBJEXT) \
+	libORXgui_a-gui_video.$(OBJEXT) \
+	libORXgui_a-gui_audio.$(OBJEXT) libORXgui_a-gui_exec.$(OBJEXT) \
+	libORXgui_a-gui_flags.$(OBJEXT) \
+	libORXgui_a-gui_banner.$(OBJEXT) \
+	libORXgui_a-gui_keys.$(OBJEXT) \
+	libORXgui_a-gui_update.$(OBJEXT)
+libORXgui_a_OBJECTS = $(am_libORXgui_a_OBJECTS)
 am__installdirs = "$(DESTDIR)$(bindir)"
 binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
@@ -74,7 +90,7 @@
 	vector.$(OBJEXT) curve.$(OBJEXT) glmenu_imagescreen.$(OBJEXT) \
 	tinyxml.$(OBJEXT) tinystr.$(OBJEXT) tinyxmlerror.$(OBJEXT) \
-	tinyxmlparser.$(OBJEXT)
+	tinyxmlparser.$(OBJEXT) benchmark.$(OBJEXT)
 orxonox_OBJECTS = $(am_orxonox_OBJECTS)
-orxonox_LDADD = $(LDADD)
+am__DEPENDENCIES_1 =
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
@@ -84,5 +100,6 @@
 @AMDEP_TRUE@	./$(DEPDIR)/animation_player.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/array.Po ./$(DEPDIR)/base_entity.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/base_object.Po ./$(DEPDIR)/camera.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/base_object.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/benchmark.Po ./$(DEPDIR)/camera.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/campaign.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/character_attributes.Po \
@@ -96,4 +113,14 @@
 @AMDEP_TRUE@	./$(DEPDIR)/helper_parent.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/ini_parser.Po ./$(DEPDIR)/keynames.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/libORXgui_a-gui.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/libORXgui_a-gui_audio.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/libORXgui_a-gui_banner.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/libORXgui_a-gui_element.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/libORXgui_a-gui_exec.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/libORXgui_a-gui_flags.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/libORXgui_a-gui_gtk.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/libORXgui_a-gui_keys.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/libORXgui_a-gui_update.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/libORXgui_a-gui_video.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/light.Po ./$(DEPDIR)/list.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/material.Po ./$(DEPDIR)/model.Po \
@@ -124,6 +151,6 @@
 CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
 	-o $@
-SOURCES = $(orxonox_SOURCES)
-DIST_SOURCES = $(orxonox_SOURCES)
+SOURCES = $(libORXgui_a_SOURCES) $(orxonox_SOURCES)
+DIST_SOURCES = $(libORXgui_a_SOURCES) $(orxonox_SOURCES)
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	html-recursive info-recursive install-data-recursive \
@@ -170,12 +197,8 @@
 EXEEXT = @EXEEXT@
 GPROF = @GPROF@
-GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
-GTHREAD_LIBS = @GTHREAD_LIBS@
 GTK2_CFLAGS = @GTK2_CFLAGS@
 GTK2_LIBS = @GTK2_LIBS@
 HAVE_CURL_FALSE = @HAVE_CURL_FALSE@
 HAVE_CURL_TRUE = @HAVE_CURL_TRUE@
-HAVE_GTHREAD_FALSE = @HAVE_GTHREAD_FALSE@
-HAVE_GTHREAD_TRUE = @HAVE_GTHREAD_TRUE@
 HAVE_GTK2_FALSE = @HAVE_GTK2_FALSE@
 HAVE_GTK2_TRUE = @HAVE_GTK2_TRUE@
@@ -198,4 +221,6 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+RANLIB = @RANLIB@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -206,4 +231,5 @@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
@@ -247,6 +273,8 @@
 target_vendor = @target_vendor@
 MAINSRCDIR = .
-AM_CXXFLAGS = -I$(MAINSRCDIR) -I$(MAINSRCDIR)/world_entities -I$(MAINSRCDIR)/story_entities -I$(MAINSRCDIR)/lib -I$(MAINSRCDIR)/lib/coord -I$(MAINSRCDIR)/lib/data -I$(MAINSRCDIR)/lib/graphics -I$(MAINSRCDIR)/lib/graphics/importer -I$(MAINSRCDIR)/lib/graphics/particles -I$(MAINSRCDIR)/lib/gui -I$(MAINSRCDIR)/lib/lang -I$(MAINSRCDIR)/lib/util -I$(MAINSRCDIR)/lib/math -I$(MAINSRCDIR)/defs -I$(MAINSRCDIR)/font -I$(MAINSRCDIR)/network -I$(MAINSRCDIR)/glmenu -I$(MAINSRCDIR)/ai -I$(MAINSRCDIR)/util -I$(MAINSRCDIR)/util/animation -I$(MAINSRCDIR)/util/common
-AM_LDFLAGS = $(MWINDOWS)
+AM_CXXFLAGS = -I$(MAINSRCDIR) -I$(MAINSRCDIR)/world_entities -I$(MAINSRCDIR)/story_entities -I$(MAINSRCDIR)/lib -I$(MAINSRCDIR)/lib/coord -I$(MAINSRCDIR)/lib/data -I$(MAINSRCDIR)/lib/graphics -I$(MAINSRCDIR)/lib/graphics/importer -I$(MAINSRCDIR)/lib/graphics/particles -I$(MAINSRCDIR)/lib/gui -I$(MAINSRCDIR)/lib/gui/gui -I$(MAINSRCDIR)/lib/lang -I$(MAINSRCDIR)/lib/util -I$(MAINSRCDIR)/lib/math -I$(MAINSRCDIR)/defs -I$(MAINSRCDIR)/font -I$(MAINSRCDIR)/network -I$(MAINSRCDIR)/glmenu -I$(MAINSRCDIR)/ai -I$(MAINSRCDIR)/util -I$(MAINSRCDIR)/util/animation -I$(MAINSRCDIR)/util/common -I$(MAINSRCDIR)/subprojects
+noinst_LIBRARIES = libORXgui.a
+orxonox_DEPENDENCIES = libORXgui.a
+orxonox_LDADD = libORXgui.a $(GTK2_LIBS) $(GTHREAD_LIBS) $(CURL_LIBS)
 orxonox_SOURCES = orxonox.cc \
 		 game_loader.cc \
@@ -304,5 +332,6 @@
 		 lib/xmlparser/tinystr.cc \
 		 lib/xmlparser/tinyxmlerror.cc \
-		 lib/xmlparser/tinyxmlparser.cc
+		 lib/xmlparser/tinyxmlparser.cc \
+		 subprojects/benchmark.cc
 
 noinst_HEADERS = orxonox.h \
@@ -347,4 +376,5 @@
 		 defs/error.h \
 		 defs/debug.h \
+		 defs/globals.h \
 		 lib/coord/p_node.h \
 		 lib/coord/null_parent.h \
@@ -365,5 +395,28 @@
 		 lib/math/vector.h \
 		 lib/math/curve.h \
-		 glmenu/glmenu_imagescreen.h 
+		 glmenu/glmenu_imagescreen.h \
+		 lib/gui/gui/gui.h \
+	         lib/gui/gui/gui_gtk.h \
+	         lib/gui/gui/gui_element.h \
+	         lib/gui/gui/gui_video.h \
+	         lib/gui/gui/gui_audio.h \
+	         lib/gui/gui/gui_exec.h \
+	         lib/gui/gui/gui_flags.h \
+	         lib/gui/gui/gui_banner.h \
+	         lib/gui/gui/gui_keys.h \
+	         lib/gui/gui/gui_update.h \
+		 subprojects/benchmark.h
+
+libORXgui_a_CPPFLAGS = $(GTK2_CFLAGS) $(GTHREAD_CFLAGS) $(CURL_CFLAGS) $(MSBITFIELDS)
+libORXgui_a_SOURCES = lib/gui/gui/gui.cc \
+			    lib/gui/gui/gui_gtk.cc \
+	                    lib/gui/gui/gui_element.cc \
+	       	            lib/gui/gui/gui_video.cc \
+	                    lib/gui/gui/gui_audio.cc \
+	                    lib/gui/gui/gui_exec.cc \
+	                    lib/gui/gui/gui_flags.cc \
+	                    lib/gui/gui/gui_banner.cc \
+	                    lib/gui/gui/gui_keys.cc \
+	                    lib/gui/gui/gui_update.cc
 
 EXTRA_DIST = orxonox.conf \
@@ -413,4 +466,11 @@
 $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLIBRARIES:
+	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libORXgui.a: $(libORXgui_a_OBJECTS) $(libORXgui_a_DEPENDENCIES) 
+	-rm -f libORXgui.a
+	$(libORXgui_a_AR) libORXgui.a $(libORXgui_a_OBJECTS) $(libORXgui_a_LIBADD)
+	$(RANLIB) libORXgui.a
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
@@ -453,4 +513,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base_entity.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base_object.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/benchmark.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/camera.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/campaign.Po@am__quote@
@@ -468,4 +529,14 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ini_parser.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keynames.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libORXgui_a-gui.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libORXgui_a-gui_audio.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libORXgui_a-gui_banner.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libORXgui_a-gui_element.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libORXgui_a-gui_exec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libORXgui_a-gui_flags.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libORXgui_a-gui_gtk.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libORXgui_a-gui_keys.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libORXgui_a-gui_update.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libORXgui_a-gui_video.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/light.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Po@am__quote@
@@ -519,4 +590,164 @@
 @am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
+libORXgui_a-gui.o: lib/gui/gui/gui.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libORXgui_a-gui.o -MD -MP -MF "$(DEPDIR)/libORXgui_a-gui.Tpo" -c -o libORXgui_a-gui.o `test -f 'lib/gui/gui/gui.cc' || echo '$(srcdir)/'`lib/gui/gui/gui.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libORXgui_a-gui.Tpo" "$(DEPDIR)/libORXgui_a-gui.Po"; else rm -f "$(DEPDIR)/libORXgui_a-gui.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui.cc' object='libORXgui_a-gui.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/libORXgui_a-gui.Po' tmpdepfile='$(DEPDIR)/libORXgui_a-gui.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libORXgui_a-gui.o `test -f 'lib/gui/gui/gui.cc' || echo '$(srcdir)/'`lib/gui/gui/gui.cc
+
+libORXgui_a-gui.obj: lib/gui/gui/gui.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libORXgui_a-gui.obj -MD -MP -MF "$(DEPDIR)/libORXgui_a-gui.Tpo" -c -o libORXgui_a-gui.obj `if test -f 'lib/gui/gui/gui.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libORXgui_a-gui.Tpo" "$(DEPDIR)/libORXgui_a-gui.Po"; else rm -f "$(DEPDIR)/libORXgui_a-gui.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui.cc' object='libORXgui_a-gui.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/libORXgui_a-gui.Po' tmpdepfile='$(DEPDIR)/libORXgui_a-gui.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libORXgui_a-gui.obj `if test -f 'lib/gui/gui/gui.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui.cc'; fi`
+
+libORXgui_a-gui_gtk.o: lib/gui/gui/gui_gtk.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libORXgui_a-gui_gtk.o -MD -MP -MF "$(DEPDIR)/libORXgui_a-gui_gtk.Tpo" -c -o libORXgui_a-gui_gtk.o `test -f 'lib/gui/gui/gui_gtk.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_gtk.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libORXgui_a-gui_gtk.Tpo" "$(DEPDIR)/libORXgui_a-gui_gtk.Po"; else rm -f "$(DEPDIR)/libORXgui_a-gui_gtk.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_gtk.cc' object='libORXgui_a-gui_gtk.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/libORXgui_a-gui_gtk.Po' tmpdepfile='$(DEPDIR)/libORXgui_a-gui_gtk.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libORXgui_a-gui_gtk.o `test -f 'lib/gui/gui/gui_gtk.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_gtk.cc
+
+libORXgui_a-gui_gtk.obj: lib/gui/gui/gui_gtk.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libORXgui_a-gui_gtk.obj -MD -MP -MF "$(DEPDIR)/libORXgui_a-gui_gtk.Tpo" -c -o libORXgui_a-gui_gtk.obj `if test -f 'lib/gui/gui/gui_gtk.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_gtk.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_gtk.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libORXgui_a-gui_gtk.Tpo" "$(DEPDIR)/libORXgui_a-gui_gtk.Po"; else rm -f "$(DEPDIR)/libORXgui_a-gui_gtk.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_gtk.cc' object='libORXgui_a-gui_gtk.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/libORXgui_a-gui_gtk.Po' tmpdepfile='$(DEPDIR)/libORXgui_a-gui_gtk.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libORXgui_a-gui_gtk.obj `if test -f 'lib/gui/gui/gui_gtk.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_gtk.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_gtk.cc'; fi`
+
+libORXgui_a-gui_element.o: lib/gui/gui/gui_element.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libORXgui_a-gui_element.o -MD -MP -MF "$(DEPDIR)/libORXgui_a-gui_element.Tpo" -c -o libORXgui_a-gui_element.o `test -f 'lib/gui/gui/gui_element.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_element.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libORXgui_a-gui_element.Tpo" "$(DEPDIR)/libORXgui_a-gui_element.Po"; else rm -f "$(DEPDIR)/libORXgui_a-gui_element.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_element.cc' object='libORXgui_a-gui_element.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/libORXgui_a-gui_element.Po' tmpdepfile='$(DEPDIR)/libORXgui_a-gui_element.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libORXgui_a-gui_element.o `test -f 'lib/gui/gui/gui_element.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_element.cc
+
+libORXgui_a-gui_element.obj: lib/gui/gui/gui_element.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libORXgui_a-gui_element.obj -MD -MP -MF "$(DEPDIR)/libORXgui_a-gui_element.Tpo" -c -o libORXgui_a-gui_element.obj `if test -f 'lib/gui/gui/gui_element.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_element.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_element.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libORXgui_a-gui_element.Tpo" "$(DEPDIR)/libORXgui_a-gui_element.Po"; else rm -f "$(DEPDIR)/libORXgui_a-gui_element.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_element.cc' object='libORXgui_a-gui_element.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/libORXgui_a-gui_element.Po' tmpdepfile='$(DEPDIR)/libORXgui_a-gui_element.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libORXgui_a-gui_element.obj `if test -f 'lib/gui/gui/gui_element.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_element.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_element.cc'; fi`
+
+libORXgui_a-gui_video.o: lib/gui/gui/gui_video.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libORXgui_a-gui_video.o -MD -MP -MF "$(DEPDIR)/libORXgui_a-gui_video.Tpo" -c -o libORXgui_a-gui_video.o `test -f 'lib/gui/gui/gui_video.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_video.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libORXgui_a-gui_video.Tpo" "$(DEPDIR)/libORXgui_a-gui_video.Po"; else rm -f "$(DEPDIR)/libORXgui_a-gui_video.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_video.cc' object='libORXgui_a-gui_video.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/libORXgui_a-gui_video.Po' tmpdepfile='$(DEPDIR)/libORXgui_a-gui_video.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libORXgui_a-gui_video.o `test -f 'lib/gui/gui/gui_video.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_video.cc
+
+libORXgui_a-gui_video.obj: lib/gui/gui/gui_video.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libORXgui_a-gui_video.obj -MD -MP -MF "$(DEPDIR)/libORXgui_a-gui_video.Tpo" -c -o libORXgui_a-gui_video.obj `if test -f 'lib/gui/gui/gui_video.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_video.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_video.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libORXgui_a-gui_video.Tpo" "$(DEPDIR)/libORXgui_a-gui_video.Po"; else rm -f "$(DEPDIR)/libORXgui_a-gui_video.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_video.cc' object='libORXgui_a-gui_video.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/libORXgui_a-gui_video.Po' tmpdepfile='$(DEPDIR)/libORXgui_a-gui_video.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libORXgui_a-gui_video.obj `if test -f 'lib/gui/gui/gui_video.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_video.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_video.cc'; fi`
+
+libORXgui_a-gui_audio.o: lib/gui/gui/gui_audio.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libORXgui_a-gui_audio.o -MD -MP -MF "$(DEPDIR)/libORXgui_a-gui_audio.Tpo" -c -o libORXgui_a-gui_audio.o `test -f 'lib/gui/gui/gui_audio.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_audio.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libORXgui_a-gui_audio.Tpo" "$(DEPDIR)/libORXgui_a-gui_audio.Po"; else rm -f "$(DEPDIR)/libORXgui_a-gui_audio.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_audio.cc' object='libORXgui_a-gui_audio.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/libORXgui_a-gui_audio.Po' tmpdepfile='$(DEPDIR)/libORXgui_a-gui_audio.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libORXgui_a-gui_audio.o `test -f 'lib/gui/gui/gui_audio.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_audio.cc
+
+libORXgui_a-gui_audio.obj: lib/gui/gui/gui_audio.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libORXgui_a-gui_audio.obj -MD -MP -MF "$(DEPDIR)/libORXgui_a-gui_audio.Tpo" -c -o libORXgui_a-gui_audio.obj `if test -f 'lib/gui/gui/gui_audio.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_audio.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_audio.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libORXgui_a-gui_audio.Tpo" "$(DEPDIR)/libORXgui_a-gui_audio.Po"; else rm -f "$(DEPDIR)/libORXgui_a-gui_audio.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_audio.cc' object='libORXgui_a-gui_audio.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/libORXgui_a-gui_audio.Po' tmpdepfile='$(DEPDIR)/libORXgui_a-gui_audio.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libORXgui_a-gui_audio.obj `if test -f 'lib/gui/gui/gui_audio.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_audio.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_audio.cc'; fi`
+
+libORXgui_a-gui_exec.o: lib/gui/gui/gui_exec.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libORXgui_a-gui_exec.o -MD -MP -MF "$(DEPDIR)/libORXgui_a-gui_exec.Tpo" -c -o libORXgui_a-gui_exec.o `test -f 'lib/gui/gui/gui_exec.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_exec.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libORXgui_a-gui_exec.Tpo" "$(DEPDIR)/libORXgui_a-gui_exec.Po"; else rm -f "$(DEPDIR)/libORXgui_a-gui_exec.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_exec.cc' object='libORXgui_a-gui_exec.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/libORXgui_a-gui_exec.Po' tmpdepfile='$(DEPDIR)/libORXgui_a-gui_exec.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libORXgui_a-gui_exec.o `test -f 'lib/gui/gui/gui_exec.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_exec.cc
+
+libORXgui_a-gui_exec.obj: lib/gui/gui/gui_exec.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libORXgui_a-gui_exec.obj -MD -MP -MF "$(DEPDIR)/libORXgui_a-gui_exec.Tpo" -c -o libORXgui_a-gui_exec.obj `if test -f 'lib/gui/gui/gui_exec.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_exec.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_exec.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libORXgui_a-gui_exec.Tpo" "$(DEPDIR)/libORXgui_a-gui_exec.Po"; else rm -f "$(DEPDIR)/libORXgui_a-gui_exec.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_exec.cc' object='libORXgui_a-gui_exec.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/libORXgui_a-gui_exec.Po' tmpdepfile='$(DEPDIR)/libORXgui_a-gui_exec.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libORXgui_a-gui_exec.obj `if test -f 'lib/gui/gui/gui_exec.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_exec.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_exec.cc'; fi`
+
+libORXgui_a-gui_flags.o: lib/gui/gui/gui_flags.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libORXgui_a-gui_flags.o -MD -MP -MF "$(DEPDIR)/libORXgui_a-gui_flags.Tpo" -c -o libORXgui_a-gui_flags.o `test -f 'lib/gui/gui/gui_flags.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_flags.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libORXgui_a-gui_flags.Tpo" "$(DEPDIR)/libORXgui_a-gui_flags.Po"; else rm -f "$(DEPDIR)/libORXgui_a-gui_flags.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_flags.cc' object='libORXgui_a-gui_flags.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/libORXgui_a-gui_flags.Po' tmpdepfile='$(DEPDIR)/libORXgui_a-gui_flags.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libORXgui_a-gui_flags.o `test -f 'lib/gui/gui/gui_flags.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_flags.cc
+
+libORXgui_a-gui_flags.obj: lib/gui/gui/gui_flags.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libORXgui_a-gui_flags.obj -MD -MP -MF "$(DEPDIR)/libORXgui_a-gui_flags.Tpo" -c -o libORXgui_a-gui_flags.obj `if test -f 'lib/gui/gui/gui_flags.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_flags.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_flags.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libORXgui_a-gui_flags.Tpo" "$(DEPDIR)/libORXgui_a-gui_flags.Po"; else rm -f "$(DEPDIR)/libORXgui_a-gui_flags.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_flags.cc' object='libORXgui_a-gui_flags.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/libORXgui_a-gui_flags.Po' tmpdepfile='$(DEPDIR)/libORXgui_a-gui_flags.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libORXgui_a-gui_flags.obj `if test -f 'lib/gui/gui/gui_flags.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_flags.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_flags.cc'; fi`
+
+libORXgui_a-gui_banner.o: lib/gui/gui/gui_banner.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libORXgui_a-gui_banner.o -MD -MP -MF "$(DEPDIR)/libORXgui_a-gui_banner.Tpo" -c -o libORXgui_a-gui_banner.o `test -f 'lib/gui/gui/gui_banner.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_banner.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libORXgui_a-gui_banner.Tpo" "$(DEPDIR)/libORXgui_a-gui_banner.Po"; else rm -f "$(DEPDIR)/libORXgui_a-gui_banner.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_banner.cc' object='libORXgui_a-gui_banner.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/libORXgui_a-gui_banner.Po' tmpdepfile='$(DEPDIR)/libORXgui_a-gui_banner.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libORXgui_a-gui_banner.o `test -f 'lib/gui/gui/gui_banner.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_banner.cc
+
+libORXgui_a-gui_banner.obj: lib/gui/gui/gui_banner.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libORXgui_a-gui_banner.obj -MD -MP -MF "$(DEPDIR)/libORXgui_a-gui_banner.Tpo" -c -o libORXgui_a-gui_banner.obj `if test -f 'lib/gui/gui/gui_banner.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_banner.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_banner.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libORXgui_a-gui_banner.Tpo" "$(DEPDIR)/libORXgui_a-gui_banner.Po"; else rm -f "$(DEPDIR)/libORXgui_a-gui_banner.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_banner.cc' object='libORXgui_a-gui_banner.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/libORXgui_a-gui_banner.Po' tmpdepfile='$(DEPDIR)/libORXgui_a-gui_banner.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libORXgui_a-gui_banner.obj `if test -f 'lib/gui/gui/gui_banner.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_banner.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_banner.cc'; fi`
+
+libORXgui_a-gui_keys.o: lib/gui/gui/gui_keys.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libORXgui_a-gui_keys.o -MD -MP -MF "$(DEPDIR)/libORXgui_a-gui_keys.Tpo" -c -o libORXgui_a-gui_keys.o `test -f 'lib/gui/gui/gui_keys.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_keys.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libORXgui_a-gui_keys.Tpo" "$(DEPDIR)/libORXgui_a-gui_keys.Po"; else rm -f "$(DEPDIR)/libORXgui_a-gui_keys.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_keys.cc' object='libORXgui_a-gui_keys.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/libORXgui_a-gui_keys.Po' tmpdepfile='$(DEPDIR)/libORXgui_a-gui_keys.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libORXgui_a-gui_keys.o `test -f 'lib/gui/gui/gui_keys.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_keys.cc
+
+libORXgui_a-gui_keys.obj: lib/gui/gui/gui_keys.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libORXgui_a-gui_keys.obj -MD -MP -MF "$(DEPDIR)/libORXgui_a-gui_keys.Tpo" -c -o libORXgui_a-gui_keys.obj `if test -f 'lib/gui/gui/gui_keys.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_keys.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_keys.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libORXgui_a-gui_keys.Tpo" "$(DEPDIR)/libORXgui_a-gui_keys.Po"; else rm -f "$(DEPDIR)/libORXgui_a-gui_keys.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_keys.cc' object='libORXgui_a-gui_keys.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/libORXgui_a-gui_keys.Po' tmpdepfile='$(DEPDIR)/libORXgui_a-gui_keys.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libORXgui_a-gui_keys.obj `if test -f 'lib/gui/gui/gui_keys.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_keys.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_keys.cc'; fi`
+
+libORXgui_a-gui_update.o: lib/gui/gui/gui_update.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libORXgui_a-gui_update.o -MD -MP -MF "$(DEPDIR)/libORXgui_a-gui_update.Tpo" -c -o libORXgui_a-gui_update.o `test -f 'lib/gui/gui/gui_update.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_update.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libORXgui_a-gui_update.Tpo" "$(DEPDIR)/libORXgui_a-gui_update.Po"; else rm -f "$(DEPDIR)/libORXgui_a-gui_update.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_update.cc' object='libORXgui_a-gui_update.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/libORXgui_a-gui_update.Po' tmpdepfile='$(DEPDIR)/libORXgui_a-gui_update.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libORXgui_a-gui_update.o `test -f 'lib/gui/gui/gui_update.cc' || echo '$(srcdir)/'`lib/gui/gui/gui_update.cc
+
+libORXgui_a-gui_update.obj: lib/gui/gui/gui_update.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libORXgui_a-gui_update.obj -MD -MP -MF "$(DEPDIR)/libORXgui_a-gui_update.Tpo" -c -o libORXgui_a-gui_update.obj `if test -f 'lib/gui/gui/gui_update.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_update.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_update.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libORXgui_a-gui_update.Tpo" "$(DEPDIR)/libORXgui_a-gui_update.Po"; else rm -f "$(DEPDIR)/libORXgui_a-gui_update.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/gui/gui/gui_update.cc' object='libORXgui_a-gui_update.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/libORXgui_a-gui_update.Po' tmpdepfile='$(DEPDIR)/libORXgui_a-gui_update.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libORXgui_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libORXgui_a-gui_update.obj `if test -f 'lib/gui/gui/gui_update.cc'; then $(CYGPATH_W) 'lib/gui/gui/gui_update.cc'; else $(CYGPATH_W) '$(srcdir)/lib/gui/gui/gui_update.cc'; fi`
+
 camera.o: world_entities/camera.cc
 @am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT camera.o -MD -MP -MF "$(DEPDIR)/camera.Tpo" -c -o camera.o `test -f 'world_entities/camera.cc' || echo '$(srcdir)/'`world_entities/camera.cc; \
@@ -1286,4 +1517,20 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tinyxmlparser.obj `if test -f 'lib/xmlparser/tinyxmlparser.cc'; then $(CYGPATH_W) 'lib/xmlparser/tinyxmlparser.cc'; else $(CYGPATH_W) '$(srcdir)/lib/xmlparser/tinyxmlparser.cc'; fi`
+
+benchmark.o: subprojects/benchmark.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT benchmark.o -MD -MP -MF "$(DEPDIR)/benchmark.Tpo" -c -o benchmark.o `test -f 'subprojects/benchmark.cc' || echo '$(srcdir)/'`subprojects/benchmark.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/benchmark.Tpo" "$(DEPDIR)/benchmark.Po"; else rm -f "$(DEPDIR)/benchmark.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='subprojects/benchmark.cc' object='benchmark.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/benchmark.Po' tmpdepfile='$(DEPDIR)/benchmark.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o benchmark.o `test -f 'subprojects/benchmark.cc' || echo '$(srcdir)/'`subprojects/benchmark.cc
+
+benchmark.obj: subprojects/benchmark.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT benchmark.obj -MD -MP -MF "$(DEPDIR)/benchmark.Tpo" -c -o benchmark.obj `if test -f 'subprojects/benchmark.cc'; then $(CYGPATH_W) 'subprojects/benchmark.cc'; else $(CYGPATH_W) '$(srcdir)/subprojects/benchmark.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/benchmark.Tpo" "$(DEPDIR)/benchmark.Po"; else rm -f "$(DEPDIR)/benchmark.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='subprojects/benchmark.cc' object='benchmark.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/benchmark.Po' tmpdepfile='$(DEPDIR)/benchmark.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o benchmark.obj `if test -f 'subprojects/benchmark.cc'; then $(CYGPATH_W) 'subprojects/benchmark.cc'; else $(CYGPATH_W) '$(srcdir)/subprojects/benchmark.cc'; fi`
 uninstall-info-am:
 
@@ -1409,5 +1656,5 @@
 
 distdir: $(DISTFILES)
-	$(mkdir_p) $(distdir)/ai $(distdir)/defs $(distdir)/glmenu $(distdir)/lib/coord $(distdir)/lib/data $(distdir)/lib/graphics $(distdir)/lib/graphics/particles $(distdir)/lib/lang $(distdir)/lib/math $(distdir)/lib/util $(distdir)/network $(distdir)/proto $(distdir)/story_entities $(distdir)/util $(distdir)/util/animation $(distdir)/util/common $(distdir)/world_entities
+	$(mkdir_p) $(distdir)/ai $(distdir)/defs $(distdir)/glmenu $(distdir)/lib/coord $(distdir)/lib/data $(distdir)/lib/graphics $(distdir)/lib/graphics/particles $(distdir)/lib/gui/gui $(distdir)/lib/lang $(distdir)/lib/math $(distdir)/lib/util $(distdir)/network $(distdir)/proto $(distdir)/story_entities $(distdir)/subprojects $(distdir)/util $(distdir)/util/animation $(distdir)/util/common $(distdir)/world_entities
 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
@@ -1451,5 +1698,5 @@
 check-am: all-am
 check: check-recursive
-all-am: Makefile $(PROGRAMS) $(HEADERS)
+all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS)
 installdirs: installdirs-recursive
 installdirs-am:
@@ -1483,5 +1730,6 @@
 clean: clean-recursive
 
-clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+clean-am: clean-binPROGRAMS clean-generic clean-noinstLIBRARIES \
+	mostlyclean-am
 
 distclean: distclean-recursive
@@ -1533,16 +1781,16 @@
 
 .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
-	clean clean-binPROGRAMS clean-generic clean-recursive ctags \
-	ctags-recursive distclean distclean-compile distclean-generic \
-	distclean-recursive distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-binPROGRAMS \
-	install-data install-data-am install-exec install-exec-am \
-	install-info install-info-am install-man install-strip \
-	installcheck installcheck-am installdirs installdirs-am \
-	maintainer-clean maintainer-clean-generic \
-	maintainer-clean-recursive mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-recursive pdf pdf-am ps ps-am \
-	tags tags-recursive uninstall uninstall-am \
-	uninstall-binPROGRAMS uninstall-info-am
+	clean clean-binPROGRAMS clean-generic clean-noinstLIBRARIES \
+	clean-recursive ctags ctags-recursive distclean \
+	distclean-compile distclean-generic distclean-recursive \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-binPROGRAMS install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic maintainer-clean-recursive \
+	mostlyclean mostlyclean-compile mostlyclean-generic \
+	mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
+	uninstall uninstall-am uninstall-binPROGRAMS uninstall-info-am
 
 
Index: /orxonox/branches/movie_player/src/command_node.cc
===================================================================
--- /orxonox/branches/movie_player/src/command_node.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/command_node.cc	(revision 4217)
@@ -57,5 +57,5 @@
   this->bEnabled = true;
   this->world = NULL;
-  this->loadBindings (filename);
+  this->loadBindings(filename);
 }
 
@@ -111,11 +111,9 @@
    \param filename: The path and name of the file to load the bindings from
 */
-void CommandNode::loadBindings (char* filename)
+void CommandNode::loadBindings (char* filename = DEFAULT_KEYBIND_FILE)
 {
   FILE* stream;
   
   PRINTF(4)("Loading key bindings from %s\n", filename);
-  
-  if( filename == NULL) filename = DEFAULT_KEYBIND_FILE;
   
   // remove old bindings if present
@@ -128,7 +126,7 @@
   // create parser
   IniParser parser (filename);
-  if( parser.getSection ("Bindings") == -1)
-    {
-      PRINTF(1)("Could not find key bindings in %s\n", filename);
+  if( parser.getSection (CONFIG_SECTION_PLAYER "1") == -1)
+    {
+      PRINTF(1)("Could not find key bindings " CONFIG_SECTION_PLAYER"1 in %s\n", filename);
       return;
     }
@@ -144,14 +142,14 @@
   while( parser.nextVar (namebuf, valuebuf) != -1)
     {
-      index = nameToIndex (namebuf);
+      index = nameToIndex (valuebuf);
       switch( index[0])
 	{
 	case 0:
-	  PRINTF(4)("Key binding %d(%s) set to %s\n", index[1], SDLKToKeyname( index[1]), valuebuf);
-	  strcpy (aliases->keys[index[1]], valuebuf);
+	  PRINTF(4)("Key binding %d(%s) set to %s\n", index[1], SDLKToKeyname( index[1]), namebuf);
+	  strcpy (aliases->keys[index[1]], namebuf);
 	  break;
 	case 1:
-	  PRINTF(4)("Button binding %d(%s) set to %s\n", index[1], SDLBToButtonname( index[1]), valuebuf);
-	  strcpy (aliases->buttons[index[1]], valuebuf);
+	  PRINTF(4)("Button binding %d(%s) set to %s\n", index[1], SDLBToButtonname( index[1]), namebuf);
+	  strcpy (aliases->buttons[index[1]], namebuf);
 	  break;
 	default:
@@ -161,4 +159,33 @@
       memset (valuebuf, 0, 256);
     }
+
+
+  // PARSE MISC SECTION
+  if( parser.getSection (CONFIG_SECTION_MISC_KEYS) == -1)
+    {
+      PRINTF(1)("Could not find key bindings in %s\n", filename);
+      return;
+    }
+
+  while( parser.nextVar (namebuf, valuebuf) != -1)
+    {
+      index = nameToIndex (valuebuf);
+      switch( index[0])
+	{
+	case 0:
+	  PRINTF(4)("Key binding %d(%s) set to %s\n", index[1], SDLKToKeyname( index[1]), namebuf);
+	  strcpy (aliases->keys[index[1]], namebuf);
+	  break;
+	case 1:
+	  PRINTF(4)("Button binding %d(%s) set to %s\n", index[1], SDLBToButtonname( index[1]), namebuf);
+	  strcpy (aliases->buttons[index[1]], namebuf);
+	  break;
+	default:
+	  break;
+	}
+      memset (namebuf, 0, 256);
+      memset (valuebuf, 0, 256);
+    }
+
 }
 
Index: /orxonox/branches/movie_player/src/command_node.h
===================================================================
--- /orxonox/branches/movie_player/src/command_node.h	(revision 4216)
+++ /orxonox/branches/movie_player/src/command_node.h	(revision 4217)
@@ -18,5 +18,5 @@
 #define N_STD_KEYS SDLK_LAST
 #define N_BUTTONS 6
-#define DEFAULT_KEYBIND_FILE "default.ini"
+#define DEFAULT_KEYBIND_FILE "~/.orxonox/orxonox.conf"
 
 //! Key aliasing structure
Index: /orxonox/branches/movie_player/src/defs/debug.h
===================================================================
--- /orxonox/branches/movie_player/src/defs/debug.h	(revision 4216)
+++ /orxonox/branches/movie_player/src/defs/debug.h	(revision 4217)
@@ -59,7 +59,7 @@
 #define DEBUG_MODULE_PNODE              1
 #define DEBUG_MODULE_WORLD_ENTITY       0
-#define DEBUG_MODULE_COMMAND_NODE       0
+#define DEBUG_MODULE_COMMAND_NODE       4
 #define DEBUG_MODULE_GRAPHICS           0
-#define DEBUG_MODULE_LOAD               0
+#define DEBUG_MODULE_LOAD               2
 
 #define DEBUG_MODULE_IMPORTER           3
Index: /orxonox/branches/movie_player/src/defs/globals.h
===================================================================
--- /orxonox/branches/movie_player/src/defs/globals.h	(revision 4217)
+++ /orxonox/branches/movie_player/src/defs/globals.h	(revision 4217)
@@ -0,0 +1,76 @@
+/*!
+  \file globals.h
+  \brief This file defines some default values.
+  
+  no Class is defined here.
+*/
+
+#ifndef _GLOBALS_H
+#define _GLOBALS_H
+
+#define ORXONOX_STAFF "Patrick Boenzli - Captain\n" \
+                      "Benjamin Grauer - First Officer\n" \
+		      "Christian Meyer - Engeneer\n" \
+		      "Nico Bernold - Physics\n" \
+		      "David Gruetter - The ProtoType\n" \
+		      "many more\n" 
+
+#define DEFAULT_CONFIG_FILE "~/.orxonox/orxonox.conf"
+#define DEFAULT_DATA_DIR "/usr/share/orxonox/data/"
+#define DEFAULT_DATA_DIR_CHECKFILE "data.oxd"
+
+// Defines all the Sections of the Config (in Gui and ORxonox)
+//! Name of Section Misc in the config-File
+#define CONFIG_SECTION_MISC "misc"
+#define CONFIG_SECTION_MISC_KEYS "miscKeys"
+#define CONFIG_SECTION_PLAYER "player"
+#define CONFIG_SECTION_VIDEO "video"
+#define CONFIG_SECTION_VIDEO_ADVANCED "video_advanced"
+#define CONFIG_SECTION_AUDIO "audio"
+#define CONFIG_SECTION_EXEC "exec"
+#define CONFIG_SECTION_DATA "data"
+
+/*
+  TAGS for all the Configuration Options
+  Consider they may __not__ have any WhiteSpaces inside
+*/
+#define CONFIG_NAME_DATADIR "DataDir"
+#define CONFIG_NAME_AUTO_UPDATE "Auto-Update"
+#define CONFIG_NAME_FULLSCREEN "Fullscreen-mode"
+#define CONFIG_NAME_RESOLUTION "Resolution"
+#define CONFIG_NAME_WIREFRAME "WireFrame-mode"
+#define CONFIG_NAME_SHADOWS "Shadows"
+#define CONFIG_NAME_FOG "Fog"
+#define CONFIG_NAME_REFLECTIONS "Reflections"
+#define CONFIG_NAME_TEXTURES "TEXTURES"
+#define CONFIG_NAME_TEXTURE_DETAIL "Texture-Detail"
+#define CONFIG_NAME_MODEL_DETAIL "Model-Detail"
+#define CONFIG_NAME_PARTICLES_ENABLED "Particles Enabled"
+#define CONFIG_NAME_ANTI_ALIASING "Anti-Aliasing"
+#define CONFIG_NAME_FILTER_METHOD "Filtering-Method"
+#define CONFIG_NAME_DISABLE_AUDIO "Disable-Audio"
+#define CONFIG_NAME_MUSIC_VOLUME "Music-Volume"
+#define CONFIG_NAME_EFFECTS_VOLUME "Effects-Volume"
+#define CONFIG_NAME_SAVE_SETTINGS "Save-Settings"
+#define CONFIG_NAME_VERBOSE_MODE "Verbose-Mode"
+#define CONFIG_NAME_ALWAYS_SHOW_GUI "Always-Show-The-Gui"
+#define CONFIG_NAME_PLAYER_UP "Up"
+#define CONFIG_NAME_PLAYER_DOWN "Down"
+#define CONFIG_NAME_PLAYER_LEFT "Left"
+#define CONFIG_NAME_PLAYER_RIGHT "Right"
+#define CONFIG_NAME_PLAYER_FIRE "Fire"
+#define CONFIG_NAME_PLAYER_NEXT_WEAPON "Next"
+#define CONFIG_NAME_PLAYER_PREV_WEAPON "Prev"
+#define CONFIG_NAME_QUIT "Quit"
+#define CONFIG_NAME_PAUSE "Pause"
+#define CONFIG_NAME_NEXT_WORLD "Next-World"
+#define CONFIG_NAME_PREV_WORLD "Prev-World"
+#define CONFIG_NAME_VIEW0 "view0"
+#define CONFIG_NAME_VIEW1 "view1"
+#define CONFIG_NAME_VIEW2 "view2"
+#define CONFIG_NAME_VIEW3 "view3"
+#define CONFIG_NAME_VIEW4 "view4"
+#define CONFIG_NAME_VIEW5 "view5"
+
+
+#endif /* _GLOBALS_H */
Index: /orxonox/branches/movie_player/src/defs/stdincl.h
===================================================================
--- /orxonox/branches/movie_player/src/defs/stdincl.h	(revision 4216)
+++ /orxonox/branches/movie_player/src/defs/stdincl.h	(revision 4217)
@@ -25,4 +25,5 @@
 #include "error.h"
 #include "debug.h"
+#include "globals.h"
 
 #include "compiler.h"
Index: /orxonox/branches/movie_player/src/factory.cc
===================================================================
--- /orxonox/branches/movie_player/src/factory.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/factory.cc	(revision 4217)
@@ -28,9 +28,10 @@
    \brief constructor
    
-   set everything to zero and define classname
+   set everything to zero and define factoryName
 */
 Factory::Factory (const char* name)
 {
-  this->setClassname(name);
+  this->factoryName = NULL;
+  this->setFactoryName(name);
   next = NULL;
   
@@ -45,5 +46,5 @@
 Factory::~Factory ()
 {
-  //  printf("%s\n", this->classname);
+  //  printf("%s\n", this->factoryName);
   //  Factory* tmpDel = this->next;
   //  this->next = NULL;
@@ -52,10 +53,10 @@
 }
 
-void Factory::setClassname(const char* name)
+void Factory::setFactoryName(const char* name)
 {
-  if (classname)
-    delete classname;
-  classname = new char[strlen(name)+1];
-  strcpy(classname, name);
+  if (factoryName)
+    delete factoryName;
+  factoryName = new char[strlen(name)+1];
+  strcpy(factoryName, name);
 }
 
@@ -74,5 +75,4 @@
 void Factory::initialize()
 {
-  assert( classname != NULL);
   GameLoader* gl = GameLoader::getInstance();
   gl->registerFactory( this);
Index: /orxonox/branches/movie_player/src/factory.h
===================================================================
--- /orxonox/branches/movie_player/src/factory.h	(revision 4216)
+++ /orxonox/branches/movie_player/src/factory.h	(revision 4217)
@@ -10,4 +10,5 @@
 
 #include "xmlparser/tinyxml.h"
+#include "debug.h"
 
 /** 
@@ -33,11 +34,11 @@
   void initialize();
   void registerFactory( Factory* factory);
-  void setClassname(const char* name);
-  const char* getClassname() {return classname;};
+  void setFactoryName(const char* name);
+  const char* getFactoryName() {return factoryName;};
   void setNext( Factory* factory) {next = factory;}
   Factory* getNext() {return next;}
 	
  private:
-  char* classname;
+  char* factoryName;
 	
   Factory* next;
@@ -57,5 +58,5 @@
 tFactory<T>::tFactory(const char* name) : Factory(name)
 {
-  printf("fileName: %s\n", name);
+  PRINTF(5)("fileName: %s\n", name);
 }
   
@@ -68,5 +69,5 @@
 BaseObject* tFactory<T>::fabricate( TiXmlElement* root) 
 { 
-  if(!strcmp(root->Value(), getClassname()))
+  if(!strcmp(root->Value(), getFactoryName()))
     return new T ( root);
   else if( getNext() != NULL) 
@@ -80,7 +81,4 @@
 const char* grabParameter( TiXmlElement* root, const char* name);
 
-
-
-
 #endif /* _FACTORY_H */
 
Index: /orxonox/branches/movie_player/src/game_loader.cc
===================================================================
--- /orxonox/branches/movie_player/src/game_loader.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/game_loader.cc	(revision 4217)
@@ -25,4 +25,5 @@
 #include "command_node.h"
 #include "vector.h"
+#include "resource_manager.h"
 #include "factory.h"
 
@@ -36,5 +37,8 @@
 
 
-GameLoader::GameLoader () {}
+GameLoader::GameLoader () 
+{
+  first = NULL;
+}
 
 
@@ -70,9 +74,13 @@
    this will interprete the map/campaign files and recursivly load a tree of worlds/campaigns
 */
-ErrorMessage GameLoader::loadCampaign(char* name)
+ErrorMessage GameLoader::loadCampaign(const char* name)
 {
   ErrorMessage errorCode;
-  
-  this->currentCampaign = this->fileToCampaign(name);
+  char* campaignName = ResourceManager::getFullName(name);
+  if (campaignName)
+    {
+      this->currentCampaign = this->fileToCampaign(campaignName);
+      delete campaignName;
+    }
 }
 
@@ -159,5 +167,5 @@
    this will interprete the map/campaign files and recursivly load a tree of worlds/campaigns
 */
-Campaign* GameLoader::fileToCampaign(char *name)
+Campaign* GameLoader::fileToCampaign(const char *name)
 {
   /* do not entirely load the campaign. just the current world
@@ -168,5 +176,5 @@
   if( name == NULL)
     {
-      PRINTF0("No filename specified for loading");
+      PRINTF(2)("No filename specified for loading");
       return NULL;
     }
@@ -177,5 +185,5 @@
     {
       // report an error
-      PRINTF0("Error loading XML File: %s @ %d:%d\n", XMLDoc->ErrorDesc(), XMLDoc->ErrorRow(), XMLDoc->ErrorCol());
+      PRINTF(1)("Could not load XML File %s: %s @ %d:%d\n", name, XMLDoc->ErrorDesc(), XMLDoc->ErrorRow(), XMLDoc->ErrorCol());
       delete XMLDoc;
       return NULL;
@@ -189,5 +197,5 @@
     {
       // report an error
-      PRINTF(0)("Specified XML File is not an orxonox campaign file (Campaign element missing)\n");
+      PRINTF(2)("Specified XML File is not an orxonox campaign file (Campaign element missing)\n");
       delete XMLDoc;
       return NULL;
@@ -211,5 +219,5 @@
 bool GameLoader::worldCommand (Command* cmd)
 {
-  if( !strcmp( cmd->cmd, "up_world"))
+  if( !strcmp( cmd->cmd, CONFIG_NAME_NEXT_WORLD))
     {
       if( !cmd->bUp) 
@@ -219,5 +227,5 @@
       return true;
     }
-  else if( !strcmp( cmd->cmd, "down_world"))
+  else if( !strcmp( cmd->cmd, CONFIG_NAME_PREV_WORLD))
     {
       if( !cmd->bUp)
@@ -227,5 +235,5 @@
       return true;
     }
-  else if( !strcmp( cmd->cmd, "pause"))
+  else if( !strcmp( cmd->cmd, CONFIG_NAME_PAUSE))
     {
       if( !cmd->bUp)
@@ -238,5 +246,5 @@
       return true;
     }
-  else if( !strcmp( cmd->cmd, "quit"))
+  else if( !strcmp( cmd->cmd, CONFIG_NAME_QUIT))
     {
       if( !cmd->bUp) this->stop();
@@ -276,5 +284,5 @@
 	assert( factory != NULL);
 	
-	PRINTF0("Registered factory for '%s'\n", factory->getClassname());
+	PRINTF(4)("Registered factory for '%s'\n", factory->getFactoryName());
 	
 	if( first == NULL) first = factory;
@@ -288,23 +296,25 @@
 BaseObject* GameLoader::fabricate( TiXmlElement* element)
 {
-	assert( element != NULL);
-	
-	if( first == NULL)
-	{
-		PRINTF0("GameLoader does not know any factories, fabricate() failed\n");
-		return NULL;
-	}
-	
-	if( element->Value() != NULL)
-	{
-		PRINTF0("Attempting fabrication of a '%s'\n", element->Value());
-		BaseObject* b = first->fabricate( element);
-		if( b == NULL) PRINTF0("Failed to fabricate a '%s'\n", element->Value());
-		else PRINTF0("Successfully fabricated a '%s'\n", element->Value());
-		return b;
-	}
-	
-	PRINTF0("Fabricate failed, TiXmlElement did not contain a value\n");
-	
-	return NULL;
-}
+  assert( element != NULL);
+	
+  if( first == NULL)
+    {
+      PRINTF(1)("GameLoader does not know any factories, fabricate() failed\n");
+      return NULL;
+    }
+	
+  if( element->Value() != NULL)
+    {
+      PRINTF(4)("Attempting fabrication of a '%s'\n", element->Value());
+      BaseObject* b = first->fabricate( element);
+      if( b == NULL) 
+	PRINTF(2)("Failed to fabricate a '%s'\n", element->Value());
+      else 
+	PRINTF(4)("Successfully fabricated a '%s'\n", element->Value());
+      return b;
+    }
+	
+  PRINTF(2)("Fabricate failed, TiXmlElement did not contain a value\n");
+	
+  return NULL;
+}
Index: /orxonox/branches/movie_player/src/game_loader.h
===================================================================
--- /orxonox/branches/movie_player/src/game_loader.h	(revision 4216)
+++ /orxonox/branches/movie_player/src/game_loader.h	(revision 4217)
@@ -39,5 +39,5 @@
 
   ErrorMessage init();
-  ErrorMessage loadCampaign(char* name);
+  ErrorMessage loadCampaign(const char* name);
   ErrorMessage start();
   ErrorMessage stop();
@@ -64,5 +64,5 @@
   Campaign* currentCampaign; //!> the current campaign playing
   
-  Campaign* fileToCampaign(char* name);
+  Campaign* fileToCampaign(const char* name);
 
   Factory* first;
Index: /orxonox/branches/movie_player/src/glmenu/glmenu_imagescreen.cc
===================================================================
--- /orxonox/branches/movie_player/src/glmenu/glmenu_imagescreen.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/glmenu/glmenu_imagescreen.cc	(revision 4217)
@@ -20,28 +20,73 @@
 
 #include "stdincl.h"
+#include "graphics_engine.h"
 #include "material.h"
 
+CREATE_FACTORY(GLMenuImageScreen);
+
+
 using namespace std;
-
-GLMenuImageScreen* GLMenuImageScreen::singletonRef = 0;
-
-GLMenuImageScreen* GLMenuImageScreen::getInstance()
-{
-  if(!singletonRef)
-    singletonRef = new GLMenuImageScreen ();
-  return singletonRef;
-}
-
 /**
    \brief standard constructor
-
-   \todo this constructor is not jet implemented - do it
 */
 GLMenuImageScreen::GLMenuImageScreen () 
 {
-   this->setClassName ("GLMenuImageScreen");
    this->init();
 }
 
+/**
+   \param root The Element to load the GLMenu from
+*/
+GLMenuImageScreen::GLMenuImageScreen (TiXmlElement* root)
+{
+  this->init();
+  this->load(root);
+
+}
+
+/**
+   \brief Loads a GLMenu from an inputElement
+   \param root The Element to load the GLMenu from
+
+   Tags are:
+   \li BackgroundImage STRING: the background Image
+   \li BarImage: STRING: the Image on the Bar
+   \li BackgroundPS: FLOAT FLOAT FLOAT FLOAT: posX posY scaleX scaleY
+   \li BarPS: FLOAT FLOAT FLOAT FLOAT: posX posY scaleX scaleY
+   \li ElementCount: INT: how many elements will be loaded
+*/
+void GLMenuImageScreen::load(TiXmlElement* root)
+{
+  const char* string;
+
+  // Model Loading	
+  string = grabParameter( root, "BackgroundImage");
+  if( string != NULL)
+    this->setBackgroundImage(string);
+
+  string = grabParameter(root, "BackgroundPS");
+  if (string != NULL)
+    {
+      float f1, f2, f3, f4;
+      sscanf (string, "%f %f %f %f", &f1, &f2, &f3, &f4);
+      this->setPosition(f1,f2);
+      this->setScale(f3,f4);
+    }
+
+  string = grabParameter( root, "BarImage");
+  if (string != NULL)
+    this->setBarImage(string);
+  string = grabParameter(root, "BarPS");
+  if (string != NULL)
+    {
+      float f1, f2, f3, f4;
+      sscanf (string, "%f %f %f %f", &f1, &f2, &f3, &f4);
+      this->setBarPosScale(f1,f2,f3,f4);
+    }
+
+  string = grabParameter( root, "ElementCount");
+  if (string != NULL)
+    this->setMaximum(atoi(string));
+}
 
 /**
@@ -51,6 +96,6 @@
 GLMenuImageScreen::~GLMenuImageScreen() 
 {
-  if (this->backMat)
-    delete this->backMat;
+  delete this->backMat;
+  delete this->barMat;
 }
 
@@ -60,153 +105,16 @@
 void GLMenuImageScreen::init ()
 {
-  /*
-  int w = 680;
-  int h = 480;
-
-  glViewport(0,0,w,h);
-  
-  glMatrixMode(GL_PROJECTION);
-  glLoadIdentity(); 
-  gluPerspective(45.0f,(GLfloat)w/(GLfloat)h, .5f ,150.0f);
-  glMatrixMode(GL_MODELVIEW); 
-
-  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-  glLoadIdentity();
-  gluLookAt(0, 0, 6,     0, 0, 0,     0, 1, 0);
-
-  // Bind the texture stored at the zero index of g_Texture[]
-  //glBindTexture(GL_TEXTURE_2D, g_Texture[0]);
-  */
-
-  
+  this->setClassName ("GLMenuImageScreen");
+
   // Select Our VU Meter Background Texture
   this->backMat = new Material("load_screen");
-  this->backMat->setDiffuseMap("pictures/load_screen.jpg");
+  this->barMat = new Material("bar");
   this->maxValue = 10;
   this->currentValue = 0;
-
+  this->setPosition(0,0);
+  this->setScale(1,1);
+  this->setBarPosScale( .6, .75, .3, .1);
   // End of Background image code.
 }
-
-
-/**
-   \brief function to innit screen with all attributes set
-   \param name of the background-image file
-   \param height of the ImageScreen
-   \param width of the Image Screen
-   \param x offset from (0, 0)
-   \param y offset from (0, 0)
-
-   GLMenu uses its own coordinating system: upper left corner is (0, 0). x-axis is down=height, 
-   right axis is right direction (=width)
-*/
-void GLMenuImageScreen::init (char* backImageName, float height, float width, 
-			      float offsetX, float offsetY)
-{}
-
-
-/**
-   \brief draws the ImageScreen to the screenbuffer
-*/
-void GLMenuImageScreen::draw ()
-{
-
-  glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
-
-  PRINTF(4)("GLMenuImagEscreen::draw() - drawing step %i/%i\n", 
-	 this->currentValue, this->maxValue);
-
-  /* screen size */
-  int screenWidth = 640;
-  int screenHeight = 480;
-  
-  /* set image size */
-  int imageWidth = 640;
-  int imageHeight = 480;
-  
-  /* start pos of image */
-  int offsetX = (screenWidth - imageWidth)/2;
-  int offsetY = (screenHeight - imageHeight)/2;
-  
-  /* loadbar pos */
-  int barX = 390;
-  int barY = 50;
-  int barWidth = 230;
-  int barHeight = 30;
-  
-  float val = ((float)this->currentValue/(float)this->maxValue) * barWidth;
-  if( val > (float)barWidth)
-    val = (float)barWidth;
-
-  glMatrixMode(GL_PROJECTION);
-  glPushMatrix();
-  glLoadIdentity();
-  /* set up an ortho screen */
-  glOrtho(0, screenWidth, 0, screenHeight, -1, 1); 
-  glMatrixMode(GL_MODELVIEW);
-  glLoadIdentity();
-  glPushMatrix();
-
-  glEnable(GL_BLEND);
-  glPushAttrib(GL_LIGHTING_BIT | GL_TRANSFORM_BIT);
-  glDisable(GL_LIGHTING);
-
-  /* draw the progress bar */
-  glBegin(GL_QUADS);
-  glColor3f(0.96, 0.84, 0.34);
-  glVertex2i(barX, barY);
-  glVertex2i(barX + (int)val, barY);
-  glVertex2i(barX + (int)val, barY + barHeight);
-  glVertex2i(barX, barY + barHeight);
-  glColor3f(1.0, 1.0, 1.0);
-  glEnd();
-
-  glBegin(GL_QUADS);
-  glColor3f(0.0, 0.0, 0.0);
-  glVertex2i(barX, barY);
-  glVertex2i(barX + barWidth, barY);
-  glVertex2i(barX + barWidth, barY + barHeight);
-  glVertex2i(barX, barY + barHeight);
-  glColor3f(1.0, 1.0, 1.0);
-  glEnd();
-
-  /* draw black border */
-  glBegin(GL_QUADS);
-  glColor3f(0.0, 0.0, 0.0);
-  glVertex2i(barX-1, barY-1);
-  glVertex2i(barX + barWidth +1, barY-1);
-  glVertex2i(barX + barWidth+1, barY + barHeight+1);
-  glVertex2i(barX - 1, barY + barHeight +1);
-  glColor3f(1.0, 1.0, 1.0);
-  glEnd();
-
-  /* draw white border */
-  glBegin(GL_QUADS);
-  glColor3f(1.0, 1.0, 1.0);
-  glVertex2i(barX-2, barY-2);
-  glVertex2i(barX + barWidth +2, barY-2);
-  glVertex2i(barX + barWidth+2, barY + barHeight+2);
-  glVertex2i(barX - 2, barY + barHeight +2);
-  glColor3f(1.0, 1.0, 1.0);
-  glEnd();
-
-  backMat->select();
-  glBegin(GL_QUADS);
-  glTexCoord2i(0, 0); glVertex2i(offsetX, offsetY);
-  glTexCoord2i(1, 0); glVertex2i(offsetX + imageWidth, offsetY);
-  glTexCoord2i(1, 1); glVertex2i(offsetX + imageWidth, offsetY + imageHeight);
-  glTexCoord2i(0, 1); glVertex2i(offsetX, offsetY + imageHeight);
-  glEnd();
-  glDisable(GL_TEXTURE_2D);
-
-  glDisable(GL_BLEND);
-  glPopMatrix();
-  glMatrixMode(GL_PROJECTION);
-  glPopMatrix();
-  glPopAttrib();
-
-  SDL_GL_SwapBuffers();              
-}
- 
 
 /** 
@@ -214,24 +122,55 @@
     \param file name of the backgroun-image
  */
-void GLMenuImageScreen::setBackImageName (char* backImageName)
-{}
+void GLMenuImageScreen::setBackgroundImage (const char* backImageName)
+{
+  this->backMat->setDiffuseMap(backImageName);
+}
 
 
 /**
    \brief sets position of the ImageScreen
-   \param x offset from (0, 0)
-   \param y offset from (0, 0)
+   \param x offset from the top left corner in percent(0-1) of the screensize
+   \param y offset from the top left corner in percent(0-1) of the screensize
 */
 void GLMenuImageScreen::setPosition(float offsetX, float offsetY)
-{}
+{
+  this->offsetX = offsetX;
+  this->offsetY = offsetY;
+}
 
 
 /*
   \brief sets size of the ImageScreen
-  \param height of the ImageScreen
-  \param width of the Image Screen
-*/
-void GLMenuImageScreen::setSize(float height, float width)
-{}
+  \param scaleX the scaleing of the image into the x-direction (in percent (0-1))
+  \param scaleY the scaleing of the image into the y-direction (in percent (0-1))
+*/
+void GLMenuImageScreen::setScale(float scaleX, float scaleY)
+{
+  this->scaleX = scaleX;
+  this->scaleY = scaleY;
+}
+
+/**
+   \param barImage An image for the Bar
+*/
+void GLMenuImageScreen::setBarImage(const char* barImage)
+{
+  this->barMat->setDiffuseMap(barImage);
+}
+
+/**
+   \brief sets the Position and the Size of the bar
+   \param barX The Position in the x-direction in percent of the screen (0-1)
+   \param barY The Position in the y-direction in percent of the screen (0-1)
+   \param barW The Size in the x-direction in percent of the screen (0-1)
+   \param barH The Size in the y-direction in percent of the screen (0-1)
+*/
+void GLMenuImageScreen::setBarPosScale(float barX, float barY, float barW, float barH)
+{
+  this->barX = barX;
+  this->barY = barY;
+  this->barW = barW;
+  this->barH = barH;
+}
 
 
@@ -285,2 +224,95 @@
   this->draw();
 }
+
+
+
+/**
+   \brief draws the ImageScreen to the screenbuffer
+*/
+void GLMenuImageScreen::draw ()
+{
+  glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
+
+  PRINTF(4)("GLMenuImagEscreen::draw() - drawing step %i/%i\n", 
+	    this->currentValue, this->maxValue);
+
+  /* screen size */
+  int screenWidth = GraphicsEngine::getInstance()->getResolutionX();
+  int screenHeight = GraphicsEngine::getInstance()->getResolutionY();
+  
+  int imageWidth = (int)(screenWidth * this->scaleX);
+  int imageHeight = (int)(screenHeight * this->scaleY);
+
+  int offsetX = (int)(this->offsetX * screenWidth);
+  int offsetY = (int)(this->offsetY * screenHeight);
+
+  /* loadbar pos */
+  int barX = (int)(this->barX *screenWidth);
+  int barY = (int)(this->barY *screenHeight);
+  int barW = (int)(this->barW *screenWidth);
+  int barH = (int)(this->barH *screenHeight);
+  
+  float val = (float)this->currentValue/(float)this->maxValue;
+		  
+  if( val > barW)
+    val = barW;
+
+  GraphicsEngine::enter2DMode();
+
+  /* draw the BackGround */
+  backMat->select();
+  glBegin(GL_TRIANGLE_STRIP);
+  glTexCoord2i(0, 0); glVertex2i(offsetX, offsetY + imageHeight);
+  glTexCoord2i(1, 0); glVertex2i(offsetX +imageWidth, offsetY + imageHeight);
+  glTexCoord2i(0, 1); glVertex2i(offsetX, offsetY);
+  glTexCoord2i(1, 1); glVertex2i(offsetX + imageWidth, offsetY);
+  glEnd();
+  
+  glDisable(GL_TEXTURE_2D);
+  /* draw white border */
+  glBegin(GL_LINE_LOOP);
+  glColor3f(1.0, 1.0, 1.0);
+  glVertex2i(barX - 2, barY - 2);
+  glVertex2i(barX + barW + 2, barY - 2);
+  glVertex2i(barX + barW + 2, barY + barH + 2);
+  glVertex2i(barX - 2, barY + barH + 2);
+  glColor3f(1.0, 1.0, 1.0);
+  glEnd();
+  
+  /* draw the progress bar */
+  barMat->select();
+  glBegin(GL_TRIANGLE_STRIP);
+  glTexCoord2f(0, 0); glVertex2i(barX, barY + barH);
+  glTexCoord2f(val, 0); glVertex2i(barX + (int)(val * this->barW * (float)screenWidth), barY + barH);
+  glTexCoord2f(0, 1); glVertex2i(barX, barY);
+  glTexCoord2f(val, 1); glVertex2i(barX + (int)(val * this->barW * (float)screenWidth), barY);
+  glEnd();
+
+  /*
+    glBegin(GL_QUADS);
+    glColor3f(0.0, 0.0, 0.0);
+    glVertex2i(barX, barY);
+    glVertex2i(barX + barWidth, barY);
+    glVertex2i(barX + barWidth, barY + barHeight);
+    glVertex2i(barX, barY + barHeight);
+    glColor3f(1.0, 1.0, 1.0);
+    glEnd();
+    
+    /* draw black border 
+    glBegin(GL_QUADS);
+    glColor3f(0.0, 0.0, 0.0);
+    glVertex2i(barX-1, barY-1);
+    glVertex2i(barX + barWidth +1, barY-1);
+    glVertex2i(barX + barWidth+1, barY + barHeight+1);
+    glVertex2i(barX - 1, barY + barHeight +1);
+    glColor3f(1.0, 1.0, 1.0);
+    glEnd();
+    
+  */
+
+  GraphicsEngine::leave2DMode();
+
+  SDL_GL_SwapBuffers();              
+}
+ 
+
Index: /orxonox/branches/movie_player/src/glmenu/glmenu_imagescreen.h
===================================================================
--- /orxonox/branches/movie_player/src/glmenu/glmenu_imagescreen.h	(revision 4216)
+++ /orxonox/branches/movie_player/src/glmenu/glmenu_imagescreen.h	(revision 4217)
@@ -11,27 +11,25 @@
 
 class Material;
+class TiXmlElement;
 
 class GLMenuImageScreen : public BaseObject {
 
- private:
+ public:
   GLMenuImageScreen ();
-
- public:
+  GLMenuImageScreen (TiXmlElement* root);
+  void load(TiXmlElement* root);
   virtual ~GLMenuImageScreen ();
-  
-  static GLMenuImageScreen* getInstance();
-
-  static GLMenuImageScreen* singletonRef;
 
   void init ();
-  void init (char* backImageName, float height, float width, 
-	     float offsetX, float offsetY);
 
   void draw ();
   
-  void setBackImageName (char* backImageName);
-  void setPosition (float offsetX, float offsetY);
-  void setSize (float height, float width);
-  
+  void setBackgroundImage(const char* backImageName);
+  void setPosition(float offsetX, float offsetY);
+  void setScale (float scaleX, float scaleY);
+
+  void setBarImage(const char* barImage);
+  void setBarPosScale(float barX, float barY, float barW, float barH);
+
   void setMaximum (int maxValue);
   int getMaximum ();
@@ -42,7 +40,9 @@
  private:
   char* backImageName;       //!< the name of the file of the background image
-  float height, width;       //!< hight and width of the image
+  float scaleX, scaleY;      //!< hight and width of the image
   float offsetX, offsetY;    //!< offset of the image from left and up
   Material* backMat;         //!< Background Material.
+  float barX, barY, barW, barH; //!< Position and Scale of the bar.
+  Material* barMat;          //!< A Material for the Loading-Bar
 
   /* progress bar values */
Index: /orxonox/branches/movie_player/src/lib/Makefile.in
===================================================================
--- /orxonox/branches/movie_player/src/lib/Makefile.in	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/Makefile.in	(revision 4217)
@@ -89,12 +89,8 @@
 EXEEXT = @EXEEXT@
 GPROF = @GPROF@
-GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
-GTHREAD_LIBS = @GTHREAD_LIBS@
 GTK2_CFLAGS = @GTK2_CFLAGS@
 GTK2_LIBS = @GTK2_LIBS@
 HAVE_CURL_FALSE = @HAVE_CURL_FALSE@
 HAVE_CURL_TRUE = @HAVE_CURL_TRUE@
-HAVE_GTHREAD_FALSE = @HAVE_GTHREAD_FALSE@
-HAVE_GTHREAD_TRUE = @HAVE_GTHREAD_TRUE@
 HAVE_GTK2_FALSE = @HAVE_GTK2_FALSE@
 HAVE_GTK2_TRUE = @HAVE_GTK2_TRUE@
@@ -117,4 +113,6 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+RANLIB = @RANLIB@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -125,4 +123,5 @@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
Index: /orxonox/branches/movie_player/src/lib/coord/p_node.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/coord/p_node.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/coord/p_node.cc	(revision 4217)
@@ -99,5 +99,4 @@
   this->parent = parent; 
   this->objectName = NULL;
-  this->time = 1.0; /* set time to 1 to make divisions by zero impossible */
 }
 
@@ -281,22 +280,4 @@
 }
 
-
-
-/**
-   \brief this calculates the current movement speed of the node
-*/
-float PNode::getSpeed() const
-{
-  return (this->absCoordinate - this->lastAbsCoordinate).len() / this->time;
-}
-
-/**
-   \returns the Velocity of the PNode
-*/
-Vector PNode::getVelocity() const
-{
-  return (this->absCoordinate - this->lastAbsCoordinate) / this->time;
-}
-
 /**
    \brief adds a child and makes this node to a parent
@@ -424,5 +405,5 @@
 {
   this->lastAbsCoordinate = this->absCoordinate;
-  this->time = dt;
+
   PRINTF(4)("PNode::update - %s - (%f, %f, %f)\n", this->objectName, this->absCoordinate.x, this->absCoordinate.y, this->absCoordinate.z);
 
@@ -499,4 +480,5 @@
   delete iterator;
 
+  this->velocity = (this->absCoordinate - this->lastAbsCoordinate) / dt;
   this->timeStamp = timeStamp;
   this->bRelCoorChanged = false;
Index: /orxonox/branches/movie_player/src/lib/coord/p_node.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/coord/p_node.h	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/coord/p_node.h	(revision 4217)
@@ -69,6 +69,8 @@
   void shiftDir (const Quaternion& shift);
 
-  float getSpeed() const;
-  Vector getVelocity() const;
+  /** \returns the Speed of the Node */
+  inline float getSpeed() const {return this->velocity.len()/1000;} //! \FIX THIS SHOULD NOT BE /1000
+  /** \returns the Velocity of the Node */
+  inline const Vector& getVelocity() const {return this->velocity;}
 
   void addChild (PNode* pNode, int parentingMode = DEFAULT_MODE);
@@ -110,7 +112,6 @@
   void init(PNode* parent);
 
+  Vector velocity;          //!< Saves the velocity.
   Vector lastAbsCoordinate; //!< this is used for speedcalculation, it stores the last coordinate
-  Vector diffCoordinate;    //!< this is stored here for performance reasons, difference to the last vector
-  float time;                //!< time since last update
 };
 
Index: /orxonox/branches/movie_player/src/lib/graphics/Makefile.in
===================================================================
--- /orxonox/branches/movie_player/src/lib/graphics/Makefile.in	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/graphics/Makefile.in	(revision 4217)
@@ -89,12 +89,8 @@
 EXEEXT = @EXEEXT@
 GPROF = @GPROF@
-GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
-GTHREAD_LIBS = @GTHREAD_LIBS@
 GTK2_CFLAGS = @GTK2_CFLAGS@
 GTK2_LIBS = @GTK2_LIBS@
 HAVE_CURL_FALSE = @HAVE_CURL_FALSE@
 HAVE_CURL_TRUE = @HAVE_CURL_TRUE@
-HAVE_GTHREAD_FALSE = @HAVE_GTHREAD_FALSE@
-HAVE_GTHREAD_TRUE = @HAVE_GTHREAD_TRUE@
 HAVE_GTK2_FALSE = @HAVE_GTK2_FALSE@
 HAVE_GTK2_TRUE = @HAVE_GTK2_TRUE@
@@ -117,4 +113,6 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+RANLIB = @RANLIB@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -125,4 +123,5 @@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
Index: /orxonox/branches/movie_player/src/lib/graphics/graphics_engine.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/graphics/graphics_engine.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/graphics/graphics_engine.cc	(revision 4217)
@@ -17,4 +17,5 @@
 
 #include "graphics_engine.h"
+#include "resource_manager.h"
 
 #include "debug.h"
@@ -30,4 +31,7 @@
 {
   this->setClassName ("GraphicsEngine");
+
+  this->fullscreen = false;
+
   this->initVideo();
 
@@ -101,6 +105,8 @@
   
   // TO DO: Create a cool icon and use it here
-  SDL_WM_SetIcon(SDL_LoadBMP("../data/pictures/orxonox-icon32x32.bmp"), NULL);  
-
+  char* loadPic = new char[strlen(ResourceManager::getInstance()->getDataDir())+ 100];
+  sprintf(loadPic, "%s%s", ResourceManager::getInstance()->getDataDir(),  "pictures/orxonox-icon32x32.bmp");
+  SDL_WM_SetIcon(SDL_LoadBMP(loadPic), NULL);  
+  delete loadPic;
   // Enable default GL stuff
   glEnable(GL_DEPTH_TEST);
@@ -137,10 +143,15 @@
 int GraphicsEngine::setResolution(int width, int height, int bpp)
 {
+  Uint32 fullscreenFlag;
   this->resolutionX = width;
   this->resolutionY = height;
   this->bitsPerPixel = bpp;
+  if (this->fullscreen)
+    fullscreenFlag = SDL_FULLSCREEN;
+  else
+    fullscreenFlag = 0;
   
   printf ("ok\n");
-  if((this->screen = SDL_SetVideoMode(this->resolutionX, this->resolutionY, this->bitsPerPixel, this->videoFlags)) == NULL)
+  if((this->screen = SDL_SetVideoMode(this->resolutionX, this->resolutionY, this->bitsPerPixel, this->videoFlags | fullscreenFlag)) == NULL)
     {
       PRINTF(1)("Could not SDL_SetVideoMode(%d, %d, %d, %d): %s\n", this->resolutionX, this->resolutionY, this->bitsPerPixel, this->videoFlags, SDL_GetError());
@@ -148,5 +159,10 @@
       //    return -1;
     }
-
+}
+
+void GraphicsEngine::setFullscreen(bool fullscreen)
+{
+  this->fullscreen = fullscreen;
+  this->setResolution(this->resolutionX, this->resolutionY, this->bitsPerPixel);
 }
 
@@ -254,5 +270,5 @@
   /* Check if our resolution is restricted */
   if(this->videoModes == (SDL_Rect **)-1){
-    PRINTF(1)("All resolutions available.\n");
+    PRINTF(2)("All resolutions available.\n");
   }
   else{
@@ -260,5 +276,5 @@
     PRINT(0)("Available Resoulution Modes are\n");
     for(int i = 0; this->videoModes[i]; ++i)
-      PRINT(0)(" |  %d x %d\n", this->videoModes[i]->w, this->videoModes[i]->h);
+      PRINT(4)(" |  %d x %d\n", this->videoModes[i]->w, this->videoModes[i]->h);
   }
   
Index: /orxonox/branches/movie_player/src/lib/graphics/graphics_engine.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/graphics/graphics_engine.h	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/graphics/graphics_engine.h	(revision 4217)
@@ -26,4 +26,5 @@
   int setGLattribs(void);
   int setResolution(int width, int height, int bpp);
+  void setFullscreen(bool fullscreen = false);
   /** \returns the x resolution */
   inline int getResolutionX(void) {return this->resolutionX;}
Index: /orxonox/branches/movie_player/src/lib/graphics/importer/Makefile.in
===================================================================
--- /orxonox/branches/movie_player/src/lib/graphics/importer/Makefile.in	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/graphics/importer/Makefile.in	(revision 4217)
@@ -119,12 +119,8 @@
 EXEEXT = @EXEEXT@
 GPROF = @GPROF@
-GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
-GTHREAD_LIBS = @GTHREAD_LIBS@
 GTK2_CFLAGS = @GTK2_CFLAGS@
 GTK2_LIBS = @GTK2_LIBS@
 HAVE_CURL_FALSE = @HAVE_CURL_FALSE@
 HAVE_CURL_TRUE = @HAVE_CURL_TRUE@
-HAVE_GTHREAD_FALSE = @HAVE_GTHREAD_FALSE@
-HAVE_GTHREAD_TRUE = @HAVE_GTHREAD_TRUE@
 HAVE_GTK2_FALSE = @HAVE_GTK2_FALSE@
 HAVE_GTK2_TRUE = @HAVE_GTK2_TRUE@
@@ -147,4 +143,6 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+RANLIB = @RANLIB@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -155,4 +153,5 @@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
Index: /orxonox/branches/movie_player/src/lib/graphics/importer/array.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/graphics/importer/array.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/graphics/importer/array.cc	(revision 4217)
@@ -112,24 +112,7 @@
   
 /**
-   \brief Gives back the array !! MUST be executed AFTER finalize.
-   \returns The created array.
-*/
-GLfloat* Array::getArray ()
-{
-  return this->array;
-}
-
-/**
-   \returns The Count of entries in the Array
-*/
-int Array::getCount()
-{
-  return this->entryCount;
-}
-
-/**
    \brief Simple debug info about the Array
 */
-void Array::debug ()
+void Array::debug (void) const
 {
   PRINT(0)("entryCount=%i, address=%p\n", this->entryCount, this->array);
Index: /orxonox/branches/movie_player/src/lib/graphics/importer/array.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/graphics/importer/array.h	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/graphics/importer/array.h	(revision 4217)
@@ -23,7 +23,9 @@
   void addEntry(GLfloat entry0, GLfloat entry1, GLfloat entry2);
   
-  GLfloat* getArray ();
-  int getCount();
-  void debug(void);
+  /** \returns The array */
+  inline const GLfloat* getArray () const {return this->array;}
+  /**   \returns The Count of entries in the Array*/
+  inline int getCount(void)const {return this->entryCount;}
+  void debug(void) const ;
  private:
   //! One entry of the Array
Index: /orxonox/branches/movie_player/src/lib/graphics/importer/framework.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/graphics/importer/framework.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/graphics/importer/framework.cc	(revision 4217)
@@ -79,5 +79,5 @@
     obj = new OBJModel(argv[1]);
   else 
-    obj = new PrimitiveModel(SPHERE);
+    obj = new PrimitiveModel(CYLINDER);
 
   M = Vector(wHandler.screen->w/2, wHandler.screen->h/2, 0); 
Index: /orxonox/branches/movie_player/src/lib/graphics/importer/material.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/graphics/importer/material.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/graphics/importer/material.cc	(revision 4217)
@@ -45,12 +45,7 @@
   this->setTransparency(1.0);
 
-
   this->diffuseTexture = NULL;
   this->ambientTexture = NULL;
   this->specularTexture = NULL;
-
-  this->diffuseTextureSet = false;
-  this->ambientTextureSet = false;
-  this->specularTextureSet = false;
 
   this->setName(mtlName);
@@ -107,5 +102,5 @@
     glShadeModel(GL_SMOOTH);
 
-  if (this->diffuseTextureSet)
+  if (this->diffuseTexture)
     {
       glEnable(GL_TEXTURE_2D);
@@ -300,10 +295,8 @@
 {
   PRINTF(4)("setting Diffuse Map %s\n", dMap);
-  //    diffuseTexture = new Texture();
-  //    this->diffuseTextureSet = diffuseTexture->loadImage(dMap);
 
   //! \todo check if RESOURCE MANAGER is availiable
   //! \todo Textures from .mtl-file need special care.
-  this->diffuseTextureSet = this->diffuseTexture = (Texture*)ResourceManager::getInstance()->load(dMap, IMAGE);
+  this->diffuseTexture = (Texture*)ResourceManager::getInstance()->load(dMap, IMAGE);
 }
 
Index: /orxonox/branches/movie_player/src/lib/graphics/importer/material.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/graphics/importer/material.h	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/graphics/importer/material.h	(revision 4217)
@@ -67,9 +67,4 @@
   Texture* ambientTexture; //!< The ambient texture of the Material.
   Texture* specularTexture;//!< The specular texture of the Material.
-  
-  bool diffuseTextureSet; //!< Chekcs if the diffuse texture is Set.
-  bool ambientTextureSet; //!< Chekcs if the ambient texture is Set.
-  bool specularTextureSet;//!< Chekcs if the specular texture is Set.
-
 };
 #endif
Index: /orxonox/branches/movie_player/src/lib/graphics/importer/model.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/graphics/importer/model.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/graphics/importer/model.cc	(revision 4217)
@@ -27,9 +27,109 @@
 using namespace std;
 
-//////////////////
-// DE-CONSTRUCT //
-//////////////////
-/**
-   \brief Creates a 3D-Model. and assigns it a Name.
+
+////////////////////
+/// SUB-Elements ///
+////////////////////
+/**
+   \brief creates a new ModelFaceElement
+*/
+ModelFaceElement::ModelFaceElement()
+{
+  this->vertexNumber = -1;
+  this->normalNumber = -1;
+  this->texCoordNumber = -1;    
+
+  this->next = NULL;
+}
+
+/**
+   \brief destroys a ModelFaceElement
+*/
+ModelFaceElement::~ModelFaceElement()
+{
+  if (this->next)
+    delete this->next;
+}
+
+/**
+   \brief creates a new ModelFace
+*/
+ModelFace::ModelFace()
+{
+  this->vertexCount = 0;
+
+  this->firstElem = NULL;
+  
+  this->material = NULL;
+  
+  this->next = NULL;
+
+}
+
+/**
+   \brief deletes a ModelFace
+*/
+ModelFace::~ModelFace()
+{
+  PRINTF(5)("Cleaning up Face\n");
+
+  if (this->firstElem != NULL)
+    delete this->firstElem;
+  
+  if (this->next != NULL)
+    delete this->next;
+}
+
+/**
+   \brief Creates a new ModelGroup
+*/
+ModelGroup::ModelGroup()
+{
+  PRINTF(4)("Adding new Group\n");
+  this->name = "";
+  this->faceMode = -1;
+  this->faceCount = 0;  
+  this->next = NULL;
+  
+  this->firstFace = new ModelFace;
+  this->currentFace = this->firstFace;
+}
+
+/**
+   \brief deletes a ModelGroup
+*/
+ModelGroup::~ModelGroup()
+{
+  PRINTF(5)("Cleaning up group\n");
+  if (this->firstFace != NULL)
+    delete this->firstFace;
+
+  if (this->next !=NULL)
+    delete this->next;
+}
+
+/**
+   \brief cleans up a ModelGroup
+
+   actually does the same as the delete Operator, but does not delete the predecessing group
+*/
+void ModelGroup::cleanup(void)
+{
+  PRINTF(5)("Cleaning up group\n");
+  if (this->firstFace)
+    delete this->firstFace;
+  this->firstFace = NULL;
+  if (this->next)
+    this->next->cleanup();
+}
+
+
+/////////////
+/// MODEL ///
+/////////////
+/**
+   \brief Creates a 3D-Model.
+
+   assigns it a Name and a Type
 */
 Model::Model(const char* modelName, MODEL_TYPE type)
@@ -42,9 +142,10 @@
   this->finalized = false;
   // setting the start group;
-  this->firstGroup = new Group;
-  this->currentGroup = this->firstGroup;
+  this->currentGroup = this->firstGroup = new ModelGroup;
   this->groupCount = 0;
-  
-  this->initGroup (this->currentGroup);
+  this->vertexCount = 0;
+  this->normalCount = 0;
+  this->texCoordCount = 0;
+  
   this->scaleFactor = 1;
 
@@ -76,12 +177,5 @@
 
   PRINTF(5)("Deleting display Lists.\n");
-  Group* walker = this->firstGroup;
-  while (walker != NULL)
-    {
-      glDeleteLists (walker->listNumber, 1);
-      Group* delWalker = walker;
-      walker = walker->next;
-      delete delWalker;
-    }
+  delete this->firstGroup;
 
   // deleting Arrays
@@ -92,4 +186,6 @@
   tIterator<Material>* tmpIt = this->materialList->getIterator();
   Material* material = tmpIt->nextElement();
+
+  //! \todo do we really have to delete this material??
   while(material)
     {
@@ -128,10 +224,10 @@
 {
   PRINTF(4)("drawing the 3D-Models\n"); 
-  Group* walker = this->firstGroup;
-  while (walker != NULL)
-    {
-      PRINTF(5)("Drawing model %s\n", walker->name);
-      glCallList (walker->listNumber);
-      walker = walker->next;
+  ModelGroup* tmpGroup = this->firstGroup;
+  while (tmpGroup != NULL)
+    {
+      PRINTF(5)("Drawing model %s\n", tmpGroup->name);
+      glCallList (tmpGroup->listNumber);
+      tmpGroup = tmpGroup->next;
     }
 }
@@ -151,16 +247,16 @@
     }
   PRINTF(4)("drawing the requested 3D-Models if found.\n"); 
-  Group* walker = this->firstGroup;
+  ModelGroup* tmpGroup = this->firstGroup;
   int counter = 0;
-  while (walker != NULL)
+  while (tmpGroup != NULL)
     {
       if (counter == groupNumber)
 	{
-	  PRINTF(4)("Drawing model number %i named %s\n", counter, walker->name);
-	  glCallList (walker->listNumber);
+	  PRINTF(4)("Drawing model number %i named %s\n", counter, tmpGroup->name);
+	  glCallList (tmpGroup->listNumber);
 	  return;
 	}
       ++counter;
-      walker = walker->next;
+      tmpGroup = tmpGroup->next;
     }
   PRINTF(2)("Model number %i in %s not Found.\n", groupNumber, this->name);
@@ -178,25 +274,17 @@
 {
   PRINTF(4)("drawing the requested 3D-Models if found.\n"); 
-  Group* walker = this->firstGroup;
-  while (walker != NULL)
-    {
-      if (!strcmp(walker->name, groupName))
+  ModelGroup* tmpGroup = this->firstGroup;
+  while (tmpGroup != NULL)
+    {
+      if (!strcmp(tmpGroup->name, groupName))
 	{
-	  PRINTF(4)("Drawing model %s\n", walker->name);
-	  glCallList (walker->listNumber);
+	  PRINTF(4)("Drawing model %s\n", tmpGroup->name);
+	  glCallList (tmpGroup->listNumber);
 	  return;
 	}
-      walker = walker->next;
+      tmpGroup = tmpGroup->next;
     }
   PRINTF(2)("Model Named %s in %s not Found.\n", groupName, this->name);
   return;
-}
-
-/**
-   \returns Count of the Models in this File
-*/
-int Model::getGroupCount (void) const
-{
-  return this->groupCount;
 }
 
@@ -210,6 +298,6 @@
 void Model::setName(const char* name)
 {
-  if (this->name) 
-    delete this->name;
+  if (this->name)
+    delete []this->name;
   if (name)
     {
@@ -219,40 +307,4 @@
   else 
     this->name = NULL;
-}
-
-/**
-   \brief initializes a new Group model
-   \param group the group that should be initialized.
-   \todo Maybe Group should be a Class, because it does a lot of stuff
-   
-*/
-bool Model::initGroup(Group* group)
-{
-  PRINTF(4)("Adding new Group\n");
-  group->name = "";
-  group->faceMode = -1;
-  group->faceCount = 0;  
-  group->next = NULL;
-
-  group->firstFace = new Face;
-  this->initFace (group->firstFace);
-  group->currentFace = group->firstFace;
-}
-
-/**
-   \brief initializes a new Face. (sets default Values)
-   \param face The face to initialize
-*/
-bool Model::initFace (Face* face)
-{
-  face->vertexCount = 0;
-
-  face->firstElem = NULL;
-  
-  face->material = NULL;
-  
-  face->next = NULL;
-
-  return true;
 }
 
@@ -268,4 +320,5 @@
   if (this->normals)
     delete this->normals;
+
   this->vertices = NULL;
   this->vTexture = NULL;
@@ -280,59 +333,9 @@
 {
   PRINTF(4)("cleaning up the 3D-Model to save Memory.\n");
-  this->cleanupGroup(this->firstGroup);
+  this->firstGroup->cleanup();
   return true; 
 }
 
-/**
-   \brief Cleans up all groups starting from group.
-   \param group the first Group to clean
-*/
-bool Model::cleanupGroup (Group* group)
-{
-  PRINTF(5)("Cleaning up group\n");
-  if (group->firstFace != NULL)
-    {
-      cleanupFace (group->firstFace);
-      delete group->firstFace;
-    }
-
-  if (group->next !=NULL)
-    cleanupGroup (group->next);
-  return true;
-}
-
-/**
-   \brief Cleans up all Faces starting from face until NULL is reached.
-   \param face the first face to clean.
-*/
-bool Model::cleanupFace (Face* face)
-{
-  PRINTF(5)("Cleaning up Face\n");
-
-  if (face->firstElem != NULL)
-    {
-      this->cleanupFaceElement(face->firstElem);
-      delete face->firstElem;
-    }
-      
-  if (face->next != NULL)
-    {
-      this->cleanupFace (face->next);
-      delete face->next;
-    }
-}
-
-/**
-   \brief Cleans up all FaceElements starting from faceElem.
-   \param faceElem the first FaceElement to clean.
-*/
-bool Model::cleanupFaceElement(FaceElement* faceElem)
-{
-  if (faceElem->next != NULL)
-    {
-      this->cleanupFaceElement (faceElem->next);
-      delete faceElem->next;
-    }
-}
+
 
 //////////
@@ -354,10 +357,9 @@
 /**
    \brief adds a new Material to the Material List
-   \param material the name of the Material to add
+   \param materialName the name of the Material to add
    \returns the added material
 */
 Material* Model::addMaterial(const char* materialName)
 {
-  
   Material* newMat = new Material();
   newMat->setName(materialName);
@@ -395,14 +397,13 @@
 
    This function initializes a new Group. 
-   With it you should be able to import .obj-files with more than one Models inside. 
-*/
-bool Model::addGroup (const char* groupString)
+   With it you should be able to create Models with more than one SubModel inside
+*/
+bool Model::addGroup(const char* groupString)
 {
   PRINTF(5)("Read Group: %s.\n", groupString);
-  if (this->groupCount != 0 && this->currentGroup->faceCount>0)
+  if (this->groupCount != 0 && this->currentGroup->faceCount > 0)
     {
       //      finalizeGroup(currentGroup);
-      this->currentGroup = this->currentGroup->next = new Group;
-      this->initGroup(this->currentGroup);
+      this->currentGroup = this->currentGroup->next = new ModelGroup;
     }
   // setting the group name if not default.
@@ -429,4 +430,5 @@
   PRINTF(5)("reading in a vertex: %f %f %f\n", &subbuffer1, &subbuffer2, &subbuffer3);
   this->vertices->addEntry(subbuffer1*scaleFactor, subbuffer2*scaleFactor, subbuffer3*scaleFactor);
+  this->vertexCount++;
   return true;
 }
@@ -443,4 +445,5 @@
   PRINTF(5)("reading in a vertex: %f %f %f\n", x, y, z);
   this->vertices->addEntry(x*scaleFactor, y*scaleFactor, z*scaleFactor);
+  this->vertexCount++;
   return true;
 }
@@ -460,4 +463,5 @@
   PRINTF(5)("found vertex-Normal %f, %f, %f\n", &subbuffer1,&subbuffer2,&subbuffer3);
   this->normals->addEntry(subbuffer1, subbuffer2, subbuffer3);
+  this->normalCount++;
   return true;
 }
@@ -475,4 +479,6 @@
   PRINTF(5)("found vertex-Normal %f, %f, %f\n", x, y, z);
   this->normals->addEntry(x, y, z);
+  this->normalCount++;
+  return true;
 }
 
@@ -492,4 +498,5 @@
   this->vTexture->addEntry(subbuffer1);
   this->vTexture->addEntry(subbuffer2);
+  this->texCoordCount++;
   return true;
 }
@@ -507,4 +514,6 @@
   this->vTexture->addEntry(u);
   this->vTexture->addEntry(v);
+  this->texCoordCount++;
+  return true;
 }
 
@@ -514,17 +523,18 @@
 
    If a face line is found this function will add it to the glList.
+
+   String is different from the argument addFace, in this that the first Vertex/Normal/Texcoord is 1 instead of 0
 */
 bool Model::addFace (const char* faceString)
 {
   if (this->currentGroup->faceCount >0)
-    this->currentGroup->currentFace = this->currentGroup->currentFace->next = new Face;
-  this->initFace (this->currentGroup->currentFace);
-
-  FaceElement* tmpElem = this->currentGroup->currentFace->firstElem = new FaceElement;
+    this->currentGroup->currentFace = this->currentGroup->currentFace->next = new ModelFace;
+
+  ModelFaceElement* tmpElem = this->currentGroup->currentFace->firstElem = new ModelFaceElement;
   tmpElem->next = NULL;
   while(strcmp (faceString, "\0"))
     {
       if (this->currentGroup->currentFace->vertexCount>0)
-	  tmpElem = tmpElem->next = new FaceElement;
+	  tmpElem = tmpElem->next = new ModelFaceElement;
       tmpElem->next = NULL;
 
@@ -552,14 +562,8 @@
       if (vertex)
 	tmpElem->vertexNumber = atoi(vertex)-1;
-      else
-	tmpElem->vertexNumber = -1;
       if (texture)
 	tmpElem->texCoordNumber = atoi(texture)-1;
-      else
-	tmpElem->texCoordNumber = -1;
       if (normal)
 	tmpElem->normalNumber = atoi(normal)-1;
-      else
-	tmpElem->normalNumber = -1;
 
       faceString += tmpLen;
@@ -575,14 +579,12 @@
    \brief adds a new Face
    \param faceElemCount the number of Vertices to add to the Face.
-   \param type 0: vertex only, 1: vertex and normal, 2: vertex and Texture, 3 vertex, normal and texture
+   \param type The information Passed with each Vertex
 */
 bool Model::addFace(int faceElemCount, VERTEX_FORMAT type, ...)
 {
-   if (this->currentGroup->faceCount > 0)
-    this->currentGroup->currentFace = this->currentGroup->currentFace->next = new Face;
-  this->initFace (this->currentGroup->currentFace);
-
-  FaceElement* tmpElem = this->currentGroup->currentFace->firstElem = new FaceElement;
-  tmpElem->next = NULL;
+  if (this->currentGroup->faceCount > 0)
+    this->currentGroup->currentFace = this->currentGroup->currentFace->next = new ModelFace;
+  
+  ModelFaceElement* tmpElem = this->currentGroup->currentFace->firstElem = new ModelFaceElement;
   
   va_list itemlist;
@@ -591,13 +593,12 @@
   for (int i = 0; i < faceElemCount; i++)
     {
-      if (this->currentGroup->currentFace->vertexCount>0)
-	  tmpElem = tmpElem->next = new FaceElement;
-      tmpElem->next = NULL;
-
-      tmpElem->vertexNumber = va_arg (itemlist, int) -1;
+      if (this->currentGroup->currentFace->vertexCount > 0)
+	tmpElem = tmpElem->next = new ModelFaceElement;
+
+      tmpElem->vertexNumber = va_arg (itemlist, int);
       if (type & TEXCOORD)
-	tmpElem->texCoordNumber = va_arg (itemlist, int) -1;
+	tmpElem->texCoordNumber = va_arg (itemlist, int);
       if (type & NORMAL)
- 	tmpElem->normalNumber = va_arg(itemlist, int) -1;
+ 	tmpElem->normalNumber = va_arg(itemlist, int);
       this->currentGroup->currentFace->vertexCount++;
     }
@@ -614,6 +615,5 @@
 {
   if (this->currentGroup->faceCount > 0)
-    this->currentGroup->currentFace = this->currentGroup->currentFace->next = new Face;
-  this->initFace (this->currentGroup->currentFace);
+    this->currentGroup->currentFace = this->currentGroup->currentFace->next = new ModelFace;
   
   this->currentGroup->currentFace->material = this->findMaterialByName(matString);
@@ -630,6 +630,5 @@
 {
   if (this->currentGroup->faceCount > 0)
-    this->currentGroup->currentFace = this->currentGroup->currentFace->next = new Face;
-  this->initFace (this->currentGroup->currentFace);
+    this->currentGroup->currentFace = this->currentGroup->currentFace->next = new ModelFace;
   
   this->currentGroup->currentFace->material = mtl;
@@ -662,17 +661,17 @@
   Vector curV;
 
-  Group* tmpGroup = firstGroup;
+  ModelGroup* tmpGroup = firstGroup;
   while (tmpGroup)
     {
-      Face* tmpFace = tmpGroup->firstFace;
+      ModelFace* tmpFace = tmpGroup->firstFace;
       while (tmpFace)
 	{
 	  if (tmpFace->firstElem)
 	    {
-	      FaceElement* firstElem = tmpFace->firstElem;
-	      FaceElement* prevElem;
-	      FaceElement* curElem = firstElem;
-	      FaceElement* nextElem;
-	      FaceElement* lastElem;
+	      ModelFaceElement* firstElem = tmpFace->firstElem;
+	      ModelFaceElement* prevElem;
+	      ModelFaceElement* curElem = firstElem;
+	      ModelFaceElement* nextElem;
+	      ModelFaceElement* lastElem;
 	      // find last Element of the Chain. !! IMPORTANT:the last Element of the Chain must point to NULL, or it will resolv into an infinity-loop.
 	      while (curElem)
@@ -704,10 +703,10 @@
     }
 
-  for (int i=0; i<vertices->getCount()/3;i++)
+  for (int i=0; i < vertices->getCount()/3;i++)
     {
       normArray[i].normalize();
       PRINTF(5)("Found Normale number %d: (%f; %f, %f).\n", i, normArray[i].x, normArray[i].y, normArray[i].z);
       
-      this->normals->addEntry(normArray[i].x, normArray[i].y, normArray[i].z);
+      this->addVertexNormal(normArray[i].x, normArray[i].y, normArray[i].z);
 
     }
@@ -744,5 +743,5 @@
 
       // Putting Faces to GL
-      Face* tmpFace = this->currentGroup->firstFace;
+      ModelFace* tmpFace = this->currentGroup->firstFace;
       while (tmpFace != NULL)
 	{
@@ -794,5 +793,5 @@
 	    }
 	  
-	  FaceElement* tmpElem = tmpFace->firstElem;
+	  ModelFaceElement* tmpElem = tmpFace->firstElem;
 	  while (tmpElem != NULL)
 	    {
@@ -826,5 +825,4 @@
   glNormalPointer(3, 0, this->normals->getArray());
   glTexCoordPointer(2, GL_FLOAT, 0, this->vTexture->getArray());
-
 }
 
@@ -841,14 +839,32 @@
    merging this information, the face will be drawn.
 */
-bool Model::addGLElement (FaceElement* elem)
+bool Model::addGLElement (ModelFaceElement* elem)
 {
   PRINTF(5)("importing grafical Element to openGL.\n");
 
   if (elem->texCoordNumber != -1)
-    glTexCoord2fv(this->vTexture->getArray() + elem->texCoordNumber * 2);
+    {
+      if (likely(elem->texCoordNumber < this->texCoordCount))
+	glTexCoord2fv(this->vTexture->getArray() + elem->texCoordNumber * 2);
+      else
+	PRINTF(2)("TextureCoordinate %d is not in the List (max: %d)\nThe Model might be incomplete\n",
+		  elem->texCoordNumber, this->texCoordCount);
+    }
   if (elem->normalNumber != -1)
-    glNormal3fv(this->normals->getArray() + elem->normalNumber * 3);
+    {
+    if (likely(elem->normalNumber < this->normalCount))
+      glNormal3fv(this->normals->getArray() + elem->normalNumber * 3);
+    else
+	PRINTF(2)("Normal %d is not in the List (max: %d)\nThe Model might be incomplete",
+		  elem->normalNumber, this->normalCount);      
+    }
   if (elem->vertexNumber != -1)
-    glVertex3fv(this->vertices->getArray() + elem->vertexNumber * 3);
+    {
+      if (likely(elem->vertexNumber < this->vertexCount))
+	  glVertex3fv(this->vertices->getArray() + elem->vertexNumber * 3);
+      else
+	PRINTF(2)("Vertex %d is not in the List (max: %d)\nThe Model might be incomplete",
+		  elem->vertexNumber, this->vertexCount);      
+    }	
 
 }
@@ -910,19 +926,10 @@
   this->addVertexNormal (-1.0, 0.0, 0.0);
 
-  /* normaleLess-testingMode
-  this->addFace ("1 2 4 3");
-  this->addFace ("3 4 6 5");
-  this->addFace ("5 6 8 7");
-  this->addFace ("7 8 2 1");
-  this->addFace ("2 8 6 4");
-  this->addFace ("7 1 3 5");
-  */
-
-  this->addFace (4, VERTEX_TEXCOORD_NORMAL, 1,1,1, 2,2,2, 4,4,3, 3,3,4);
-  this->addFace (4, VERTEX_TEXCOORD_NORMAL, 3,3,5, 4,4,6, 6,6,7, 5,5,8);
-  this->addFace (4, VERTEX_TEXCOORD_NORMAL, 5,5,9, 6,6,10, 8,8,11, 7,7,12);
-  this->addFace (4, VERTEX_TEXCOORD_NORMAL, 7,7,13, 8,8,14, 2,10,15, 1,9,16);
-  this->addFace (4, VERTEX_TEXCOORD_NORMAL, 2,2,17, 8,11,18, 6,12,19, 4,4,20);
-  this->addFace (4, VERTEX_TEXCOORD_NORMAL, 7,13,21, 1,1,22, 3,3,23, 5,14,24);
-
-}
+  this->addFace (4, VERTEX_TEXCOORD_NORMAL, 0,0,0, 1,1,1, 3,3,2, 2,2,3);
+  this->addFace (4, VERTEX_TEXCOORD_NORMAL, 2,2,4, 3,3,5, 5,5,6, 4,4,7);
+  this->addFace (4, VERTEX_TEXCOORD_NORMAL, 4,4,8, 5,5,9, 7,7,10, 6,6,11);
+  this->addFace (4, VERTEX_TEXCOORD_NORMAL, 6,6,12, 7,7,13, 1,9,14, 0,8,15);
+  this->addFace (4, VERTEX_TEXCOORD_NORMAL, 1,1,16, 7,10,17, 5,11,18, 3,3,19);
+  this->addFace (4, VERTEX_TEXCOORD_NORMAL, 6,12,20, 0,0,21, 2,2,22, 4,13,23);
+
+}
Index: /orxonox/branches/movie_player/src/lib/graphics/importer/model.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/graphics/importer/model.h	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/graphics/importer/model.h	(revision 4217)
@@ -34,69 +34,86 @@
 		    VERTEX_TEXCOORD_NORMAL = NORMAL | TEXCOORD};
 
+////////////////////
+/// SUB-ELEMENTS ///
+////////////////////
+//! This is the placeholder of one Vertex beloning to a Face.
+class ModelFaceElement
+{
+ public:
+  ModelFaceElement();
+  ~ModelFaceElement();
+
+  int vertexNumber;         //!< The number of the Vertex out of the Array* vertices, this vertex points to.
+  int normalNumber;         //!< The number of the Normal out of the Array* normals, this vertex points to.
+  int texCoordNumber;       //!< The number of the textureCoordinate out of the Array* vTexture, this vertex points to.
+  ModelFaceElement* next;   //!< Point to the next FaceElement in this List.
+};
+
+//! This is the placeholder of a Face belonging to a Group of Faces.
+class ModelFace
+{
+ public:
+  ModelFace();
+  ~ModelFace();
+
+  int vertexCount;                //!< The Count of vertices this Face has.
+  ModelFaceElement* firstElem;    //!< Points to the first Vertex (FaceElement) of this Face.
+  
+  Material* material;             //!< The Material to use.
+  
+  ModelFace* next;                //!< Pointer to the next Face.
+}; 
+
+//! Group to handle multiple Models per obj-file.
+class ModelGroup
+{
+ public:
+  ModelGroup();
+  ~ModelGroup();
+
+  void cleanup();
+
+  char* name;                 //!< the Name of the Group. this is an identifier, that can be accessed via the draw (char* name) function.
+  
+  GLubyte* indices;           //!< The indices of the Groups. Needed for vertex-arrays
+  GLuint listNumber;          //!< The number of the GL-List this Group gets.
+  ModelFace* firstFace;       //!< The first Face in this group.
+  ModelFace* currentFace;     //!< The current Face in this Group (the one we are currently working with.)
+  int faceMode;               //!< The Mode the Face is in: initially -1, 0 for FaceList opened, 1 for Material,  3 for triangle, 4 for Quad, 5+ for Poly \todo ENUM...
+  int faceCount;              //!< The Number of Faces this Group holds.
+  
+  ModelGroup* next;           //!< Pointer to the next Group.
+};
+
+/////////////
+/// MODEL ///
+/////////////
+
 //! Class that handles 3D-Models. it can also read them in and display them.
 class Model
 {
  private:
-  /////////////
-  // structs //
-  /////////////
-  //! This is the placeholder of one Vertex beloning to a Face.
-  struct FaceElement
-  {
-    int vertexNumber;    //!< The number of the Vertex out of the Array* vertices, this vertex points to.
-    int normalNumber;    //!< The number of the Normal out of the Array* normals, this vertex points to.
-    int texCoordNumber;  //!< The number of the textureCoordinate out of the Array* vTexture, this vertex points to.
-    FaceElement* next;   //!< Point to the next FaceElement in this List.
-  };
 
-  //! This is the placeholder of a Face belonging to a Group of Faces.
-  struct Face
-  {
-    int vertexCount;        //!< The Count of vertices this Face has.
-    FaceElement* firstElem; //!< Points to the first Vertex (FaceElement) of this Face.
+  char* name;                 //!< This is the name of the Model.
+  MODEL_TYPE type;            //!< A type for the Model
+  bool finalized;             //!< Sets the Object to be finalized.
 
-    Material* material;     //!< The Material to use.
+  int vertexCount;            //!< A modelwide Counter for vertices.
+  int normalCount;            //!< A modelwide Counter for the normals.
+  int texCoordCount;          //!< A modelwide Counter for the texCoord.
+  Array* vertices;            //!< The Array that handles the Vertices.
+  Array* normals;             //!< The Array that handles the Normals.
+  Array* vTexture;            //!< The Array that handles the VertexTextureCoordinates.
 
-    Face* next;             //!< Pointer to the next Face.
-  }; 
+  ModelGroup* firstGroup;     //!< The first of all groups.
+  ModelGroup* currentGroup;   //!< The currentGroup. this is the one we will work with.
+  int groupCount;             //!< The Count of Groups.
 
-  //! Group to handle multiple Models per obj-file.
-  struct Group
-  {
-    char* name;         //!< the Name of the Group. this is an identifier, that can be accessed via the draw (char* name) function.
-
-    GLubyte* indices;   //!< The indices of the Groups. Needed for vertex-arrays
-    GLuint listNumber;  //!< The number of the GL-List this Group gets.
-    Face* firstFace;    //!< The first Face in this group.
-    Face* currentFace;  //!< The current Face in this Group (the one we are currently working with.)
-    int faceMode;       //!< The Mode the Face is in: initially -1, 0 for FaceList opened, 1 for Material,  3 for triangle, 4 for Quad, 5+ for Poly \todo ENUM...
-    int faceCount;      //!< The Number of Faces this Group holds.
-
-    Group* next;        //!< Pointer to the next Group.
-  };
-
-  char* name;            //!< This is the name of the Model.
-  MODEL_TYPE type;
-  bool finalized;        //!< Sets the Object to be finalized.
-
-  Array* vertices;      //!< The Array that handles the Vertices.
-  int verticesCount;    //!< A global Counter for vertices.
-  Array* normals;       //!< The Array that handles the Normals.
-  Array* vTexture;      //!< The Array that handles the VertexTextureCoordinates.
-
-  Group* firstGroup;    //!< The first of all groups.
-  Group* currentGroup;  //!< The currentGroup. this is the one we will work with.
-  int groupCount;       //!< The Count of Groups.
-
-  tList<Material>* materialList;
+  tList<Material>* materialList;//!< A list for all the Materials in this Model
   
-
-  bool initGroup(Group* group);
-  bool initFace (Face* face);
-
   bool buildVertexNormals(void);
 
   bool importToDisplayList(void);
-  bool addGLElement(FaceElement* elem);
+  bool addGLElement(ModelFaceElement* elem);
 
   bool importToVertexArray(void);
@@ -104,7 +121,4 @@
   bool deleteArrays(void);
   bool cleanup(void);
-  bool cleanupGroup(Group* group);
-  bool cleanupFace(Face* face);
-  bool cleanupFaceElement(FaceElement* faceElem);
 
 
@@ -121,4 +135,5 @@
 
   void setName(const char* name);
+  /** \returns the Name of the Model */
   inline const char* getName() {return this->name;}
   
@@ -126,5 +141,7 @@
   void draw(int groupNumber) const;
   void draw(char* groupName) const;
-  int getGroupCount() const;
+
+  /** \returns Count of the Models (Groups) in this File */
+  inline int getGroupCount(void) const {return this->groupCount;}
 
   Material* addMaterial(Material* material);
@@ -143,4 +160,11 @@
   bool setMaterial(Material* mtl);
   void finalize(void);
+
+  /** \returns The number of Vertices of the Model */
+  inline int getVertexCount(void) const {return this->vertexCount;}
+  /** \returns The number of Normals of the Model */
+  inline int getNormalCount(void) const {return this->normalCount;}
+  /** \returns The number of Texture Coordinates of the Model*/
+  inline int getTexCoordCount(void) const {return this->texCoordCount;}
 };
 
Index: /orxonox/branches/movie_player/src/lib/graphics/importer/objModel.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/graphics/importer/objModel.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/graphics/importer/objModel.cc	(revision 4217)
@@ -34,5 +34,6 @@
 OBJModel::OBJModel(const char* fileName, float scaling) : Model(fileName)
 {
-  this->initializeOBJ();
+  this->objPath = "./";
+
   this->scaleFactor = scaling;
 
@@ -52,18 +53,4 @@
   if (this->objPath)
     delete []this->objPath;
-  if (this->objFileName)
-    delete []this->objFileName;
-  if (this->mtlFileName)
-    delete []this->mtlFileName;
-}
-
-/**
-   \brief Initializes an obj-model
-*/
-void OBJModel::initializeOBJ(void)
-{
-  this->objPath = NULL;
-  this->objFileName = NULL;
-  this->mtlFileName = NULL;
 }
 
@@ -71,39 +58,24 @@
    \brief Imports a obj file and handles the the relative location
    \param fileName The file to import
+
+   Splits the FileName from the DirectoryName
 */
 bool OBJModel::importFile (const char* fileName)
 {
   PRINTF(4)("preparing to read in file: %s\n", fileName);
-
-
-#ifdef __WIN32__
-  // win32 path reading
-  char pathSplitter= '\\';
-#else /* __WIN32__ */
-  // unix path reading
-  char pathSplitter='/';
-#endif /* __WIN32__ */
-  char* tmpName;
-  strcpy(tmpName, fileName);
-  if (tmpName[0] == pathSplitter)
-    tmpName++;
-  char* name = tmpName;
-  while (( tmpName = strchr (tmpName+1, pathSplitter)))
-    {
-      name = tmpName+1;
-    }
-  this->objPath = new char[name-fileName+1];
-  strncpy(this->objPath, fileName, name-fileName);
-  this->objPath[name-fileName] = '\0';
-  if (strlen(objPath)> 0)
-    PRINTF(5)("Resolved file %s to folder: %s.\n", name, objPath);
-  else
-    PRINTF(5)("Resolved file %s.\n", name);
-  
-  this->setName(name);
-
-  this->objFileName = new char[strlen(name)+1];
-  strcpy (this->objFileName, name);
-  this->readFromObjFile ();
+  // splitting the 
+  char* split = NULL;
+
+  if (!(split = strrchr(fileName, '/')))
+    split = strrchr(fileName, '\\'); // windows Case
+  if (split)
+    {
+      int len = split - fileName+1;
+      this->objPath = new char[len +2];
+      strncpy(this->objPath, fileName, len);
+      this->objPath[len] = '\0';
+      PRINTF(1)("Resolved file %s to Path %s.\n", fileName, this->objPath);
+    }
+  this->readFromObjFile (fileName);
   return true;
 }
@@ -113,16 +85,10 @@
    This function does read the file, parses it for the occurence of things like vertices, faces and so on, and executes the specific tasks
 */
-bool OBJModel::readFromObjFile (void)
-{
-  char* fileName = new char [strlen(objPath)+strlen(objFileName)+1];
-  if (this->objFileName != NULL && !strcmp(this->objFileName, ""))
-    return false;
-  strcpy(fileName, this->objPath);
-  strcat(fileName, this->objFileName);
-
+bool OBJModel::readFromObjFile(const char* fileName)
+{
   FILE* stream;
   if( (stream = fopen (fileName, "r")) == NULL)
     {
-      printf("IniParser could not open %s\n", fileName);
+      printf("Object File Could not be Opened %s\n", fileName);
       return false;
     }
@@ -179,5 +145,4 @@
     }
   fclose (stream);
-  delete []fileName;
   return true;
 }
@@ -194,15 +159,12 @@
 bool OBJModel::readMtlLib (const char* mtlFile)
 {
-  this->mtlFileName = new char [strlen(mtlFile)+1];
-  strcpy(this->mtlFileName, mtlFile);
-  char* fileName = new char [strlen(objPath) + strlen(this->mtlFileName)+1];
-  strcpy(fileName, this->objPath);
-  strcat(fileName, this->mtlFileName);
-  
+  char* fileName = new char [strlen(this->objPath) + strlen(mtlFile)+1];
+  sprintf(fileName, "%s%s", this->objPath, mtlFile);
 
   FILE* stream;
   if( (stream = fopen (fileName, "r")) == NULL)
     {
-      printf("IniParser could not open %s\n", fileName);
+      PRINTF(2)("MaterialLibrary could not be opened %s\n", fileName);
+      delete []fileName;
       return false;
     }
Index: /orxonox/branches/movie_player/src/lib/graphics/importer/objModel.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/graphics/importer/objModel.h	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/graphics/importer/objModel.h	(revision 4217)
@@ -15,15 +15,12 @@
   OBJModel(const char* fileName, float scaling = 1.0);
   virtual ~OBJModel();
-  void initializeOBJ(void);
 
  private:
   // Variables
   char* objPath;        //!< The Path where the obj and mtl-file are located.
-  char* objFileName;    //!< The Name of the obj-file.
-  char* mtlFileName;    //!< The Name of the mtl-file (parsed out of the obj-file)
 
   ///// readin /////
   bool importFile (const char* fileName);
-  bool readFromObjFile (void);
+  bool readFromObjFile (const char* fileName);
   bool readMtlLib (const char* matFile);
 };
Index: /orxonox/branches/movie_player/src/lib/graphics/importer/primitive_model.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/graphics/importer/primitive_model.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/graphics/importer/primitive_model.cc	(revision 4217)
@@ -71,5 +71,4 @@
 void PrimitiveModel::sphereModel(float size, unsigned int detail)
 {
-  int vertexCount = 0;
   if (detail <= 0) 
     detail = 1;
@@ -89,9 +88,10 @@
 			  size * sin(vi) * cos(vj));
 	  this->addVertexTexture(i / (df *2.0), (j-1.0)/(df)+.5);
-	  vertexCount++;
 	}
     }
   this->addVertex(0, -size, 0);
+  this->addVertexTexture(0,0);
   this->addVertex(0, size, 0);
+  this->addVertexTexture(0 ,1);
 
   // defining the binding Faces.
@@ -102,26 +102,26 @@
 	{
 	  
-	  v1 = i*detail + j;
-	  v4 = i*detail + (j+1);
+	  v1 = i*detail + j-1;
+	  v4 = i*detail + j;
 	  
 	  if (i == detail*2 -1)
 	    {
-	      v2 = j;
-	      v3 = j+1;
+	      v2 = j-1;
+	      v3 = j;
 	    }
 	  else
 	    {
-	      v2 = (i+1)*detail + j;
-	      v3 = (i+1)*detail + (j+1);
-	    }
-	  
+	      v2 = (i+1)*detail + j-1;
+	      v3 = (i+1)*detail + j;
+	    }
+
 	  if (j == 0)
 	    {
-	      v1 = vertexCount+1;
+	      v1 = this->getVertexCount()-2;
 	      this->addFace(3, VERTEX_TEXCOORD, v1, v1, v3, v3, v4, v4);
 	    }
 	  else if (j == detail)
 	    {
-	      v3 = vertexCount+2;
+	      v3 = this->getVertexCount()-1;
 	      this->addFace(3, VERTEX_TEXCOORD, v1, v1, v2, v2, v3, v3);
 	    }
@@ -157,17 +157,17 @@
     {
       int p1, p2, p3, p4;
-      p1 = 2*i+1;
-      p2 = 2*i+2;
-      p3 = 2*i+4;
-      p4 = 2*i+3;
+      p1 = 2*i;
+      p2 = 2*i+1;
+      p3 = 2*i+3;
+      p4 = 2*i+2;
       // something is wrong here
       this->addFace(4, VERTEX_ONLY, p1, p2, p3, p4);
-      this->addFace(3, VERTEX_ONLY, p4, p1, 2*detail+1);
-      this->addFace(3, VERTEX_ONLY, p2, p3, 2*detail+2);
+      this->addFace(3, VERTEX_ONLY, p4, p1, 2*detail);
+      this->addFace(3, VERTEX_ONLY, p2, p3, 2*detail+1);
     }
   // caps
-  this->addFace(4, VERTEX_ONLY, 2*detail-1, 2*detail, 2, 1);
-  this->addFace(3, VERTEX_ONLY, 1, 2*detail-1, 2*detail+1);
-  this->addFace(3, VERTEX_ONLY, 2*detail, 2, 2*detail+2);
+  this->addFace(4, VERTEX_ONLY, 2*detail-2, 2*detail-1, 1, 0);
+  this->addFace(3, VERTEX_ONLY, 0, 2*detail-2, 2*detail);
+  this->addFace(3, VERTEX_ONLY, 2*detail-1, 1, 2*detail+1);
 }
 
@@ -198,11 +198,11 @@
     {
       unsigned int v1, v2;
-      v1 = i+3;
+      v1 = i+2;
       if (i == detail -1)
-	v2 = 3;
+	v2 = 2;
       else
-	v2 = i+4;
-      this->addFace(3, VERTEX_ONLY, 1, v1, v2);
-      this->addFace(3, VERTEX_ONLY, 2, v1, v2); 
+	v2 = i+3;
+      this->addFace(3, VERTEX_ONLY, 0, v1, v2);
+      this->addFace(3, VERTEX_ONLY, 1, v1, v2); 
     }
 }
@@ -228,5 +228,5 @@
   unsigned int v1, v2, v3, v4;
   for (int i = 0; i < detail-1; i++)
-    for (int j = 1; j < detail; j++)
+    for (int j = 0; j < detail-1; j++)
       {
 	v1 = i*detail + j;
Index: /orxonox/branches/movie_player/src/lib/graphics/particles/particle_emitter.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/graphics/particles/particle_emitter.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/graphics/particles/particle_emitter.cc	(revision 4217)
@@ -124,17 +124,23 @@
     // saving the time
     float count = (dt+this->saveTime) * this->emissionRate;
-    this->saveTime = modff(count, &count);
-    this->saveTime /= this->emissionRate;
+    this->saveTime = modff(count, &count) / this->emissionRate;
     PRINTF(5)("emitting %f particles, saving %f seconds for the next round\n", count, this->saveTime); 
     
-    for (int i = 0; i < count; i++)
-      // emmits from EMITTER_DOT,
+    if (likely(count > 0))
       {
-	Vector randDir = Vector(random()-RAND_MAX/2, random()-RAND_MAX/2, random()-RAND_MAX/2);
-	randDir.normalize();
-	randDir = (this->getAbsDir()*Quaternion(angle + randomAngle *((float)random()/RAND_MAX -.5), randDir)).apply(this->direction);
-	randDir = randDir.getNormalized()*velocity + (this->getVelocity() * system->inheritSpeed);
+	Vector inheritVelocity = this->getVelocity() * system->inheritSpeed;
+	for (int i = 0; i < count; i++)
+	  // emmits from EMITTER_DOT,
+	  {
+	    Vector randDir = Vector(rand()-RAND_MAX/2, rand()-RAND_MAX/2, rand()-RAND_MAX/2);
+	    randDir.normalize();
+	    randDir = (this->getAbsDir()*Quaternion(angle + randomAngle *((float)rand()/RAND_MAX -.5), randDir)).apply(this->direction);
+	    Vector velocityV = randDir.getNormalized()*this->velocity + inheritVelocity;
 
-	system->addParticle(this->getAbsCoor(), randDir);
+	    // this should spread the Particles evenly. if the Emitter is moved around quickly
+	    Vector equalSpread = this->getVelocity() * random()/RAND_MAX * dt;
+
+	    system->addParticle(this->getAbsCoor() - equalSpread, velocityV);
+	  }
       }
   }
Index: /orxonox/branches/movie_player/src/lib/graphics/particles/particle_emitter.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/graphics/particles/particle_emitter.h	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/graphics/particles/particle_emitter.h	(revision 4217)
@@ -22,6 +22,6 @@
 
  public:
-  ParticleEmitter(const Vector& direction, float angle = .5, float emissionRate = 1.0,
-		  float velocity = 1.0);
+  ParticleEmitter(const Vector& direction, float angle = .5,
+		  float emissionRate = 1.0, float velocity = 1.0);
   virtual ~ParticleEmitter(void);
 
Index: /orxonox/branches/movie_player/src/lib/graphics/particles/particle_engine.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/graphics/particles/particle_engine.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/graphics/particles/particle_engine.cc	(revision 4217)
@@ -228,15 +228,4 @@
 void ParticleEngine::tick(float dt)
 {
-  // add new Particles to each System connected to an Emitter.
-  tIterator<ParticleConnection>* tmpConIt = connectionList->getIterator();
-  ParticleConnection* tmpConnection = tmpConIt->nextElement();
-  while(tmpConnection)
-    {
-      tmpConnection->emitter->tick(dt, tmpConnection->system);
-      tmpConnection = tmpConIt->nextElement();
-    }
-  delete tmpConIt;
-  
-
   // ticks all the ParticleSystems
   tIterator<ParticleSystem>* tmpIt = systemList->getIterator();
@@ -248,10 +237,21 @@
     }
   delete tmpIt;
+
+  // add new Particles to each System connected to an Emitter.
+  tIterator<ParticleConnection>* tmpConIt = connectionList->getIterator();
+  ParticleConnection* tmpConnection = tmpConIt->nextElement();
+  while(tmpConnection)
+    {
+      tmpConnection->emitter->tick(dt, tmpConnection->system);
+      tmpConnection = tmpConIt->nextElement();
+    }
+  delete tmpConIt;
 }
 
 /**
    \brief draws all the systems and their Particles.
-*/
-void ParticleEngine::draw(void)
+   \param dt the time passed in seconds (since the last Frame)
+*/
+void ParticleEngine::draw(float dt)
 {
   tIterator<ParticleSystem>* tmpIt = systemList->getIterator();
@@ -259,5 +259,5 @@
   while(tmpSys)
     {
-      tmpSys->draw();
+      tmpSys->draw(dt);
       tmpSys = tmpIt->nextElement();
     }
Index: /orxonox/branches/movie_player/src/lib/graphics/particles/particle_engine.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/graphics/particles/particle_engine.h	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/graphics/particles/particle_engine.h	(revision 4217)
@@ -8,4 +8,6 @@
 
 #include "base_object.h"
+#include "particle_system.h"
+#include "particle_emitter.h"
 
 // FORWARD DEFINITION 
@@ -28,5 +30,5 @@
 
   void tick(float dt);
-  void draw(void);
+  void draw(float dt);
 
   void addSystem(ParticleSystem* system);
Index: /orxonox/branches/movie_player/src/lib/graphics/particles/particle_system.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/graphics/particles/particle_system.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/graphics/particles/particle_system.cc	(revision 4217)
@@ -35,15 +35,16 @@
 {
    this->setClassName ("ParticleSystem");
+   this->material = NULL;
    this->name = NULL;
    this->maxCount = maxCount;
    this->count = 0;
-   this->particleType = type;
    this->particles = NULL;
-   this->setConserve(.8);
-   this->setLifeSpan(.1);
+   this->deadList = NULL;
+   this->setConserve(1);
+   this->setLifeSpan(1);
    this->setInheritSpeed(0);
    this->glID = NULL;
    this->setRadius(1.0, 1.0, 0.0);
-   this->setType(PARTICLE_SPRITE, 1);
+   this->setType(type, 1);
    ParticleEngine::getInstance()->addSystem(this);
 }
@@ -53,8 +54,27 @@
    \brief standard deconstructor
 */
-ParticleSystem::~ParticleSystem() 
+ParticleSystem::~ParticleSystem()
 {
   // delete what has to be deleted here
    ParticleEngine::getInstance()->removeSystem(this);
+
+   // deleting all the living Particles
+   while (this->particles)
+     {
+       Particle* tmpDelPart = this->particles;
+       this->particles = this->particles->next;
+       delete tmpDelPart;
+     }
+
+   // deleting all the dead particles
+   while (this->deadList)
+     {
+       Particle* tmpDelPart = this->deadList;
+       this->deadList = this->deadList->next;
+       delete tmpDelPart;
+     }
+
+   if (this->material)
+     delete this->material;
 }
 
@@ -199,5 +219,6 @@
 	    {
 	      prevPart->next = tickPart->next;
-	      delete tickPart;
+	      tickPart->next = this->deadList;
+	      this->deadList = tickPart;
 	      tickPart = prevPart->next;
 	    }
@@ -206,5 +227,6 @@
 	      prevPart = NULL;
 	      this->particles = tickPart->next;
-	      delete tickPart;
+	      tickPart->next = this->deadList;
+	      this->deadList = tickPart;
 	      tickPart = this->particles;
 	    }
@@ -221,21 +243,21 @@
 /**
    \brief draws all the Particles of this System
-*/
-void ParticleSystem::draw(void)
-{
+   \param the time passed in seconds (since the last draw)
+*/
+void ParticleSystem::draw(float dt)
+{
+  glPushAttrib(GL_ENABLE_BIT);
   //  material->select();
-
-
-  glMatrixMode(GL_MODELVIEW);
-  //  glDisable(GL_LIGHTING);
-  material->select();
-
   Particle* drawPart = particles;
-  if (likely(drawPart != NULL))
+
+  switch (this->particleType)
     {
-      glBegin(GL_POINTS);
+    case PARTICLE_SPRITE:
+      glMatrixMode(GL_MODELVIEW);
+      //  glDisable(GL_LIGHTING);
+      material->select(); 
+      glDisable(GL_DEPTH_TEST);
       while (likely(drawPart != NULL))
 	{
-	  // draw in DOT mode
 	  glPushMatrix();
 	  glTranslatef(drawPart->position.x, drawPart->position.y, drawPart->position.z);
@@ -243,10 +265,43 @@
 	  glCallList(*this->glID);
 	  
-	  //	  	  glVertex3f(drawPart->position.x, drawPart->position.y, drawPart->position.z);
+	  //glVertex3f(drawPart->position.x, drawPart->position.y, drawPart->position.z);
 	  drawPart = drawPart->next;
 	  glPopMatrix();
 	}
+      //      glEnd();
+      
+      //  glEnable(GL_LIGHTING);
+      
+      glEnable(GL_DEPTH_TEST);
+      break;
+    default:
+
+    case PARTICLE_SPARK:
+      glEnable(GL_LINE_SMOOTH);
+      glBegin(GL_LINES);
+      while (likely(drawPart != NULL))
+	{
+	  glVertex3f(drawPart->position.x, drawPart->position.y, drawPart->position.z);
+	  glVertex3f(drawPart->position.x - drawPart->velocity.x,
+		     drawPart->position.y - drawPart->velocity.y,
+		     drawPart->position.z - drawPart->velocity.z);
+	  drawPart = drawPart->next;
+	}
       glEnd();
+      break;
+      
+    case PARTICLE_DOT:
+      glBegin(GL_POINTS);
+      while (likely(drawPart != NULL))
+	{
+	  glLineWidth(drawPart->radius);
+
+	  glVertex3f(drawPart->position.x, drawPart->position.y, drawPart->position.z);
+	  drawPart = drawPart->next;
+	}
+      glEnd();
+      break;
     }
+  glPopAttrib();
 }
 
@@ -264,5 +319,14 @@
       if (unlikely(particles == NULL))
 	{
-	  this->particles = new Particle;
+	  if (likely(deadList != NULL))
+	    {
+	      this->particles = this->deadList;
+	      deadList = deadList->next;
+	    }
+	  else
+	    {
+	      PRINTF(5)("Generating new Particle\n");
+	      this->particles = new Particle;
+	    }
 	  this->particles->next = NULL;
 	}
@@ -270,23 +334,33 @@
       else
 	{
-	  Particle* tmpPart = new Particle;
+	  Particle* tmpPart;
+	  if (likely(deadList != NULL))
+	    {
+	      tmpPart = this->deadList;
+	      deadList = deadList->next;
+	    }
+	  else
+	    {
+	      PRINTF(5)("Generating new Particle\n");
+	      tmpPart = new Particle;
+	    }
 	  tmpPart->next = this->particles;
 	  this->particles = tmpPart;
 	}
       
-      particles->timeToLive = this->lifeSpan + (float)(random()/RAND_MAX)* this->randomLifeSpan;
+      particles->timeToLive = this->lifeSpan + (float)(rand()/RAND_MAX)* this->randomLifeSpan;
       particles->position = position;
       particles->velocity = velocity;
 
       //  particle->rotation = ; //! \todo rotation is once again something to be done.
-      particles->mass = this->initialMass + (random()/RAND_MAX -.5)* this->randomInitialMass;
-      particles->radius = this->startRadius + (random()/RAND_MAX-.5)*this->randomStartRadius;
-      
-      particles->radiusIt = (this->endRadius + (random()/RAND_MAX-.5)*this->randomEndRadius - particles->radius) / particles->timeToLive;
+      particles->mass = this->initialMass + (rand()/RAND_MAX -.5)* this->randomInitialMass;
+      particles->radius = this->startRadius + (rand()/RAND_MAX-.5)*this->randomStartRadius;
+      
+      particles->radiusIt = (this->endRadius + (rand()/RAND_MAX-.5)*this->randomEndRadius - particles->radius) / particles->timeToLive;
 
       ++this->count;
     }
   else
-    PRINTF(4)("maximum count of particles reached not adding any more\n");
+    PRINTF(5)("maximum count of particles reached not adding any more\n");
 }
 
@@ -298,3 +372,11 @@
   PRINT(0)("  ParticleSystem %s\n", this->name);
   PRINT(0)("  ParticleCount: %d, maximumCount: %d :: filled %d%%\n", this->count, this->maxCount, 100*this->count/this->maxCount);
-}
+  if (deadList)
+    {
+      PRINT(0)("  - ParticleDeadList is used: ");
+      int i = 1;
+      Particle* tmpPart = this->deadList;
+      while (tmpPart = tmpPart->next) ++i;
+      PRINT(0)("count: %d\n", i);
+    }
+}
Index: /orxonox/branches/movie_player/src/lib/graphics/particles/particle_system.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/graphics/particles/particle_system.h	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/graphics/particles/particle_system.h	(revision 4217)
@@ -10,12 +10,14 @@
 #include "vector.h"
 
-#define PARTICLE_DOT_MASK           0x00001
-#define PARTICLE_SPRITE_MASK        0x00010
-#define PARTICLE_MODEL_MASK         0x00100
-#define PARTICLE_WORDL_ENTITY_MASK  0x01000
-#define PARTICLE_MULTI_MASK         0x10000
+#define PARTICLE_DOT_MASK           0x000001
+#define PARTICLE_SPARK_MASK         0x000010
+#define PARTICLE_SPRITE_MASK        0x000100
+#define PARTICLE_MODEL_MASK         0x001000
+#define PARTICLE_WORDL_ENTITY_MASK  0x010000
+#define PARTICLE_MULTI_MASK         0x100000
 
 //! An enumerator for the different types of particles.
 typedef enum PARTICLE_TYPE {PARTICLE_DOT = PARTICLE_DOT_MASK,
+			    PARTICLE_SPARK = PARTICLE_SPARK_MASK,
 			    PARTICLE_SPRITE = PARTICLE_SPRITE_MASK,
 			    PARTICLE_MULTI_SPRITE = PARTICLE_SPRITE_MASK | PARTICLE_MULTI_MASK,
@@ -42,4 +44,6 @@
   float radiusIt;             //!< The difference of the Size per second.
 
+  PARTICLE_TYPE type;
+
   Particle* next;             //!< pointer to the next particle in the List. (NULL if no preceding one)
 };
@@ -50,5 +54,6 @@
 
  public:
-  ParticleSystem(unsigned int maxCount = PARTICLE_DEFAULT_MAX_COUNT, PARTICLE_TYPE type = PARTICLE_DEFAULT_TYPE);
+  ParticleSystem(unsigned int maxCount = PARTICLE_DEFAULT_MAX_COUNT,
+		 PARTICLE_TYPE type = PARTICLE_DEFAULT_TYPE);
   virtual ~ParticleSystem();
   void setName(const char* name);
@@ -59,10 +64,11 @@
   void setInheritSpeed(float value);
   void setLifeSpan(float lifeSpan, float randomLifeSpan = 0.0);
-  void setRadius(float startRadius, float endRadius, float randomStartRadius = 0.0, float randomEndRadius = 0.0);
+  void setRadius(float startRadius, float endRadius,
+		 float randomStartRadius = 0.0, float randomEndRadius = 0.0);
   void setConserve(float conserve);
   void setMass(float mass, float randomMass);
 
   void tick(float dt);
-  void draw(void);
+  void draw(float dt);
 
   void debug(void);
@@ -88,4 +94,5 @@
   Material* material;        //!< A Material for all the Particles.
   Particle* particles;       //!< A list of particles of this System.
+  Particle* deadList;        //!< A list of dead Particles in the System.
 
   GLuint* glID;              //!< A List of different gl-List-ID's
Index: /orxonox/branches/movie_player/src/lib/gui/Makefile.in
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/Makefile.in	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/gui/Makefile.in	(revision 4217)
@@ -89,12 +89,8 @@
 EXEEXT = @EXEEXT@
 GPROF = @GPROF@
-GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
-GTHREAD_LIBS = @GTHREAD_LIBS@
 GTK2_CFLAGS = @GTK2_CFLAGS@
 GTK2_LIBS = @GTK2_LIBS@
 HAVE_CURL_FALSE = @HAVE_CURL_FALSE@
 HAVE_CURL_TRUE = @HAVE_CURL_TRUE@
-HAVE_GTHREAD_FALSE = @HAVE_GTHREAD_FALSE@
-HAVE_GTHREAD_TRUE = @HAVE_GTHREAD_TRUE@
 HAVE_GTK2_FALSE = @HAVE_GTK2_FALSE@
 HAVE_GTK2_TRUE = @HAVE_GTK2_TRUE@
@@ -117,4 +113,6 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+RANLIB = @RANLIB@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -125,4 +123,5 @@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
Index: /orxonox/branches/movie_player/src/lib/gui/console/Makefile.in
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/console/Makefile.in	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/gui/console/Makefile.in	(revision 4217)
@@ -107,12 +107,8 @@
 EXEEXT = @EXEEXT@
 GPROF = @GPROF@
-GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
-GTHREAD_LIBS = @GTHREAD_LIBS@
 GTK2_CFLAGS = @GTK2_CFLAGS@
 GTK2_LIBS = @GTK2_LIBS@
 HAVE_CURL_FALSE = @HAVE_CURL_FALSE@
 HAVE_CURL_TRUE = @HAVE_CURL_TRUE@
-HAVE_GTHREAD_FALSE = @HAVE_GTHREAD_FALSE@
-HAVE_GTHREAD_TRUE = @HAVE_GTHREAD_TRUE@
 HAVE_GTK2_FALSE = @HAVE_GTK2_FALSE@
 HAVE_GTK2_TRUE = @HAVE_GTK2_TRUE@
@@ -136,4 +132,6 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+RANLIB = @RANLIB@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -144,4 +142,5 @@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
Index: /orxonox/branches/movie_player/src/lib/gui/gui/Makefile.am
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/Makefile.am	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/Makefile.am	(revision 4217)
@@ -7,6 +7,5 @@
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/coord
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/data
-AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/gaphics
-AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/graphics/font
+AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/graphics
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/graphics/importer
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/lib/gui
@@ -19,4 +18,7 @@
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/glmenu
 AM_CXXFLAGS+=-I$(MAINSRCDIR)/ai
+AM_CXXFLAGS+=-I$(MAINSRCDIR)/util
+AM_CXXFLAGS+=-I$(MAINSRCDIR)/util/animation
+AM_CXXFLAGS+=-I$(MAINSRCDIR)/util/common
 
 #AM_LDFLAGS=$(GTK2_LIBS)   $(GTHREAD_LIBS)
@@ -24,23 +26,39 @@
 
 bin_PROGRAMS=gui
-gui_SOURCES=orxonox_gui.cc \
-	    orxonox_gui_gtk.cc \
-	    orxonox_gui_video.cc \
-	    orxonox_gui_audio.cc \
-	    orxonox_gui_exec.cc \
-	    orxonox_gui_flags.cc \
-	    orxonox_gui_banner.cc \
-	    orxonox_gui_keys.cc \
-	    orxonox_gui_update.cc
+gui_SOURCES=gui_main.cc \
+	    gui.cc \
+	    gui_gtk.cc \
+	    gui_element.cc \
+	    gui_video.cc \
+	    gui_audio.cc \
+	    gui_exec.cc \
+	    gui_flags.cc \
+	    gui_banner.cc \
+	    gui_keys.cc \
+	    gui_update.cc \
+		  $(MAINSRCDIR)/lib/graphics/graphics_engine.cc \
+		  $(MAINSRCDIR)/lib/lang/base_object.cc \
+		  $(MAINSRCDIR)/lib/math/vector.cc \
+		  $(MAINSRCDIR)/util/resource_manager.cc \
+		  $(MAINSRCDIR)/lib/graphics/text_engine.cc \
+		  $(MAINSRCDIR)/lib/coord/p_node.cc \
+		  $(MAINSRCDIR)/lib/coord/null_parent.cc \
+		  $(MAINSRCDIR)/lib/graphics/importer/array.cc \
+		  $(MAINSRCDIR)/lib/graphics/importer/model.cc \
+		  $(MAINSRCDIR)/lib/graphics/importer/objModel.cc \
+		  $(MAINSRCDIR)/lib/graphics/importer/material.cc \
+		  $(MAINSRCDIR)/lib/graphics/importer/texture.cc \
+		  $(MAINSRCDIR)/lib/graphics/importer/primitive_model.cc 
 
-noinst_HEADERS=orxonox_gui.h \
-	    orxonox_gui_gtk.h \
-	    orxonox_gui_video.h \
-	    orxonox_gui_audio.h \
-	    orxonox_gui_exec.h \
-	    orxonox_gui_flags.h \
-	    orxonox_gui_banner.h \
-	    orxonox_gui_keys.h \
-	    orxonox_gui_update.h
+noinst_HEADERS=gui.h \
+	    gui_gtk.h \
+	    gui_element.h \
+	    gui_video.h \
+	    gui_audio.h \
+	    gui_exec.h \
+	    gui_flags.h \
+	    gui_banner.h \
+	    gui_keys.h \
+	    gui_update.h
 
 #  uncomment the following if orxonox requires the mathlibrary
Index: /orxonox/branches/movie_player/src/lib/gui/gui/Makefile.in
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/Makefile.in	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/Makefile.in	(revision 4217)
@@ -53,9 +53,13 @@
 binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
 PROGRAMS = $(bin_PROGRAMS)
-am_gui_OBJECTS = orxonox_gui.$(OBJEXT) orxonox_gui_gtk.$(OBJEXT) \
-	orxonox_gui_video.$(OBJEXT) orxonox_gui_audio.$(OBJEXT) \
-	orxonox_gui_exec.$(OBJEXT) orxonox_gui_flags.$(OBJEXT) \
-	orxonox_gui_banner.$(OBJEXT) orxonox_gui_keys.$(OBJEXT) \
-	orxonox_gui_update.$(OBJEXT)
+am_gui_OBJECTS = gui_main.$(OBJEXT) gui.$(OBJEXT) gui_gtk.$(OBJEXT) \
+	gui_element.$(OBJEXT) gui_video.$(OBJEXT) gui_audio.$(OBJEXT) \
+	gui_exec.$(OBJEXT) gui_flags.$(OBJEXT) gui_banner.$(OBJEXT) \
+	gui_keys.$(OBJEXT) gui_update.$(OBJEXT) \
+	graphics_engine.$(OBJEXT) base_object.$(OBJEXT) \
+	vector.$(OBJEXT) resource_manager.$(OBJEXT) \
+	text_engine.$(OBJEXT) p_node.$(OBJEXT) null_parent.$(OBJEXT) \
+	array.$(OBJEXT) model.$(OBJEXT) objModel.$(OBJEXT) \
+	material.$(OBJEXT) texture.$(OBJEXT) primitive_model.$(OBJEXT)
 gui_OBJECTS = $(am_gui_OBJECTS)
 gui_LDADD = $(LDADD)
@@ -63,13 +67,19 @@
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/orxonox_gui.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonox_gui_audio.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonox_gui_banner.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonox_gui_exec.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonox_gui_flags.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonox_gui_gtk.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonox_gui_keys.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonox_gui_update.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/orxonox_gui_video.Po
+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/array.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/base_object.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/graphics_engine.Po ./$(DEPDIR)/gui.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/gui_audio.Po ./$(DEPDIR)/gui_banner.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/gui_element.Po ./$(DEPDIR)/gui_exec.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/gui_flags.Po ./$(DEPDIR)/gui_gtk.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/gui_keys.Po ./$(DEPDIR)/gui_main.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/gui_update.Po ./$(DEPDIR)/gui_video.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/material.Po ./$(DEPDIR)/model.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/null_parent.Po ./$(DEPDIR)/objModel.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/p_node.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/primitive_model.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/resource_manager.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/text_engine.Po ./$(DEPDIR)/texture.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/vector.Po
 CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
@@ -116,12 +126,8 @@
 EXEEXT = @EXEEXT@
 GPROF = @GPROF@
-GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
-GTHREAD_LIBS = @GTHREAD_LIBS@
 GTK2_CFLAGS = @GTK2_CFLAGS@
 GTK2_LIBS = @GTK2_LIBS@
 HAVE_CURL_FALSE = @HAVE_CURL_FALSE@
 HAVE_CURL_TRUE = @HAVE_CURL_TRUE@
-HAVE_GTHREAD_FALSE = @HAVE_GTHREAD_FALSE@
-HAVE_GTHREAD_TRUE = @HAVE_GTHREAD_TRUE@
 HAVE_GTK2_FALSE = @HAVE_GTK2_FALSE@
 HAVE_GTK2_TRUE = @HAVE_GTK2_TRUE@
@@ -144,4 +150,6 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+RANLIB = @RANLIB@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -152,4 +160,5 @@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
@@ -193,27 +202,43 @@
 target_vendor = @target_vendor@
 MAINSRCDIR = ../../..
-AM_CXXFLAGS = $(GTK2_CFLAGS) $(GTHREAD_CFLAGS) $(CURL_CFLAGS) $(MSBITFIELDS) -I$(MAINSRCDIR) -I$(MAINSRCDIR)/world_entities -I$(MAINSRCDIR)/story_entities -I$(MAINSRCDIR)/lib -I$(MAINSRCDIR)/lib/coord -I$(MAINSRCDIR)/lib/data -I$(MAINSRCDIR)/lib/gaphics -I$(MAINSRCDIR)/lib/graphics/font -I$(MAINSRCDIR)/lib/graphics/importer -I$(MAINSRCDIR)/lib/gui -I$(MAINSRCDIR)/lib/lang -I$(MAINSRCDIR)/lib/util -I$(MAINSRCDIR)/lib/math -I$(MAINSRCDIR)/defs -I$(MAINSRCDIR)/font -I$(MAINSRCDIR)/network -I$(MAINSRCDIR)/glmenu -I$(MAINSRCDIR)/ai
+AM_CXXFLAGS = $(GTK2_CFLAGS) $(GTHREAD_CFLAGS) $(CURL_CFLAGS) $(MSBITFIELDS) -I$(MAINSRCDIR) -I$(MAINSRCDIR)/world_entities -I$(MAINSRCDIR)/story_entities -I$(MAINSRCDIR)/lib -I$(MAINSRCDIR)/lib/coord -I$(MAINSRCDIR)/lib/data -I$(MAINSRCDIR)/lib/graphics -I$(MAINSRCDIR)/lib/graphics/importer -I$(MAINSRCDIR)/lib/gui -I$(MAINSRCDIR)/lib/lang -I$(MAINSRCDIR)/lib/util -I$(MAINSRCDIR)/lib/math -I$(MAINSRCDIR)/defs -I$(MAINSRCDIR)/font -I$(MAINSRCDIR)/network -I$(MAINSRCDIR)/glmenu -I$(MAINSRCDIR)/ai -I$(MAINSRCDIR)/util -I$(MAINSRCDIR)/util/animation -I$(MAINSRCDIR)/util/common
 
 #AM_LDFLAGS=$(GTK2_LIBS)   $(GTHREAD_LIBS)
 AM_LDFLAGS = $(GTK2_LIBS) $(GTHREAD_LIBS) $(CURL_LIBS)
-gui_SOURCES = orxonox_gui.cc \
-	    orxonox_gui_gtk.cc \
-	    orxonox_gui_video.cc \
-	    orxonox_gui_audio.cc \
-	    orxonox_gui_exec.cc \
-	    orxonox_gui_flags.cc \
-	    orxonox_gui_banner.cc \
-	    orxonox_gui_keys.cc \
-	    orxonox_gui_update.cc
-
-noinst_HEADERS = orxonox_gui.h \
-	    orxonox_gui_gtk.h \
-	    orxonox_gui_video.h \
-	    orxonox_gui_audio.h \
-	    orxonox_gui_exec.h \
-	    orxonox_gui_flags.h \
-	    orxonox_gui_banner.h \
-	    orxonox_gui_keys.h \
-	    orxonox_gui_update.h
+gui_SOURCES = gui_main.cc \
+	    gui.cc \
+	    gui_gtk.cc \
+	    gui_element.cc \
+	    gui_video.cc \
+	    gui_audio.cc \
+	    gui_exec.cc \
+	    gui_flags.cc \
+	    gui_banner.cc \
+	    gui_keys.cc \
+	    gui_update.cc \
+		  $(MAINSRCDIR)/lib/graphics/graphics_engine.cc \
+		  $(MAINSRCDIR)/lib/lang/base_object.cc \
+		  $(MAINSRCDIR)/lib/math/vector.cc \
+		  $(MAINSRCDIR)/util/resource_manager.cc \
+		  $(MAINSRCDIR)/lib/graphics/text_engine.cc \
+		  $(MAINSRCDIR)/lib/coord/p_node.cc \
+		  $(MAINSRCDIR)/lib/coord/null_parent.cc \
+		  $(MAINSRCDIR)/lib/graphics/importer/array.cc \
+		  $(MAINSRCDIR)/lib/graphics/importer/model.cc \
+		  $(MAINSRCDIR)/lib/graphics/importer/objModel.cc \
+		  $(MAINSRCDIR)/lib/graphics/importer/material.cc \
+		  $(MAINSRCDIR)/lib/graphics/importer/texture.cc \
+		  $(MAINSRCDIR)/lib/graphics/importer/primitive_model.cc 
+
+noinst_HEADERS = gui.h \
+	    gui_gtk.h \
+	    gui_element.h \
+	    gui_video.h \
+	    gui_audio.h \
+	    gui_exec.h \
+	    gui_flags.h \
+	    gui_banner.h \
+	    gui_keys.h \
+	    gui_update.h
 
 
@@ -293,13 +318,28 @@
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox_gui.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox_gui_audio.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox_gui_banner.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox_gui_exec.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox_gui_flags.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox_gui_gtk.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox_gui_keys.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox_gui_update.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox_gui_video.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/array.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base_object.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/graphics_engine.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_audio.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_banner.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_element.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_exec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_flags.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_gtk.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_keys.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_update.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gui_video.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/material.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/model.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/null_parent.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/objModel.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/p_node.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/primitive_model.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resource_manager.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text_engine.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/texture.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector.Po@am__quote@
 
 .cc.o:
@@ -318,4 +358,212 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+graphics_engine.o: $(MAINSRCDIR)/lib/graphics/graphics_engine.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT graphics_engine.o -MD -MP -MF "$(DEPDIR)/graphics_engine.Tpo" -c -o graphics_engine.o `test -f '$(MAINSRCDIR)/lib/graphics/graphics_engine.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/graphics/graphics_engine.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/graphics_engine.Tpo" "$(DEPDIR)/graphics_engine.Po"; else rm -f "$(DEPDIR)/graphics_engine.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/graphics/graphics_engine.cc' object='graphics_engine.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/graphics_engine.Po' tmpdepfile='$(DEPDIR)/graphics_engine.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o graphics_engine.o `test -f '$(MAINSRCDIR)/lib/graphics/graphics_engine.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/graphics/graphics_engine.cc
+
+graphics_engine.obj: $(MAINSRCDIR)/lib/graphics/graphics_engine.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT graphics_engine.obj -MD -MP -MF "$(DEPDIR)/graphics_engine.Tpo" -c -o graphics_engine.obj `if test -f '$(MAINSRCDIR)/lib/graphics/graphics_engine.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/graphics/graphics_engine.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/graphics/graphics_engine.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/graphics_engine.Tpo" "$(DEPDIR)/graphics_engine.Po"; else rm -f "$(DEPDIR)/graphics_engine.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/graphics/graphics_engine.cc' object='graphics_engine.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/graphics_engine.Po' tmpdepfile='$(DEPDIR)/graphics_engine.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o graphics_engine.obj `if test -f '$(MAINSRCDIR)/lib/graphics/graphics_engine.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/graphics/graphics_engine.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/graphics/graphics_engine.cc'; fi`
+
+base_object.o: $(MAINSRCDIR)/lib/lang/base_object.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT base_object.o -MD -MP -MF "$(DEPDIR)/base_object.Tpo" -c -o base_object.o `test -f '$(MAINSRCDIR)/lib/lang/base_object.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/lang/base_object.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/base_object.Tpo" "$(DEPDIR)/base_object.Po"; else rm -f "$(DEPDIR)/base_object.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/lang/base_object.cc' object='base_object.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/base_object.Po' tmpdepfile='$(DEPDIR)/base_object.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o base_object.o `test -f '$(MAINSRCDIR)/lib/lang/base_object.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/lang/base_object.cc
+
+base_object.obj: $(MAINSRCDIR)/lib/lang/base_object.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT base_object.obj -MD -MP -MF "$(DEPDIR)/base_object.Tpo" -c -o base_object.obj `if test -f '$(MAINSRCDIR)/lib/lang/base_object.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/lang/base_object.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/lang/base_object.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/base_object.Tpo" "$(DEPDIR)/base_object.Po"; else rm -f "$(DEPDIR)/base_object.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/lang/base_object.cc' object='base_object.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/base_object.Po' tmpdepfile='$(DEPDIR)/base_object.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o base_object.obj `if test -f '$(MAINSRCDIR)/lib/lang/base_object.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/lang/base_object.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/lang/base_object.cc'; fi`
+
+vector.o: $(MAINSRCDIR)/lib/math/vector.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT vector.o -MD -MP -MF "$(DEPDIR)/vector.Tpo" -c -o vector.o `test -f '$(MAINSRCDIR)/lib/math/vector.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/math/vector.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/vector.Tpo" "$(DEPDIR)/vector.Po"; else rm -f "$(DEPDIR)/vector.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/math/vector.cc' object='vector.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/vector.Po' tmpdepfile='$(DEPDIR)/vector.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o vector.o `test -f '$(MAINSRCDIR)/lib/math/vector.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/math/vector.cc
+
+vector.obj: $(MAINSRCDIR)/lib/math/vector.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT vector.obj -MD -MP -MF "$(DEPDIR)/vector.Tpo" -c -o vector.obj `if test -f '$(MAINSRCDIR)/lib/math/vector.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/math/vector.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/math/vector.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/vector.Tpo" "$(DEPDIR)/vector.Po"; else rm -f "$(DEPDIR)/vector.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/math/vector.cc' object='vector.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/vector.Po' tmpdepfile='$(DEPDIR)/vector.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o vector.obj `if test -f '$(MAINSRCDIR)/lib/math/vector.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/math/vector.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/math/vector.cc'; fi`
+
+resource_manager.o: $(MAINSRCDIR)/util/resource_manager.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT resource_manager.o -MD -MP -MF "$(DEPDIR)/resource_manager.Tpo" -c -o resource_manager.o `test -f '$(MAINSRCDIR)/util/resource_manager.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/resource_manager.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/resource_manager.Tpo" "$(DEPDIR)/resource_manager.Po"; else rm -f "$(DEPDIR)/resource_manager.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/resource_manager.cc' object='resource_manager.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/resource_manager.Po' tmpdepfile='$(DEPDIR)/resource_manager.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o resource_manager.o `test -f '$(MAINSRCDIR)/util/resource_manager.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/util/resource_manager.cc
+
+resource_manager.obj: $(MAINSRCDIR)/util/resource_manager.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT resource_manager.obj -MD -MP -MF "$(DEPDIR)/resource_manager.Tpo" -c -o resource_manager.obj `if test -f '$(MAINSRCDIR)/util/resource_manager.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/resource_manager.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/resource_manager.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/resource_manager.Tpo" "$(DEPDIR)/resource_manager.Po"; else rm -f "$(DEPDIR)/resource_manager.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/util/resource_manager.cc' object='resource_manager.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/resource_manager.Po' tmpdepfile='$(DEPDIR)/resource_manager.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o resource_manager.obj `if test -f '$(MAINSRCDIR)/util/resource_manager.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/util/resource_manager.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/util/resource_manager.cc'; fi`
+
+text_engine.o: $(MAINSRCDIR)/lib/graphics/text_engine.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT text_engine.o -MD -MP -MF "$(DEPDIR)/text_engine.Tpo" -c -o text_engine.o `test -f '$(MAINSRCDIR)/lib/graphics/text_engine.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/graphics/text_engine.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/text_engine.Tpo" "$(DEPDIR)/text_engine.Po"; else rm -f "$(DEPDIR)/text_engine.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/graphics/text_engine.cc' object='text_engine.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/text_engine.Po' tmpdepfile='$(DEPDIR)/text_engine.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o text_engine.o `test -f '$(MAINSRCDIR)/lib/graphics/text_engine.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/graphics/text_engine.cc
+
+text_engine.obj: $(MAINSRCDIR)/lib/graphics/text_engine.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT text_engine.obj -MD -MP -MF "$(DEPDIR)/text_engine.Tpo" -c -o text_engine.obj `if test -f '$(MAINSRCDIR)/lib/graphics/text_engine.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/graphics/text_engine.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/graphics/text_engine.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/text_engine.Tpo" "$(DEPDIR)/text_engine.Po"; else rm -f "$(DEPDIR)/text_engine.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/graphics/text_engine.cc' object='text_engine.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/text_engine.Po' tmpdepfile='$(DEPDIR)/text_engine.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o text_engine.obj `if test -f '$(MAINSRCDIR)/lib/graphics/text_engine.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/graphics/text_engine.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/graphics/text_engine.cc'; fi`
+
+p_node.o: $(MAINSRCDIR)/lib/coord/p_node.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT p_node.o -MD -MP -MF "$(DEPDIR)/p_node.Tpo" -c -o p_node.o `test -f '$(MAINSRCDIR)/lib/coord/p_node.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/coord/p_node.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/p_node.Tpo" "$(DEPDIR)/p_node.Po"; else rm -f "$(DEPDIR)/p_node.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/coord/p_node.cc' object='p_node.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/p_node.Po' tmpdepfile='$(DEPDIR)/p_node.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o p_node.o `test -f '$(MAINSRCDIR)/lib/coord/p_node.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/coord/p_node.cc
+
+p_node.obj: $(MAINSRCDIR)/lib/coord/p_node.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT p_node.obj -MD -MP -MF "$(DEPDIR)/p_node.Tpo" -c -o p_node.obj `if test -f '$(MAINSRCDIR)/lib/coord/p_node.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/coord/p_node.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/coord/p_node.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/p_node.Tpo" "$(DEPDIR)/p_node.Po"; else rm -f "$(DEPDIR)/p_node.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/coord/p_node.cc' object='p_node.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/p_node.Po' tmpdepfile='$(DEPDIR)/p_node.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o p_node.obj `if test -f '$(MAINSRCDIR)/lib/coord/p_node.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/coord/p_node.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/coord/p_node.cc'; fi`
+
+null_parent.o: $(MAINSRCDIR)/lib/coord/null_parent.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT null_parent.o -MD -MP -MF "$(DEPDIR)/null_parent.Tpo" -c -o null_parent.o `test -f '$(MAINSRCDIR)/lib/coord/null_parent.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/coord/null_parent.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/null_parent.Tpo" "$(DEPDIR)/null_parent.Po"; else rm -f "$(DEPDIR)/null_parent.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/coord/null_parent.cc' object='null_parent.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/null_parent.Po' tmpdepfile='$(DEPDIR)/null_parent.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o null_parent.o `test -f '$(MAINSRCDIR)/lib/coord/null_parent.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/coord/null_parent.cc
+
+null_parent.obj: $(MAINSRCDIR)/lib/coord/null_parent.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT null_parent.obj -MD -MP -MF "$(DEPDIR)/null_parent.Tpo" -c -o null_parent.obj `if test -f '$(MAINSRCDIR)/lib/coord/null_parent.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/coord/null_parent.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/coord/null_parent.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/null_parent.Tpo" "$(DEPDIR)/null_parent.Po"; else rm -f "$(DEPDIR)/null_parent.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/coord/null_parent.cc' object='null_parent.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/null_parent.Po' tmpdepfile='$(DEPDIR)/null_parent.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o null_parent.obj `if test -f '$(MAINSRCDIR)/lib/coord/null_parent.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/coord/null_parent.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/coord/null_parent.cc'; fi`
+
+array.o: $(MAINSRCDIR)/lib/graphics/importer/array.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT array.o -MD -MP -MF "$(DEPDIR)/array.Tpo" -c -o array.o `test -f '$(MAINSRCDIR)/lib/graphics/importer/array.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/graphics/importer/array.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/array.Tpo" "$(DEPDIR)/array.Po"; else rm -f "$(DEPDIR)/array.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/graphics/importer/array.cc' object='array.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/array.Po' tmpdepfile='$(DEPDIR)/array.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o array.o `test -f '$(MAINSRCDIR)/lib/graphics/importer/array.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/graphics/importer/array.cc
+
+array.obj: $(MAINSRCDIR)/lib/graphics/importer/array.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT array.obj -MD -MP -MF "$(DEPDIR)/array.Tpo" -c -o array.obj `if test -f '$(MAINSRCDIR)/lib/graphics/importer/array.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/graphics/importer/array.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/graphics/importer/array.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/array.Tpo" "$(DEPDIR)/array.Po"; else rm -f "$(DEPDIR)/array.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/graphics/importer/array.cc' object='array.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/array.Po' tmpdepfile='$(DEPDIR)/array.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o array.obj `if test -f '$(MAINSRCDIR)/lib/graphics/importer/array.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/graphics/importer/array.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/graphics/importer/array.cc'; fi`
+
+model.o: $(MAINSRCDIR)/lib/graphics/importer/model.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT model.o -MD -MP -MF "$(DEPDIR)/model.Tpo" -c -o model.o `test -f '$(MAINSRCDIR)/lib/graphics/importer/model.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/graphics/importer/model.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/model.Tpo" "$(DEPDIR)/model.Po"; else rm -f "$(DEPDIR)/model.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/graphics/importer/model.cc' object='model.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/model.Po' tmpdepfile='$(DEPDIR)/model.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o model.o `test -f '$(MAINSRCDIR)/lib/graphics/importer/model.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/graphics/importer/model.cc
+
+model.obj: $(MAINSRCDIR)/lib/graphics/importer/model.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT model.obj -MD -MP -MF "$(DEPDIR)/model.Tpo" -c -o model.obj `if test -f '$(MAINSRCDIR)/lib/graphics/importer/model.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/graphics/importer/model.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/graphics/importer/model.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/model.Tpo" "$(DEPDIR)/model.Po"; else rm -f "$(DEPDIR)/model.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/graphics/importer/model.cc' object='model.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/model.Po' tmpdepfile='$(DEPDIR)/model.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o model.obj `if test -f '$(MAINSRCDIR)/lib/graphics/importer/model.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/graphics/importer/model.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/graphics/importer/model.cc'; fi`
+
+objModel.o: $(MAINSRCDIR)/lib/graphics/importer/objModel.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT objModel.o -MD -MP -MF "$(DEPDIR)/objModel.Tpo" -c -o objModel.o `test -f '$(MAINSRCDIR)/lib/graphics/importer/objModel.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/graphics/importer/objModel.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/objModel.Tpo" "$(DEPDIR)/objModel.Po"; else rm -f "$(DEPDIR)/objModel.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/graphics/importer/objModel.cc' object='objModel.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/objModel.Po' tmpdepfile='$(DEPDIR)/objModel.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o objModel.o `test -f '$(MAINSRCDIR)/lib/graphics/importer/objModel.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/graphics/importer/objModel.cc
+
+objModel.obj: $(MAINSRCDIR)/lib/graphics/importer/objModel.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT objModel.obj -MD -MP -MF "$(DEPDIR)/objModel.Tpo" -c -o objModel.obj `if test -f '$(MAINSRCDIR)/lib/graphics/importer/objModel.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/graphics/importer/objModel.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/graphics/importer/objModel.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/objModel.Tpo" "$(DEPDIR)/objModel.Po"; else rm -f "$(DEPDIR)/objModel.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/graphics/importer/objModel.cc' object='objModel.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/objModel.Po' tmpdepfile='$(DEPDIR)/objModel.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o objModel.obj `if test -f '$(MAINSRCDIR)/lib/graphics/importer/objModel.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/graphics/importer/objModel.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/graphics/importer/objModel.cc'; fi`
+
+material.o: $(MAINSRCDIR)/lib/graphics/importer/material.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT material.o -MD -MP -MF "$(DEPDIR)/material.Tpo" -c -o material.o `test -f '$(MAINSRCDIR)/lib/graphics/importer/material.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/graphics/importer/material.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/material.Tpo" "$(DEPDIR)/material.Po"; else rm -f "$(DEPDIR)/material.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/graphics/importer/material.cc' object='material.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/material.Po' tmpdepfile='$(DEPDIR)/material.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o material.o `test -f '$(MAINSRCDIR)/lib/graphics/importer/material.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/graphics/importer/material.cc
+
+material.obj: $(MAINSRCDIR)/lib/graphics/importer/material.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT material.obj -MD -MP -MF "$(DEPDIR)/material.Tpo" -c -o material.obj `if test -f '$(MAINSRCDIR)/lib/graphics/importer/material.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/graphics/importer/material.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/graphics/importer/material.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/material.Tpo" "$(DEPDIR)/material.Po"; else rm -f "$(DEPDIR)/material.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/graphics/importer/material.cc' object='material.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/material.Po' tmpdepfile='$(DEPDIR)/material.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o material.obj `if test -f '$(MAINSRCDIR)/lib/graphics/importer/material.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/graphics/importer/material.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/graphics/importer/material.cc'; fi`
+
+texture.o: $(MAINSRCDIR)/lib/graphics/importer/texture.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT texture.o -MD -MP -MF "$(DEPDIR)/texture.Tpo" -c -o texture.o `test -f '$(MAINSRCDIR)/lib/graphics/importer/texture.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/graphics/importer/texture.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/texture.Tpo" "$(DEPDIR)/texture.Po"; else rm -f "$(DEPDIR)/texture.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/graphics/importer/texture.cc' object='texture.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/texture.Po' tmpdepfile='$(DEPDIR)/texture.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o texture.o `test -f '$(MAINSRCDIR)/lib/graphics/importer/texture.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/graphics/importer/texture.cc
+
+texture.obj: $(MAINSRCDIR)/lib/graphics/importer/texture.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT texture.obj -MD -MP -MF "$(DEPDIR)/texture.Tpo" -c -o texture.obj `if test -f '$(MAINSRCDIR)/lib/graphics/importer/texture.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/graphics/importer/texture.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/graphics/importer/texture.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/texture.Tpo" "$(DEPDIR)/texture.Po"; else rm -f "$(DEPDIR)/texture.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/graphics/importer/texture.cc' object='texture.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/texture.Po' tmpdepfile='$(DEPDIR)/texture.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o texture.obj `if test -f '$(MAINSRCDIR)/lib/graphics/importer/texture.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/graphics/importer/texture.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/graphics/importer/texture.cc'; fi`
+
+primitive_model.o: $(MAINSRCDIR)/lib/graphics/importer/primitive_model.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT primitive_model.o -MD -MP -MF "$(DEPDIR)/primitive_model.Tpo" -c -o primitive_model.o `test -f '$(MAINSRCDIR)/lib/graphics/importer/primitive_model.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/graphics/importer/primitive_model.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/primitive_model.Tpo" "$(DEPDIR)/primitive_model.Po"; else rm -f "$(DEPDIR)/primitive_model.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/graphics/importer/primitive_model.cc' object='primitive_model.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/primitive_model.Po' tmpdepfile='$(DEPDIR)/primitive_model.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o primitive_model.o `test -f '$(MAINSRCDIR)/lib/graphics/importer/primitive_model.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/graphics/importer/primitive_model.cc
+
+primitive_model.obj: $(MAINSRCDIR)/lib/graphics/importer/primitive_model.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT primitive_model.obj -MD -MP -MF "$(DEPDIR)/primitive_model.Tpo" -c -o primitive_model.obj `if test -f '$(MAINSRCDIR)/lib/graphics/importer/primitive_model.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/graphics/importer/primitive_model.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/graphics/importer/primitive_model.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/primitive_model.Tpo" "$(DEPDIR)/primitive_model.Po"; else rm -f "$(DEPDIR)/primitive_model.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(MAINSRCDIR)/lib/graphics/importer/primitive_model.cc' object='primitive_model.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/primitive_model.Po' tmpdepfile='$(DEPDIR)/primitive_model.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o primitive_model.obj `if test -f '$(MAINSRCDIR)/lib/graphics/importer/primitive_model.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/graphics/importer/primitive_model.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/graphics/importer/primitive_model.cc'; fi`
 uninstall-info-am:
 
Index: /orxonox/branches/movie_player/src/lib/gui/gui/gui.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/gui.cc	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/gui.cc	(revision 4217)
@@ -0,0 +1,156 @@
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include <unistd.h>
+
+#include "gui_gtk.h"
+#include "gui.h"
+#include "gui_video.h"
+#include "gui_audio.h"
+#include "gui_exec.h"
+#include "gui_flags.h"
+#include "gui_banner.h"
+#include "gui_keys.h"
+#include "gui_update.h"
+
+// GUI-modules
+GuiFlags* flags   = NULL;
+GuiVideo* video   = NULL;
+GuiAudio* audio   = NULL;
+GuiExec* exec     = NULL;
+GuiBanner* banner = NULL;
+GuiKeys* keys     = NULL;
+GuiUpdate* update = NULL;
+
+/* ORXONOXGUI */
+
+/**
+   \brief Initializes the Gui
+*/
+Gui::Gui(int argc, char *argv[])
+{
+  Window* orxonoxGUI = NULL;
+  executable = NULL;
+  
+  initGUI(argc, argv);
+
+  orxonoxGUI = new Window( "grafical " PACKAGE_NAME " loader, "PACKAGE_VERSION);
+  {
+    Box* windowBox = new Box ('h');
+    {
+      banner = new GuiBanner();
+      windowBox->fill (banner->getWidget());
+      
+      Box* optionBoxL = new Box('v');
+      {
+	Box* avBox = new Box('h');
+	
+	video = new GuiVideo();
+	avBox->fill(video->getWidget());
+	audio = new GuiAudio();
+	avBox->fill(audio->getWidget());
+      
+	optionBoxL->fill(avBox);
+
+	keys = new GuiKeys();
+	optionBoxL->fill(keys->getWidget());
+	windowBox->fill(optionBoxL);
+      }
+      Box* optionBoxR = new Box('v');
+      {
+	flags = new GuiFlags();
+	optionBoxR->fill(flags->getWidget());
+	
+	update = new GuiUpdate();
+	optionBoxR->fill(update->getWidget());
+
+	exec = new GuiExec();
+	optionBoxR->fill(exec->getWidget());
+      }
+      windowBox->fill(optionBoxR);
+    }
+    orxonoxGUI->fill(windowBox);
+  }
+
+
+  // Reading Values from File
+  exec->setConfDir(GUI_DEFAULT_CONF_DIR);
+  exec->setConfFile(GUI_DEFAULT_CONF_FILE);
+  exec->readFromFile(Window::mainWindow);
+  // Merging changes to the Options from appended flags.
+  for (int optCount = 1; optCount < argc; optCount++)
+    Window::mainWindow->walkThrough(Widget::flagCheck, argv[optCount], 0);
+
+  flags->setTextFromFlags(Window::mainWindow);
+  Window::mainWindow->showall();
+  
+  Window::mainWindow->walkThrough(Widget::redrawOptions, 1);
+
+  //// Handling special Cases. ///
+
+  // case update //
+#ifdef HAVE_CURL
+  if (static_cast<Option*>(Window::mainWindow->findWidgetByName(CONFIG_NAME_AUTO_UPDATE, 0))->value == 1)
+    {
+      update->checkForUpdates();
+    }
+#endif /* HAVE_CURL */
+}
+
+/**
+   \brief starts the OrxonoxGUI
+*/
+void Gui::startGui(void)
+{
+  mainloopGUI();
+  
+#ifndef HAVE_GTK2
+  GuiExec::startOrxonox(NULL, exec);
+#endif /* HAVE_GTK2 */
+}
+
+void Gui::printHelp()
+{
+  Window::mainWindow->walkThrough(Widget::printHelp, 1);
+}
+
+/**
+   \brief a bool that knows if orxonox should be started
+*/
+bool Gui::startOrxonox = false;
+
+/**
+   \brief Destructor.
+*/
+Gui::~Gui(void)
+{
+  delete video;
+  delete audio;
+  delete exec;
+  delete flags;
+  delete banner;
+  delete keys;
+  delete update;
+}
Index: /orxonox/branches/movie_player/src/lib/gui/gui/gui.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/gui.h	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/gui.h	(revision 4217)
@@ -0,0 +1,34 @@
+/*!
+ \file gui.h
+ \brief Creation of the Gui
+
+ \todo way to start gui without GTK (textmode) AND IMPROOVE
+ \todo curl interface to Download cool stuff
+
+ \todo widgets save themselves
+ \todo good way to step through all the Widgets
+ \todo label -> protected : getlabel function
+*/
+
+#ifndef _GUI_H
+#define _GUI_H
+
+using namespace std;
+
+#define GUI_DEFAULT_CONF_DIR "~/.orxonox"
+#define GUI_DEFAULT_CONF_FILE "orxonox.conf"
+
+//! Class that creates the Gui
+class Gui
+{
+ public:
+  Gui(int argc, char *argv[]);
+  ~Gui(void);
+
+  void startGui(void);
+  void printHelp(void);
+
+  static bool startOrxonox;
+};
+
+#endif /* _GUI_H */
Index: /orxonox/branches/movie_player/src/lib/gui/gui/gui_audio.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/gui_audio.cc	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/gui_audio.cc	(revision 4217)
@@ -0,0 +1,79 @@
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include "gui_audio.h"
+
+#include "gui_gtk.h"
+
+/**
+   \brief Creates an Audio-Frame
+*/
+GuiAudio::GuiAudio(void)
+{
+  Frame* audioFrame;        //!< The Frame that holds the audio Options.
+
+  audioFrame = new Frame("Audio-Options:");
+  audioFrame->setGroupName(CONFIG_SECTION_AUDIO);
+  {
+    Box* audioBox;            //!< The Box that holds the audio Options.
+    audioBox = new Box('v');
+    {
+      CheckButton* enableSound; //!< A Ckeckbutton for enabling Sound.
+      Slider* musicVolume;      //!< A Slider for music volume.
+      Slider* effectsVolume;    //!< A Slider for effects volume.
+      
+      enableSound = new CheckButton(CONFIG_NAME_DISABLE_AUDIO);
+      enableSound->setFlagName ("no-sound", 0);
+      enableSound->setDescription("Disables Sound", "Check this to disable Sound in Orxonox");
+      enableSound->setDefaultValue(0);
+      enableSound->saveability();
+      audioBox->fill(enableSound);
+      Label* musicVolumeLabel = new Label(CONFIG_NAME_MUSIC_VOLUME);
+      audioBox->fill(musicVolumeLabel);
+      musicVolume = new Slider("Music Volume", 0, 100);
+      musicVolume->setFlagName("music-volume", "m", 80);
+      musicVolume->setDescription("Sets the volume of the ingame music");
+      musicVolume->saveability();
+      audioBox->fill (musicVolume);
+      Label* effectsVolumeLabel = new Label (CONFIG_NAME_EFFECTS_VOLUME);
+      audioBox->fill (effectsVolumeLabel);
+      effectsVolume = new Slider ("Effects Volume", 0, 100);
+      effectsVolume->setFlagName ("effects-volume", "e", 80);
+      effectsVolume->setDescription("Sets the volune of the ingame SoundEffects");
+      effectsVolume->saveability();
+      audioBox->fill (effectsVolume);
+    }
+    audioFrame->fill(audioBox);
+  }
+  setMainWidget(audioFrame);
+}
+
+/** 
+    \brief Destructs the Audio-Stuff
+*/
+GuiAudio::~GuiAudio(void)
+{
+  // nothing to do here.
+}
Index: /orxonox/branches/movie_player/src/lib/gui/gui/gui_audio.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/gui_audio.h	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/gui_audio.h	(revision 4217)
@@ -0,0 +1,18 @@
+/*!
+  \file gui_audio.h
+  \brief File that holds the class that creates the Audio-Options.
+*/
+
+#ifndef _GUI_AUDIO_H
+#define _GUI_AUDIO_H
+
+#include "gui_element.h"
+
+//! Class that creates the Audio-Options.
+class GuiAudio : public GuiElement
+{
+ public:
+  GuiAudio(void);
+  ~GuiAudio(void);
+};
+#endif /* _GUI_AUDIO_H */
Index: /orxonox/branches/movie_player/src/lib/gui/gui/gui_banner.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/gui_banner.cc	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/gui_banner.cc	(revision 4217)
@@ -0,0 +1,97 @@
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include "gui_banner.h"
+
+#include "gui_gtk.h"
+
+#include "banner.xpm"
+#include "logo.xpm"
+
+/**
+   \brief Creates a new BannerEventBox and its content.
+*/
+GuiBanner::GuiBanner(void)
+{
+  // the banner Frame
+  Frame* bannerFrame;       //!< The frame that holds the Banner.
+  Box* bannerBox;           //!< The box that holds the Banner.
+  EventBox* bannerEventBox; //!< an Image needs an EventBox to catch klicks.
+  Label* bannerLabel;       //!< The Label of the Banner.
+
+  // the logo Window
+  Window* logoWindow;       //!< The Window that holds the Orxonox-CrewLogo.
+  Box* logoBox;             //!< The Box that holds the Orxonox-CrewLogo
+  Image* logoImage;         //!< The Orxonox-CrewLogo-Image
+  Label* logoLabel;         //!< The Label for the Orxonox-CrewLogo
+  Label* orxIsLabel;        //!< Some text about us.
+
+
+  // Banner Itself //
+  bannerEventBox = new EventBox("BannerEventBox");
+  {
+    Image* bannerImage;       //!< The Image for the Banner.
+
+    bannerImage = new Image(banner_xpm);
+    bannerEventBox->fill(bannerImage);
+  }
+  // Banner Window //
+  logoWindow = new Window(PACKAGE_NAME " is:");
+  {
+  EventBox* logoEventBox;   //!< The EventBox that holds the Orxonox-CrewLogo. it has to be an eventbox, because Images can not receive clicks.
+  
+#ifdef HAVE_GTK2
+    bannerEventBox->connectSignal("button_press_event", logoWindow, Window::windowOpen);
+    logoWindow->connectSignal("destroy", logoWindow, Window::windowClose);
+    logoWindow->connectSignal("delete_event", logoWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+    logoEventBox = new EventBox();
+    logoBox = new Box('v');
+    logoLabel = new Label(PACKAGE_NAME " v." PACKAGE_VERSION);
+    logoBox->fill(logoLabel);
+    logoImage = new Image(logo_xpm);
+    logoBox->fill(logoImage);
+
+    //! \todo add the names of all the guys working on orxonox
+    orxIsLabel = new Label("           " PACKAGE_NAME " is:\n" ORXONOX_STAFF);
+    logoBox->fill(orxIsLabel);
+    logoEventBox->fill(logoBox);
+#ifdef HAVE_GTK2
+    logoEventBox->connectSignal("button_press_event", logoWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+    logoWindow->fill(logoEventBox);
+  }
+  Window::addWindow(logoWindow);
+  
+  setMainWidget(bannerEventBox);
+}
+
+/**
+   \brief Destructs it.
+*/
+GuiBanner::~GuiBanner(void)
+{
+  // nothing to do here
+}
Index: /orxonox/branches/movie_player/src/lib/gui/gui/gui_banner.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/gui_banner.h	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/gui_banner.h	(revision 4217)
@@ -0,0 +1,22 @@
+/*!
+  \file gui_banner.h
+  \brief  File that holds the class that creates the Banner-Image.\n
+  This is Commercial :-)
+*/
+
+#ifndef _GUI_BANNER_H
+#define _GUI_BANNER_H
+
+#include "gui.h"
+#include "gui_element.h"
+
+//! Class that creates the Banner-Image
+class GuiBanner : public GuiElement
+{
+ public:
+  GuiBanner(void);
+  ~GuiBanner(void);
+};
+
+
+#endif /* _GUI_BANNER_H */
Index: /orxonox/branches/movie_player/src/lib/gui/gui/gui_element.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/gui_element.cc	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/gui_element.cc	(revision 4217)
@@ -0,0 +1,50 @@
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: ...
+   co-programmer: ...
+*/
+
+//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_
+
+#include "gui_element.h"
+
+#include "gui_gtk.h"
+
+using namespace std;
+
+
+/**
+   \brief standard constructor
+   \todo this constructor is not jet implemented - do it
+*/
+GuiElement::GuiElement () 
+{
+  this->mainWidget = NULL;
+}
+
+
+/**
+   \brief standard deconstructor
+
+*/
+GuiElement::~GuiElement () 
+{
+  // delete what has to be deleted here
+}
+
+/**
+   \brief Every GuiElement should set this, or it could result in a SegFault.
+*/
+void GuiElement::setMainWidget(Widget* widget)
+{
+  this->mainWidget = widget;
+}
Index: /orxonox/branches/movie_player/src/lib/gui/gui/gui_element.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/gui_element.h	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/gui_element.h	(revision 4217)
@@ -0,0 +1,28 @@
+/*! 
+    \file gui_element.h
+    \brief Definition of ...
+
+*/
+
+#ifndef _GUI_ELEMENT_H
+#define _GUI_ELEMENT_H
+
+class Widget;
+
+//! A SuperClass for all the Different GuiElements
+class GuiElement {
+
+ public:
+  GuiElement();
+  virtual ~GuiElement();
+  
+  /** \returns the main Widget of this GuiElement. */
+  Widget* getWidget(void) {return this->mainWidget;}
+ protected:
+  void setMainWidget(Widget* widget);
+  
+ private:
+  Widget* mainWidget;
+};
+
+#endif /* _GUI_ELEMENT_H */
Index: /orxonox/branches/movie_player/src/lib/gui/gui/gui_exec.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/gui_exec.cc	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/gui_exec.cc	(revision 4217)
@@ -0,0 +1,410 @@
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include "gui_exec.h"
+
+#include "resource_manager.h"
+
+#include <string.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#ifdef __WIN32__
+#include <direct.h>
+#endif /* __WIN32__ */
+HashTable* orxonoxFlagHash;
+
+/** 
+    \brief Creates the Exec-Frame
+*/
+GuiExec::GuiExec(void)
+{
+  Frame* execFrame;            //!< The Frame that holds the ExecutionOptions.
+
+  this->confFile = NULL;
+  this->confDir = NULL;
+
+  execFrame = new Frame("Execute-Tags:");
+  {
+    Box* execBox;                //!< The Box that holds the ExecutionOptions.
+
+    execBox = new Box('v');
+    execFrame->setGroupName(CONFIG_SECTION_MISC);
+    {
+      Button* start;               //!< The start Button of orxonox.
+      Menu* verboseMode;           //!< A Menu for setting the verbose-Mode. \todo setting up a verbose-class.
+      CheckButton* alwaysShow;     //!< A CheckButton, for if orxonox should start with or without gui.
+      Button* quit;                //!< A Button to quit the Gui without starting orxonox.
+      
+      start = new Button("Start");
+#ifdef HAVE_GTK2
+      start->connectSignal("clicked", this, startOrxonox);
+#endif /* HAVE_GTK2 */
+      execBox->fill(start);
+      this->saveSettings = new CheckButton(CONFIG_NAME_SAVE_SETTINGS);
+      this->saveSettings->value = 1;
+      this->saveSettings->saveability();
+      execBox->fill(this->saveSettings);
+
+#ifdef DEBUG
+      verboseMode = new Menu(CONFIG_NAME_VERBOSE_MODE, "nothing",
+#if DEBUG >=1
+			     "error",
+#endif
+#if DEBUG >=2
+			     "warning",
+#endif
+#if DEBUG >=3
+			     "info",
+#endif
+#if DEBUG >=4
+			     "debug",
+#endif
+#if DEBUG >=5
+			     "heavydebug",
+#endif
+			     "lastItem");
+      verboseMode->setFlagName("verbose", "v", 2);
+      verboseMode->setDescription("Sets the Output Mode", "This Enables Outbug messages\n"
+				  "0: nothing will be displayed, but stuff one cannot do without (eg.GUI)\n"
+#if DEBUG >=1
+				  "1: error: outputs all the above and errors"
+#endif
+#if DEBUG >=2
+				  "2: warning: outputs all the above plus warnings"
+#endif
+#if DEBUG >=3
+				  "3: info: outputs all the above plus Information"
+#endif
+#if DEBUG >=4
+				  "4: debug: displays all the above plus debug information"
+#endif
+#if DEBUG >=5
+				  "5: heavydebug: displays all the above plus heavy debug information: WARNING: the game will run very slow with this."
+#endif
+				  );
+      verboseMode->saveability();
+      execBox->fill(verboseMode);
+#endif
+
+      alwaysShow = new CheckButton(CONFIG_NAME_ALWAYS_SHOW_GUI);
+      alwaysShow->setFlagName("gui", "g", 0);
+      alwaysShow->setDescription("shows the gui when starting orxonox");
+      alwaysShow->saveability();
+      execBox->fill(alwaysShow);
+
+      quit = new Button("Quit");
+#ifdef HAVE_GTK2
+      quit->connectSignal("clicked", this, GuiExec::quitGui);
+      //  Window::mainWindow->connectSignal("remove", this, GuiExec::quitGui);
+      Window::mainWindow->connectSignal("destroy", this, GuiExec::quitGui);
+#endif /* HAVE_GTK2 */
+      execBox->fill(quit);
+    }
+    execFrame->fill(execBox);
+  }
+  setMainWidget(execFrame);
+}
+
+/**
+   \brief Destructs the Execution-stuff
+*/
+GuiExec::~GuiExec(void)
+{
+  if(this->confFile)
+    delete []this->confFile;
+  if(this->confDir)
+    delete []this->confDir;
+}
+
+/* FILE HANDLING */
+
+/**
+   \brief sets the Directory of the configuration files
+   \param confDir the Directory for the configuration files
+*/
+void GuiExec::setConfDir(const char* confDir)
+{
+  this->confDir = ResourceManager::homeDirCheck(confDir);
+
+  PRINTF(5)("Config Directory is: %s.\n", this->confDir);
+  //! \todo F** Windows-support
+#ifndef __WIN32__
+  mkdir(this->confDir, 0755);
+#else /* __WiN32__ */
+  mkdir(this->confDir);
+#endif /* __WIN32__ */
+}
+
+/**
+   \brief Sets the location of the configuration File.
+   \param fileName the location of the configFile
+
+   The name will be parsed from ~/ to /home/[username] on unix and c:/Documents and Settings/username/Settings/ on Windows
+*/
+void GuiExec::setConfFile(const char* fileName)
+{
+  if (!this->confDir)
+    this->setConfDir("~/");
+  this->confFile = new char[strlen(this->confDir)+strlen(fileName)+2];
+  sprintf(this->confFile, "%s/%s", this->confDir, fileName);
+  PRINTF(5)("ConfigurationFile is %s.\n", this->confFile);
+}
+
+/**
+   \returns The name of the Configuration-File
+*/
+const char* GuiExec::getConfigFile(void) const
+{
+  return this->confFile;
+}
+
+/**
+   \brief checks if a option should be saved.
+   \return 1 if it should 0 if not/
+*/
+int GuiExec::shouldsave()
+{
+  return(static_cast<Option*>(this->saveSettings)->value);
+}
+
+/** 
+    \brief Saves the configuration-file to the Disk.\n
+    \param widget from which Widget on should be saved.
+
+    this Function only opens and closes the file, in between GuiExec::writeFileText(Widget* widget) will execute the real writing process.
+*/
+void GuiExec::writeToFile(Widget* widget)
+{
+  this->CONFIG_FILE = fopen(this->confFile, "w");
+  if(this->CONFIG_FILE)
+    this->writeFileText(widget, 0);
+  fclose(this->CONFIG_FILE);
+}
+
+/**
+   \brief Actually writes into the configuration file to the disk.
+   \param widget from which Widget on should be saved.
+   \param depth initially "0", and grows higher, while new Groups are bundeled.
+*/
+void GuiExec::writeFileText(Widget* widget, int depth)
+{
+  int counter = 0;
+  while(counter < depth &&((widget->optionType > GUI_NOTHING
+			      &&(static_cast<Option*>(widget)->isSaveable()))
+			     ||(widget->optionType < GUI_NOTHING
+				&& static_cast<Packer*>(widget)->getGroupName())))
+    {
+      fprintf(this->CONFIG_FILE, "  ", depth);
+      counter++;
+    }
+  
+  // check if it is a Packer, and if it is, check if it has a name and if there is something in it.
+  if(widget->optionType < GUI_NOTHING)
+    {
+      if(static_cast<Packer*>(widget)->getGroupName())
+	{
+	  fprintf(CONFIG_FILE, "[%s]\n", static_cast<Packer*>(widget)->getGroupName());
+	  this->writeFileText(static_cast<Packer*>(widget)->down, depth+1);
+	  fprintf(CONFIG_FILE, "\n");
+	}
+      else
+	{
+	  this->writeFileText(static_cast<Packer*>(widget)->down, depth);
+	}
+    } 
+
+  if(widget->optionType > GUI_NOTHING)
+    if (static_cast<Option*>(widget)->isSaveable())
+      {
+	char Buffer[256];
+	char* space2under;
+	strcpy(Buffer, static_cast<Option*>(widget)->title);
+	if(strchr(Buffer, '_'))
+	  PRINTF(2)("Optionname %s is not Valid for Saving, because it includes an underscore\n", Buffer);
+	while(space2under = strchr(Buffer, ' '))
+	  {
+	    space2under[0] = '_';
+	  }
+	  fprintf(CONFIG_FILE, "%s = %s\n", Buffer, static_cast<Option*>(widget)->save());
+      }
+
+  if(widget->next != NULL)
+    this->writeFileText(widget->next, depth);
+}
+
+/**
+   \brief Reads in Configuration Data.
+   \param widget from which Widget on should be saved.
+*/
+void GuiExec::readFromFile(Widget* widget)
+{
+  this->CONFIG_FILE = fopen(this->confFile, "r");
+  VarInfo varInfo;
+  if(this->CONFIG_FILE)
+    {
+      Widget* groupWidget = widget;
+      char Buffer[256] = "";
+      char Variable[256]= "";
+      char* Value;
+      while(fscanf(this->CONFIG_FILE, "%s", Buffer) != EOF)
+	{
+	  // group-search //
+	  if(!strncmp(Buffer, "[", 1))
+	    {
+	      if((groupWidget = locateGroup(widget, Buffer, 1))==NULL)
+		{
+		  PRINTF(2)("!!There is no group called %s in this GUI.\n First best Widget will get the Infos assigned.\n Config-File will be updated in next Save\n", Buffer);
+		  groupWidget = widget;
+		}
+	      else
+		PRINT(5)("Group %s located.\n", static_cast<Packer*>(groupWidget)->groupName);
+	    }
+	  // option-setting //
+	  if(!strcmp(Buffer, "="))
+	    {
+	      char* under2space;
+	      while(under2space = strchr(Variable, '_'))
+		{
+		  sprintf(under2space, " %s", under2space+1);
+		}
+	      
+	      fscanf(this->CONFIG_FILE, "%s", Buffer);
+	      varInfo.variableName = Variable;
+	      varInfo.variableValue = Buffer;
+	      groupWidget->walkThrough(this->readFileText, &varInfo, 0);
+	      sprintf(Variable, "");
+	    }
+	  sprintf(Variable, "%s", Buffer);
+	}
+      widget->walkThrough(widget->setOptions, 0);
+    }
+}
+
+/**
+   \brief Maps Confugurations to the Options.
+   \param widget which widget downwards
+   \param varInfo Information about the Variable to read
+*/
+void GuiExec::readFileText(Widget* widget, void* varInfo)
+{
+  VarInfo* info =(VarInfo*)varInfo;
+  if(widget->title && !strcmp(widget->title, info->variableName))
+    {
+      PRINT(5)("Located Option %s.\n", widget->title);
+      if(widget->optionType > GUI_NOTHING)
+	static_cast<Option*>(widget)->load(info->variableValue);
+    }
+}
+
+/**
+   \brief Locates a Group.
+   \param widget The Widget from where to search from
+   \param groupName The GroupName for which to search.
+   \param depth The Depth of the search seen from the first widget we searched from.
+   \returns The Widget that holds the Group, or the NULL if the Group wasn't found.
+
+   \todo do this in gui-gtk.
+*/
+Widget* GuiExec::locateGroup(Widget* widget, char* groupName, int depth)
+{
+  Widget* tmp;
+
+  // removes the trailing and ending [ ].
+  if(!strncmp(groupName, "[", 1))
+    {
+      groupName = groupName+1;
+      groupName[strlen(groupName)-1] = '\0';
+    }
+
+  if(widget->optionType < GUI_NOTHING)
+    {
+      if(static_cast<Packer*>(widget)->getGroupName() &&
+	 !strcmp(groupName, static_cast<Packer*>(widget)->getGroupName()))
+	{
+	  return widget;
+	}
+      else
+	{
+	  if((tmp = locateGroup(static_cast<Packer*>(widget)->down, groupName, depth+1)) != NULL)
+	    return tmp;
+	}
+    } 
+  
+  if(widget->next != NULL && depth != 0)
+    {
+      if((tmp = locateGroup(widget->next, groupName, depth)) != NULL)
+	return tmp;
+    }
+  return NULL;
+}
+
+/**
+   \brief Starts ORXONOX.(not really implemented yet, but the function is there.\n
+   \param widget the widget that executed the start command
+   \param data additional data
+
+   This is a Signal and can be executed through Widget::signal_connect
+*/
+#ifdef HAVE_GTK2
+int GuiExec::startOrxonox(GtkWidget* widget, void* data)
+#else /* HAVE_GTK2 */
+int GuiExec::startOrxonox(void* widget, void* data)
+#endif /* HAVE_GTK2 */
+{
+  Window::mainWindow->hide();
+
+#ifdef HAVE_GTK2
+  gtk_widget_destroy(Window::mainWindow->widget);
+#else
+  quitGui(widget, data);
+#endif /* HAVE_GTK2 */
+
+  PRINT(3)("Starting Orxonox\n");
+  Gui::startOrxonox = true;
+}
+
+/**
+   \brief Starts ORXONOX.(not really implemented yet, but the function is there.\n
+   \param widget the widget that executed the start command
+   \param data additional data
+
+   This is a Signal and can be executed through Widget::signal_connect
+*/
+#ifdef HAVE_GTK2
+int GuiExec::quitGui(GtkWidget* widget, void* data)
+#else /* HAVE_GTK2 */
+int GuiExec::quitGui(void* widget, void* data)
+#endif /* HAVE_GTK2 */
+{
+  GuiExec* exec = (GuiExec*)data;
+  if(exec->shouldsave())
+    exec->writeToFile(Window::mainWindow);
+#ifdef HAVE_GTK2
+  gtk_main_quit();
+  while(gtk_events_pending()) gtk_main_iteration();
+#endif /* HAVE_GTK2 */
+}
Index: /orxonox/branches/movie_player/src/lib/gui/gui/gui_exec.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/gui_exec.h	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/gui_exec.h	(revision 4217)
@@ -0,0 +1,66 @@
+/*!
+  \file gui_exec.h
+  \brief File that holds the class that creates the execute-Options.
+*/
+
+#ifndef _GUI_EXEC_H
+#define _GUI_EXEC_H
+
+#include "gui.h"
+#include "gui_element.h"
+#include "gui_gtk.h"
+
+class Widget;
+class CheckButton;
+using namespace std;
+
+//! Class that creates the execute-Options.
+class GuiExec : public GuiElement
+{
+ private:
+  CheckButton* saveSettings;   //!< A CheckBox for if the Options should be saved.
+
+  char* confDir;               //!< The directory of the orxonox-configuration-files.
+  char* confFile;              //!< The name of the .orxonox.conf(ig)-file.
+  FILE* CONFIG_FILE;           //!< Filehandler for reading and writing.
+
+  //! A struct that holds informations about variables.
+  struct VarInfo
+  {
+    char* variableName;        //!< The Name of this variable;
+    char* variableValue;       //!< The Value this variable gets.
+  };
+
+ public:
+  GuiExec(void);
+  ~GuiExec(void);
+  
+  void setConfDir(const char* confDir);
+  void setConfFile(const char* confFile);
+  const char* getConfigFile(void) const;
+  int shouldsave(void);
+  void writeToFile(Widget* widget);
+  void writeFileText(Widget* widget, int depth);
+  void readFromFile(Widget* widget);
+  static void readFileText(Widget* widget, void* varInfo);
+  Widget* locateGroup(Widget* widget, char* groupName, int depth);
+
+#ifdef HAVE_GTK2
+  static int startOrxonox(GtkWidget *widget, void* data);
+  static int quitGui(GtkWidget *widget, void* data);
+#else /* HAVE_GTK2 */
+  static int startOrxonox(void* widget, void* data);
+  static int quitGui(void* widget, void* data);
+#endif /* HAVE_GTK2 */
+};
+
+//! A simple hashtable 
+struct HashTable
+{
+  char* name;           //!< name of the entry
+  char* value;          //!< value of the entry
+  HashTable* next;      //!< pointer to the next entry
+};
+
+
+#endif /* _GUI_EXEC_H */
Index: /orxonox/branches/movie_player/src/lib/gui/gui/gui_flags.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/gui_flags.cc	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/gui_flags.cc	(revision 4217)
@@ -0,0 +1,99 @@
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include "gui_flags.h"
+
+/**
+   \brief Creates the Flags-Frame
+*/
+GuiFlags::GuiFlags(void)
+{
+  this->flagsFrame = new Frame("Orxonox-Startup-Flags:");
+  this->flagsBox = new Box('v');
+
+  this->flagsLabel = new Label();
+  this->flagsLabel->setSize(260,60);
+  this->flagsBox->fill(flagsLabel);
+  this->shortFlags = new CheckButton("shortFlags");
+  this->shortFlags->setDefaultValue(0);
+  this->flagsBox->fill(shortFlags);
+
+  this->flagsFrame->fill(flagsBox);
+  this->setMainWidget(flagsFrame);
+}
+
+/**
+   \brief Destructs the Flags-stuff
+*/
+GuiFlags::~GuiFlags(void)
+{
+  // nothing to do here
+}
+
+/**
+   \brief Sets the Flags from widget downwards.
+   \param widget the Widget from which on to scan for deeper Options and their settings.
+*/
+void GuiFlags::setTextFromFlags(Widget* widget)
+{
+  FlagInfo flagInfo;
+  flagInfo.shortFlags = this->shortFlags;
+  flagInfo.flagsLabel = this->flagsLabel;
+
+  this->flagsLabel->ereaseText();
+  this->flagsLabel->appendText(executable);
+  widget->walkThrough(GuiFlags::flagsText, &flagInfo, 0);
+  //  flagsLabel->setTitle(flagText);
+}
+
+/** 
+    \brief this actually sets the flagtext, and appends it to flagText
+    \param widget like GuiFlags::setTextFromFlags(widget)
+    \param flagInfo Information aboout the Flag that should be updated.
+*/
+void GuiFlags::flagsText(Widget* widget, void* flagInfo)
+{
+  FlagInfo* info =(FlagInfo*)flagInfo;
+  if(widget->optionType > GUI_NOTHING)
+    if (static_cast<Option*>(widget)->value != static_cast<Option*>(widget)->defaultValue )
+      {
+	if(info->shortFlags->isActive() && static_cast<Option*>(widget)->flagNameShort)
+	  {
+	    info->flagsLabel->appendText(" -");
+	    info->flagsLabel->appendText(static_cast<Option*>(widget)->flagNameShort);
+	  }
+	else if(!info->shortFlags->isActive() && static_cast<Option*>(widget)->flagName)
+	  {
+	    info->flagsLabel->appendText(" --");
+	    info->flagsLabel->appendText(static_cast<Option*>(widget)->flagName);
+	  }
+
+	if(static_cast<Option*>(widget)->optionType > GUI_BOOL)
+	  {
+	    info->flagsLabel->appendText("=");
+	    info->flagsLabel->appendInt(static_cast<Option*>(widget)->value);
+	  }
+      }
+}
Index: /orxonox/branches/movie_player/src/lib/gui/gui/gui_flags.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/gui_flags.h	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/gui_flags.h	(revision 4217)
@@ -0,0 +1,36 @@
+/*!
+  \file gui_flags.h
+  \brief File that holds the class that creates the flags-Text.
+*/
+
+#ifndef _GUI_FLAGS_H
+#define _GUI_FLAGS_H
+
+#include "gui.h"
+#include "gui_element.h"
+#include "gui_gtk.h"
+
+//! Class that creates the flags-Text.
+class GuiFlags : public GuiElement
+{
+ private:
+  Frame* flagsFrame;          //!< The Frame that holds the flagsDisplay.
+  Box* flagsBox;              //!< The Box that holds the flagsDisplay.
+  CheckButton* shortFlags;    //!< CheckButton to change the display of short and long flags \todo show long if long not availible...
+  Label* flagsLabel;          //!< The Label of the Flags
+
+ public:
+  GuiFlags(void);
+  ~GuiFlags(void);
+
+  void setTextFromFlags(Widget* widget);
+  static void flagsText(Widget* widget, void* flagInfo);
+  
+  //! Struct that handles flag information.
+  struct FlagInfo
+  {
+    CheckButton* shortFlags;     //!< Button for the flag.
+    Label* flagsLabel;           //!< Label for the flag.
+  };
+};
+#endif /* _GUI_FLAGS_H */
Index: /orxonox/branches/movie_player/src/lib/gui/gui/gui_gtk.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/gui_gtk.cc	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/gui_gtk.cc	(revision 4217)
@@ -0,0 +1,1941 @@
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+
+#include "gui_gtk.h"
+
+#include <stdarg.h>
+#include <string.h>
+#include <stdlib.h>
+
+using namespace std;
+
+#include "gui_flags.h"
+#include "gui_exec.h"
+
+extern GuiFlags* flags;
+
+char* executable;
+
+/**
+   \brief Initializes the Guis GTK-stuff.
+   \param argc the argument count.
+   \param argv The Argument strings.
+*/
+bool initGUI(int argc, char *argv[])
+{
+  executable = new char[strlen(argv[0])+1];
+  strcpy(executable, argv[0]);
+
+#ifdef HAVE_GTK2
+  gtk_init(&argc, &argv);
+#include "rc"
+  gtk_rc_parse_string( rc_string );
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief enters the GUI's main-loop
+*/
+bool mainloopGUI(void)
+{
+#ifdef HAVE_GTK2
+  gtk_main();
+#else /* HAVE_GTK2 */
+  char boolAns = 'y';
+  char ans[1000];
+  PRINT(0)("================================\n");
+  PRINT(0)("= ORXONOX CONFIGURATION WIZARD =\n");
+  PRINT(0)("================================ - v." PACKAGE_VERSION "\n");
+
+  while(true)
+    {
+      PRINT(0)("\n Listing all the Orxonox Options: \n");
+      PRINT(0)("  #############################\n");
+      Window::mainWindow->walkThrough(Widget::listOptionsAndGroups, 1);
+      
+      PRINT(0)("\nDo you want change any of the above values now? [Yn] ");
+      scanf("%s", ans);
+      if (ans[0] =='n' || ans[0]=='N')
+	break;
+      
+      PRINT(0)("\n Listing all groups\n");
+      PRINT(0)("  #################\n");
+      int groupCount = 0;
+      Window::mainWindow->walkThrough(Widget::listGroups, &groupCount, 1);
+      
+      PRINT(0)("\nIn which Group? [1-%d] ", groupCount);
+      Packer* group;
+      while(true)
+	{
+	  scanf("%s", ans);
+	  int ansIp = atoi(ans);
+	  if (ansIp <= groupCount)
+	    {
+	      group = static_cast<Packer*>(Window::mainWindow->findGroupByNumber(&ansIp, 1));
+	      break;
+	    }
+	  else
+	    PRINT(0)("\nChoose a smaller Number please: [1-%d] ", groupCount);
+	}
+      PRINT(0)("\n\nGroup: [%s]\n\n", group->groupName);
+      int optionCount = 0;
+      group->walkThrough(Widget::listOptions, &optionCount, 0);
+      PRINT(0)("\nWhich Option? [1-%d] ", optionCount);
+      Option* option;
+      while(true)
+	{
+	  scanf("%s", ans);
+	  int ansIp = atoi(ans);
+	  if (ansIp <= groupCount)
+	    {
+	      option = static_cast<Option*>(group->findOptionByNumber(&ansIp, 0));
+	      break;
+	    }
+	  else
+	    PRINT(0)("\nChoose a smaler Number please: [1-%d] ", optionCount);
+	}
+      PRINT(0)("\n\n:: %s ::\n", option->title);
+      option->changeOption();
+      
+      // here follows the rest.... this will be nasty.
+      //! \todo finish it.
+      //! \todo memory leek at save(); and save is a BAD word, use saveString instead, or something like it.
+    }
+#endif /* HAVE_GTK2 */
+  
+}
+
+
+//////////////////////////////
+/// DEFINING WIDGET-CLASES ///
+//////////////////////////////
+
+////////////
+/* WIDGET */
+////////////
+/**
+   \brief constructs a Widget
+*/
+Widget::Widget(void)
+{
+  next = NULL;
+  this->title = NULL;
+}
+
+/**
+   \brief deletes any given Widget
+   This is still pretty crappy.
+*/
+Widget::~Widget(void)
+{
+  if (this->title)
+    {
+      delete []this->title;
+    }
+  
+  PRINTF(5)("deleting the Widget part.\n");
+
+  // deleting next item if existent
+  if (this->next)
+    delete this->next;
+  this->next = NULL;
+
+  //!  \todo not hiding widget, deleting.
+  //  this->hide();
+  // gtk_destroy_widget(this->widget);
+}
+
+/**
+   \brief sets a new Title to a Widget
+   \param title The new Title to set to the Widget
+*/
+void Widget::setTitle(const char* title)
+{
+  if (this->title)
+    delete []this->title;
+  this->title = new char[strlen(title)+1];
+  strcpy(this->title, title);
+}
+
+/**
+   \brief makes the widget visible.
+*/
+void Widget::show(void)
+{
+#ifdef HAVE_GTK2
+  gtk_widget_show(this->widget);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief hides the widget.
+*/
+void Widget::hide(void)
+{
+#ifdef HAVE_GTK2
+  gtk_widget_hide(this->widget);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief Sets the resolution of a specific widget to the given size.
+   \param width the width of the widget to set.
+   \param height the height of the widget to set.
+*/
+void Widget::setSize(int width, int height)
+{
+#ifdef HAVE_GTK2
+  gtk_widget_set_usize(this->widget, width, height);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief searches through widgets for a Name.
+*/
+Widget* Widget::findWidgetByName(char* name, unsigned int depth)
+{
+
+  if (this->title && !strcmp(this->title, name))
+    return this;
+
+  if (this->optionType < GUI_NOTHING && static_cast<Packer*>(this)->down)
+    {
+      Widget* tmp = static_cast<Packer*>(this)->down->findWidgetByName(name, depth+1);
+      if (tmp)
+	return tmp;
+    }
+  
+  if (depth>0 && this->next)
+    return this->next->findWidgetByName(name, depth);
+
+  return NULL;
+}
+
+/**
+   \brief Moves through all the Widgets downwards from this and executes the function on them.
+   \param function must be of type void and takes a Widget* as an Input. 
+   \param depth the current depth. if > 0 then the next Widget will also be walked through.
+*/
+void Widget::walkThrough(void(*function)(Widget*), unsigned int depth)
+{
+  function(this);
+  if (this->optionType < GUI_NOTHING)
+    {
+      static_cast<Packer*>(this)->down->walkThrough(function, depth+1);
+    } 
+
+  if (this->next && depth != 0)
+    this->next->walkThrough(function, depth);
+}
+
+/**
+   \brief Moves through all the Widgets downwards from this and executes the function on them.
+   \param function must be of type void and takes a Widget* as an Input.
+   \param data Additional Data you want to pass to the function.
+   \param depth the current depth. if > 0 then the next Widget will also be walked through.
+*/
+void Widget::walkThrough(void(*function)(Widget*, void*), void* data, unsigned int depth)
+{
+  function(this, data);
+  if (this->optionType < GUI_NOTHING)
+    {
+      static_cast<Packer*>(this)->down->walkThrough(function, data, depth+1);
+    }
+  if (this->next && depth != 0)
+    this->next->walkThrough(function, data, depth);
+}
+
+/** 
+    \brief This is for listing the options of "widget"
+    \param widget specifies the widget that should be listed
+*/
+void Widget::listOptionsAndGroups(Widget* widget)
+{
+  if (widget->optionType < GUI_NOTHING && static_cast<Packer*>(widget)->groupName)
+    PRINT(0)("[%s]\n", static_cast<Packer*>(widget)->groupName);
+  if (widget->optionType > GUI_NOTHING)
+    {
+      Widget::listOptions(widget);
+    }
+}
+
+/** 
+    \brief This is for listing the options of "widget"
+    \param widget specifies the widget that should be listed
+*/
+void Widget::listOptions(Widget* widget)
+{
+  if(widget->optionType > GUI_NOTHING)
+    PRINT(0)("  %s is %s\n", static_cast<Option*>(widget)->title, static_cast<Option*>(widget)->save());
+}
+
+/** 
+    \brief This is for listing the options of "widget"
+    \param widget specifies the widget that should be listed
+    \param data A Counter, that always knows how many Options have been found yet.
+*/
+void Widget::listOptions(Widget* widget, void* data)
+{
+  
+  if (widget->optionType > GUI_NOTHING)
+    {
+      int* count =(int*)data;
+      *count = *count +1;
+      PRINT(0)(" %d:%s is %s\n", *count,
+	       static_cast<Option*>(widget)->title,
+	       static_cast<Option*>(widget)->save());
+    }
+}
+
+/** 
+    \brief This is for listing the options of "widget"
+    \param widget specifies the widget that should be listed
+    \param data A Counter, that always knows how many Options have been found yet.
+*/
+void Widget::printHelp(Widget* widget)
+{
+  int helpLen=0;
+
+  if (widget->optionType > GUI_NOTHING)
+    {
+      Option* option = (Option*)widget;
+      if (option->flagName || option->flagNameShort)
+	{
+	  PRINT(0)("  ");
+	  if (option->flagNameShort)
+	    {
+	      PRINT(0)("-%s", option->flagNameShort);
+	      helpLen += strlen(option->flagNameShort)+1;
+	    }
+	  if (option->flagName)
+	    {
+	      if (helpLen > 0)
+		{
+		  PRINT(0)("|");
+		  helpLen++;
+		}
+	      PRINT(0)("--%s:", option->flagName);
+	      helpLen += strlen(option->flagName)+2;
+	    }
+	  while ((helpLen ++) < 29)
+	    PRINT(0)(" ");
+	  if (option->shortDescription)
+	    PRINT(0)("%s\n", option->shortDescription);
+	  else
+	    PRINT(0)("\n");
+	}
+    }
+}
+
+/** 
+    \brief Finds an Option by a given number(the n'th option found away from this Widget)
+    \param number The Count of options to wait(by reference)
+    \param depth The depth of the sarch. if 0 it will not search next pointer
+    
+    \todo should return Option* would be much sexier.
+*/
+Widget* Widget::findOptionByNumber(int* number, unsigned int depth)
+{
+  if (optionType > GUI_NOTHING)
+    {
+      --*number;
+      if (*number <= 0)
+	{
+	  return this;
+	}
+    }
+  if (this->optionType < GUI_NOTHING && static_cast<Packer*>(this)->down)
+    {
+      Widget* tmp = static_cast<Packer*>(this)->down->findOptionByNumber(number, depth+1);
+      if (tmp)
+	return tmp;
+    }
+  if (depth>0 && this->next)
+    return this->next->findOptionByNumber(number, depth);
+
+  return NULL;
+}
+
+/** 
+    \brief This is for listing the groups of "widget"
+    \param widget specifies the widget that should be listed
+*/
+void Widget::listGroups(Widget* widget)
+{
+  if (widget->optionType < GUI_NOTHING && static_cast<Packer*>(widget)->groupName)
+    PRINT(0)("[%s]\n", static_cast<Packer*>(widget)->groupName);
+}
+
+/** 
+    \brief This is for listing the Groups of "widget". It also displays the n'th number found.
+    \param widget specifies the widget that should be listed
+    \param data the Counter, that will show the number(this function will raise it by one if a Group is fount.
+*/
+void Widget::listGroups(Widget* widget, void* data)
+{
+  int* count = (int*)data;
+  if (widget->optionType < GUI_NOTHING && static_cast<Packer*>(widget)->groupName)
+    PRINT(0)("%d: [%s]\n", ++*count, static_cast<Packer*>(widget)->groupName);
+}
+
+/** 
+    \brief Finds a Group by a given number(the n'th Group found away from this Widget)
+    \param number The Count of options to wait(by reference)
+    \param depth The depth of the sarch. if 0 it will not search next pointer
+*/
+Widget* Widget::findGroupByNumber(int* number, unsigned int depth)
+{
+  if (optionType < GUI_NOTHING && static_cast<Packer*>(this)->groupName)
+    {
+      --*number;
+      if (*number <= 0)
+	{
+	  return this;
+	}
+    }
+  if (this->optionType < GUI_NOTHING && static_cast<Packer*>(this)->down)
+    {
+      Widget* tmp = static_cast<Packer*>(this)->down->findGroupByNumber(number, depth+1);
+      if (tmp)
+	return tmp;
+    }
+  if (depth>0 && this->next)
+    return this->next->findGroupByNumber(number, depth);
+
+  return NULL;
+}
+
+/**
+    \brief This is for setting the option of "widget"
+    \param widget specifies the widget that should be set.
+*/
+void Widget::setOptions(Widget* widget)
+{
+  if (widget->optionType > GUI_NOTHING)
+    static_cast<Option*>(widget)->redraw();
+}
+
+/**
+   \brief redraws all the Widgets down from widget
+   \param widget The topmost Widget
+   \param data ...
+*/
+void Widget::redrawOptions(Widget* widget)
+{
+  if (widget->optionType > GUI_NOTHING)
+    static_cast<Option*>(widget)->redraw();
+}
+
+/**
+   \brief Walks through all the Flags given at startuptime.
+*/
+void Widget::flagCheck(Widget* widget, void* flagName)
+{
+  if (widget->optionType > GUI_NOTHING)
+    {      
+      Option* option =(Option*)widget;
+      char* name =(char*)flagName;
+      char* value = NULL;
+      bool found = false;
+      // check if long flag matches
+      if ((option->flagName && strlen(name) > 2 &&
+	   !strncmp(name+2, option->flagName, strlen(option->flagName)) &&
+	   (name[strlen(option->flagName)+2] == '\0' || name[strlen(option->flagName)+2] == '=') ))
+	{
+	  found = true;
+	  if (name[strlen(option->flagName)+2] == '=')
+	    {
+	      value = name+strlen(option->flagName)+3;
+	    }
+	}
+      // check if short flag matches
+      else if (option->flagNameShort && strlen(name)>1 &&
+	       !strncmp(name+1, option->flagNameShort, strlen(option->flagNameShort)) &&
+	       (name[strlen(option->flagNameShort)+1] == '\0' || name[strlen(option->flagNameShort)+1] == '='))
+	{
+	  found = true;
+	  if (name[strlen(option->flagNameShort)+1] == '=')
+	    {
+	      value = name+strlen(option->flagNameShort)+2;
+	    }	  
+	}
+
+      if (found)
+	{
+	  PRINT(4)("found matching Flag %s\n", name);
+	  if (value)
+	    {
+	      PRINT(4)("with Value %s\n", value);
+	      option->value = atoi(value);
+	    }
+	  else
+	    {
+	      option->value = !option->defaultValue;
+	    }
+	  option->redraw();
+	}
+
+    }
+}
+
+#ifdef HAVE_GTK2
+/** 
+    \brief Connect any signal to any given Sub-widget
+*/
+gulong Widget::connectSignal(char* event, gint(*signal)(GtkWidget*, GdkEvent*, void *))
+{
+  return g_signal_connect(G_OBJECT(this->widget), event, G_CALLBACK(signal), NULL);
+}
+
+/**
+   \brief Connect a signal with additionally passing the whole Object
+*/
+gulong Widget::connectSignal(char* event, gint(*signal)( GtkWidget*, Widget *))
+{
+  return g_signal_connect(G_OBJECT(this->widget), event, G_CALLBACK(signal), this);
+}
+
+/**
+   \brief Connect a signal with additionally passing a whole external Object
+*/
+gulong Widget::connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, GdkEvent*, void *))
+{
+  return g_signal_connect(G_OBJECT(this->widget), event, G_CALLBACK(signal), extObj);
+}
+
+/**
+   \brief Connect a signal with additionally passing a whole external Object
+*/
+gulong Widget::connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, void *))
+{
+  return g_signal_connect(G_OBJECT(this->widget), event, G_CALLBACK(signal), extObj);
+}
+
+/**
+   \brief Connect a signal with additionally passing a whole external Object
+*/
+gulong Widget::connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, GdkEventKey*, void *))
+{
+  return g_signal_connect(G_OBJECT(this->widget), event, G_CALLBACK(signal), extObj);
+}
+
+void Widget::disconnectSignal(gulong signalID)
+{
+  g_signal_handler_disconnect(G_OBJECT(this->widget), signalID);
+}
+
+/**
+   \brief Signal that does absolutely nothing
+   \param widget The widget that initiated the Signal
+   \param event The event-type.
+   \param nothing nothin.
+*/
+gint Widget::doNothingSignal(GtkWidget *widget, GdkEvent* event, void* nothing)
+{
+}
+#endif /* HAVE_GTK2 */
+
+/////////////
+/* PACKERS */
+/////////////
+/**
+   \brief Constructs a Packer
+*/
+Packer::Packer(void)
+{
+  this->down = NULL;
+  this->groupName = NULL;
+}
+
+/**
+   \brief Destroys a Packer.
+*/
+Packer::~Packer(void)
+{ 
+  PRINTF(5)("deleting the Packer part.\n");
+  if (this->groupName)
+    delete []this->groupName;
+  
+  //deleting recursively.
+  if (this->down)
+    delete this->down;
+}
+
+/**
+   \brief Sets the group name under which all the lower widgets of this will be saved.
+   \param name The name of the group.
+*/
+void Packer::setGroupName(const char* name)
+{
+  if (this->groupName)
+    delete []this->groupName;
+  this->groupName = new char[strlen(name)+1];
+  strcpy(this->groupName, name);
+}
+
+////////////////
+/* CONTAINERS */
+////////////////
+/**
+   \brief Initializes a Container.
+
+   sets the Container-Specific defaults.
+*/
+Container::Container(void)
+{
+  this->optionType = GUI_CONTAINER;
+}
+
+/**
+   \brief Destroys a Container.
+*/
+Container::~Container(void)
+{ 
+  PRINTF(5)("deleting the Container part.\n");
+}
+
+/**
+   \briefFills a Container with lowerWidget.
+   \param lowerWidget the Widget that should be filled into the Container.
+
+   It does this by filling up the down pointer only if down points to NULL.
+*/
+void Container::fill(Widget* lowerWidget)
+{
+  if (this->down == NULL)
+    {
+#ifdef HAVE_GTK2
+      gtk_container_add(GTK_CONTAINER(this->widget), lowerWidget->widget);
+#endif /* HAVE_GTK2 */
+
+      this->down = lowerWidget;
+    }
+  else
+    PRINTF(2)("You tried to put more than one Widget into a Container. \nNot including this item.\nThis is only possible with Boxes.\n");
+}
+
+/**
+   \param borderwidth sets the Width of the border
+*/
+void Container::setBorderWidth(int borderwidth)
+{
+  this->borderwidth = borderwidth;
+
+#ifdef HAVE_GTK2
+  gtk_container_set_border_width(GTK_CONTAINER(widget), borderwidth);
+#endif /* HAVE_GTK2 */
+}
+
+////////////
+/* WINDOW */
+////////////
+
+/**
+   \brief The main Window of Th Gui
+*/
+Window* Window::mainWindow = NULL;      
+
+/**
+   \brief Creating a Window with a name
+   \param windowName the name the window should get.
+*/
+Window::Window(const char* windowName)
+{
+  if (!mainWindow)
+    {
+      mainWindow = this;
+      this->isOpen = true;
+    }
+  isOpen = false;
+
+#ifdef HAVE_GTK2
+  widget = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+  gtk_window_set_policy(GTK_WINDOW(widget), TRUE, TRUE, TRUE);
+#if !defined(__WIN32__)
+  //  gtk_window_set_decorated(GTK_WINDOW(widget), FALSE);
+#endif 
+  gtk_container_set_border_width(GTK_CONTAINER(widget), 3);
+#endif /* HAVE_GTK2 */
+
+  if (windowName)
+    this->setTitle(windowName);
+}
+
+/**
+   \brief Destructs a Window.
+*/
+Window::~Window(void)
+{
+  PRINTF(5)("deleting the Window: %s\n", this->title);
+}
+
+/**
+   \brief Adds a new Window Windows to the List of Windows.
+   \param windowToAdd The Windows that should be added to the List
+   \todo this instead of windowToAdd(possibly)
+*/
+void Window::addWindow(Window* windowToAdd)
+{
+  if (!mainWindow)
+    {
+      mainWindow = windowToAdd;
+      windowToAdd->isOpen = true;
+    }
+  else
+    {
+      Widget* tmpWindow = mainWindow;
+      while(tmpWindow->next)
+	tmpWindow = tmpWindow->next;
+      tmpWindow->next = windowToAdd;
+      windowToAdd->isOpen = false;
+    }
+  return;
+}
+
+/**
+   \brief Shows all Widgets that are included within this->widget.
+*/
+void Window::showall(void)
+{
+#ifdef HAVE_GTK2
+  if (!this->isOpen)
+    gtk_widget_show_all(this->widget);
+  else
+    gtk_widget_show(this->widget);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief Set The Window-title to title
+   \param title title the Window should get.
+*/
+void Window::setTitle(const char* title)
+{
+  if (this->title)
+    delete []this->title;
+  this->title = new char[strlen(title)+1];
+  strcpy(this->title, title);
+#ifdef HAVE_GTK2
+  gtk_window_set_title(GTK_WINDOW(widget), title);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief opens up a Window and fixes the Focus to it
+*/
+void Window::open(void)
+{
+  if (this != mainWindow)
+    {
+      isOpen = true;
+#ifdef HAVE_GTK2
+      gtk_widget_show_all(this->widget);
+      gtk_grab_add(this->widget);
+#endif /* HAVE_GTK2 */
+    }
+}
+
+/**
+   \brief closes up a Window and removes the Focus from it
+*/
+void Window::close(void)
+{
+  if (this != mainWindow)
+    {
+      this->isOpen = false;
+#ifdef HAVE_GTK2
+      gtk_grab_remove(this->widget);
+      gtk_widget_hide(this->widget);
+#endif /* HAVE_GTK2 */
+    }
+}
+
+/**
+   \brief opens up a window(not topmost Window).
+   this is the Signal that does it. !!SIGNALS ARE STATIC!!
+   \param widget the widget that did it.
+   \param event the event that did it.
+   \param window the Window that should be opened
+*/
+#ifdef HAVE_GTK2
+gint Window::windowOpen(GtkWidget* widget, GdkEvent* event, void* window)
+{
+  static_cast<Window*>(window)->open();
+}
+#else /* HAVE_GTK2 */
+int Window::windowOpen(void* widget, void* event, void* window){}
+#endif /* HAVE_GTK2 */
+
+/**
+   \brief closes a window(not topmost Window).
+   this is the Signal that does it. !!SIGNALS ARE STATIC!!
+   \param widget the widget that did it!
+   \param event the event that did it!
+   \param window the Window that should be closed
+*/
+#ifdef HAVE_GTK2
+gint Window::windowClose(GtkWidget* widget, GdkEvent* event, void* window)
+{
+  static_cast<Window*>(window)->close();
+}
+#else /* HAVE_GTK2 */
+int Window::windowClose(void* widget, void* event, void* window){}
+#endif /* HAVE_GTK2 */
+
+///////////
+/* FRAME */
+///////////
+/**
+   \brief Creates a new Frame with name title
+*/
+Frame::Frame(const char* frameName)
+{
+#ifdef HAVE_GTK2
+  this->widget = gtk_frame_new("");
+  gtk_container_set_border_width(GTK_CONTAINER(this->widget), 3);
+#endif /* HAVE_GTK2 */
+  if (frameName)
+    this->setTitle(frameName);
+}
+
+/**
+   \brief destrcucts a Frame
+*/
+Frame::~Frame(void)
+{
+  PRINTF(5)("deleting the Frame: %s\n", this->title);
+}
+
+/**
+   \brief Sets the Frames name to title
+   \param title The title the Frame should get.
+*/
+void Frame::setTitle(const char* title)
+{
+  if (this->title)
+    delete []this->title;
+  this->title = new char[strlen(title)+1];
+  strcpy(this->title, title);
+#ifdef HAVE_GTK2
+  gtk_frame_set_label(GTK_FRAME(widget), this->title);
+#endif /* HAVE_GTK2 */
+}
+
+//////////////
+/* EVENTBOX */
+//////////////
+/**
+   \brief Creates a new EventBox with name title
+   \param eventBoxName title the Eventbox should get(only data-structure-internal)
+*/
+EventBox::EventBox(const char* eventBoxName)
+{
+#ifdef HAVE_GTK2
+  this->widget = gtk_event_box_new();
+  gtk_container_set_border_width(GTK_CONTAINER(this->widget), 3);
+#endif /* HAVE_GTK2 */
+
+  if (eventBoxName)
+    this->setTitle(eventBoxName);
+}
+
+/**
+   \brief destructs an EventBox.
+*/
+EventBox::~EventBox(void)
+{
+  PRINTF(5)("deleting the EventBox: %s\n", this->title);
+}
+
+/////////
+/* BOX */
+/////////
+/**
+   \brief Creates a new Box of type boxtype
+   \param boxtype if 'v' the Box will be vertically, if 'h' the Box will be horizontally
+*/
+Box::Box(char boxtype)
+{
+  this->optionType = GUI_BOX;
+
+#ifdef HAVE_GTK2
+  if (boxtype == 'v')
+    this->widget = gtk_vbox_new(FALSE, 0);
+  else
+    this->widget = gtk_hbox_new(FALSE, 0);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief destructs a Box.
+*/
+Box::~Box(void)
+{
+  PRINTF(5)("deleting the Box: %s\n", this->title);
+}
+
+/** 
+    \brief Fills a box with a given Widget.
+    \param lowerWidget the next Widget that should be appendet to this Box
+
+    It does this by apending the first one to its down-pointer and all its following ones to the preceding next-pointer. The last one will receive a NULL pointer as Next
+*/
+void Box::fill(Widget* lowerWidget)
+{
+#ifdef HAVE_GTK2
+  gtk_box_pack_start(GTK_BOX(this->widget), lowerWidget->widget, TRUE, TRUE, 0);
+#endif /* HAVE_GTK2 */
+  if (this->down == NULL)
+    this->down = lowerWidget;
+  else
+    {
+      Widget* tmp;
+      tmp = this->down;
+      while(tmp->next != NULL)
+	tmp = tmp->next;
+      tmp->next = lowerWidget;
+    }
+}
+
+////////////
+/* OPTION */
+////////////
+/**
+   \brief Initializes a new Option.
+   sets all Option-Specific-Values to their defaults.
+*/
+Option::Option(void)
+{
+  this->value = 0;
+  this->flagName = NULL;
+  this->flagNameShort = NULL;
+  
+  this->shortDescription = NULL;
+  this->longDescription = NULL;
+
+  this->saveable = false;
+  this->defaultValue = 0;
+}
+
+/**
+   \brief Destroys an Option.
+*/
+Option::~Option(void)
+{ 
+  PRINTF(5)("deleting the Option Part.\n");
+  if (this->flagName)
+    delete []this->flagName;
+  if (this->flagNameShort)
+    delete []this->flagNameShort;
+  if (this->shortDescription)
+    delete []this->shortDescription;
+  if (this->longDescription)
+    delete []this->longDescription;
+}
+
+/**
+   \param defaultValue new defaultValue for this option
+*/
+void Option::setDefaultValue(int defaultValue)
+{
+  this->value = this->defaultValue = defaultValue;
+}
+
+/**
+   \brief This sets The FlagName of an Option and defines its default Values
+   !! Options will be saved if flagname is different from NULL !!
+   \param flagname the Name that will be displayed in the output
+   \param defaultvalue the default Value for this Option(see definition of defaultvalue
+*/
+void Option::setFlagName(const char* flagname, int defaultvalue)
+{
+  if (this->flagName)
+    delete this->flagName;
+  this->flagName = new char [strlen(flagname)+1];
+  strcpy(this->flagName, flagname);
+
+  this->setDefaultValue(defaultvalue);
+
+  if (this->flagNameShort)
+    {
+      delete this->flagNameShort;
+      this->flagNameShort = NULL;
+    }
+
+  //  cout << "Set Flagname of " << this->title << " to " << flagname << endl;
+}
+
+/** 
+    \brief see Option::setFlagName(char* flagname, int defaultvalue)
+    \param flagname the Name that will be displayed in the output
+    \param defaultvalue the default Value for this Option(see definition of defaultvalue
+    \param flagnameshort a short flagname to be displayed in the output
+*/
+void Option::setFlagName(const char* flagname, const char* flagnameshort,  int defaultvalue)
+{
+  if (this->flagName)
+    delete []this->flagName;
+  this->flagName = new char [strlen(flagname)+1];
+  strcpy(this->flagName, flagname);
+
+  if (this->flagNameShort)
+    delete []this->flagNameShort;
+  this->flagNameShort = new char [strlen(flagnameshort)+1];
+  strcpy(this->flagNameShort, flagnameshort);
+  this->setDefaultValue(defaultvalue);
+  //  cout << "Set Flagname of " << this->title << " to " << flagname << endl;
+}
+
+void Option::setDescription(const char* shortDescription, const char* longDescription)
+{
+  // setting up the short description
+  if (this->shortDescription)
+    delete []this->shortDescription;
+  this->shortDescription = new char [strlen(shortDescription)+1];
+  strcpy(this->shortDescription, shortDescription);
+
+  //setting up the long description
+  if (this->longDescription)
+    delete []this->longDescription;
+  if (longDescription)
+    {
+      this->longDescription = new char [strlen(longDescription)+1];
+      strcpy(this->longDescription, longDescription);
+    }
+  else
+    this->longDescription = NULL;
+}
+
+/**
+   \brief Sets the saveable-state of the option.
+   \param isSaveable the saveable-state to set.
+*/
+void Option::saveability(bool isSaveable)
+{
+  this->saveable = isSaveable;
+}
+
+/**
+   \brief saves an Option
+   \returns the String that should be saved. (this string __should__ be deleted)
+
+   this is a default Option save
+*/
+char* Option::save(void)
+{
+  char* value = new char [30];
+  sprintf (value, "%d", this->value);
+  return value;
+}
+
+/**
+   \brief loads an Option from of its loadString
+   \param loadString the string from which to load the data from
+*/
+void Option::load(char* loadString)
+{
+  this->value = atoi(loadString);
+  PRINT(5)("Loading %s: %s %d\n", this->title, loadString, value); 
+  this->redraw();
+}
+
+/**
+   \returns The saveable-state.
+*/
+bool Option::isSaveable(void)
+{
+  return this->saveable;
+}
+
+#ifdef HAVE_GTK2
+/** 
+    \brief Signal OptionChange writes the Value from the Slider to its Object-Database.
+    \param widget The widget(Slider) that has a changed Value
+    \param slider the Slider-Object that should receive the change.
+*/
+gint Option::OptionChange(GtkWidget *widget, Widget* option)
+{
+  static_cast<Option*>(option)->changeOption();
+  flags->setTextFromFlags(Window::mainWindow);  //// must be different !!!
+}
+#endif /* HAVE_GTK2 */
+
+////////////
+/* BUTTON */
+////////////
+/**
+   \brief Creates a new Button with a buttonname
+   \param buttonName sets the Name of the Button
+*/
+Button::Button(const char* buttonName)
+{
+  this->optionType = GUI_NOTHING;
+
+#ifdef HAVE_GTK2
+  widget = gtk_button_new_with_label("");
+#endif /* HAVE_GTK2 */
+
+  if (buttonName)
+    this->setTitle(buttonName);
+}
+
+/**
+   \brief destructs a Button.
+*/
+Button::~Button(void)
+{
+  PRINTF(5)("deleting the Label: %s\n", this->title);
+}
+
+/**
+   \brief Sets a new name to the Button
+   \param title The name the Button should get
+*/
+void Button::setTitle(const char *title)
+{
+  if (this->title)
+    delete []this->title;
+  this->title = new char[strlen(title)+1];
+  strcpy(this->title, title);
+#ifdef HAVE_GTK2
+  gtk_button_set_label(GTK_BUTTON(widget), title);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief redraws the Button
+   \todo not implemented yet
+*/
+void Button::redraw(void)
+{
+}
+
+/**
+   \brief Button can not be changed, optionChange is empty)
+
+   \todo Actions for non-GTK-mode
+*/
+void Button::changeOption(void)
+{
+  // This will possibly be used for ACTIONS !
+}
+
+/////////////////
+/* CHECKBUTTON */
+/////////////////
+/**
+   \brief Creates a new CheckButton with an ame 
+   \param buttonName The name the CheckButton should display.
+*/
+CheckButton::CheckButton(const char* buttonName)
+{
+  this->optionType = GUI_BOOL;
+
+#ifdef HAVE_GTK2
+  this->widget = gtk_check_button_new_with_label("");
+#endif /* HAVE_GTK2 */
+
+  if (buttonName)
+    this->setTitle(buttonName);
+
+#ifdef HAVE_GTK2
+  this->connectSignal("clicked", this->OptionChange);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief destructs a CheckButton.
+*/
+CheckButton::~CheckButton(void)
+{
+  if (this->title)
+    PRINTF(5)("deleting the CheckButton: %s\n", this->title);
+  else 
+    PRINTF(5)("deleting the CheckButton.\n");
+}
+
+/**
+   \brief Sets a new Title to a CheckButton
+   \param title The new Name the CheckButton should display.
+*/
+void CheckButton::setTitle(const char* title)
+{
+  if (this->title)
+    delete []this->title;
+  this->title = new char[strlen(title)+1];
+  strcpy(this->title, title);
+#ifdef HAVE_GTK2
+  gtk_button_set_label(GTK_BUTTON(widget), title);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \returns the Active state of the checkButton
+*/
+bool CheckButton::isActive(void)
+{
+#ifdef HAVE_GTK2
+  return gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief Changed the Option, call this Function
+*/
+void CheckButton::changeOption(void)
+{
+#ifdef HAVE_GTK2
+  this->value =(int)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(this->widget));
+#else /* HAVE_GTK2 */
+  char tmpChar[200];
+  PRINT(0)("\nPlease give me a new value for %s [0,1](default:%d): ",this->title, this->defaultValue);
+  scanf("%s", tmpChar);
+
+  if ((this->value = atoi(tmpChar))=!0)
+    this->value = 1;
+
+  PRINT(0)("%s set to: %d\n", this->title, this->value);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief Redraws the CheckButton(if option has changed).
+   Example: if new settings are loaded the Button must be redrawn for the GUI to display that Change
+*/
+void CheckButton::redraw(void)
+{
+#ifdef HAVE_GTK2
+  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(this->widget), value);
+#endif /* HAVE_GTK2 */
+}
+
+////////////
+/* SLIDER */
+////////////
+/**
+   \brief Creates a new Slider
+   \param slidername The data-structure-name of the slider.
+   \param start The minimal Value of the slider.
+   \param end The maximal Value of the slider.
+*/
+Slider::Slider(const char* slidername, int start, int end)
+{
+  this->optionType = GUI_INT;
+
+  this->start = start;
+  this->end = end;
+#ifdef HAVE_GTK2
+ widget = gtk_hscale_new_with_range(this->start, this->end, 5);
+#endif /* HAVE_GTK2 */
+
+  this->setValue(start);
+  this->setTitle(slidername);
+#ifdef HAVE_GTK2
+  this->connectSignal("value_changed", this->OptionChange);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief destructs a Slider.
+*/
+Slider::~Slider(void)
+{
+  PRINTF(5)("deleting the Slider: %s\n", this->title);
+}
+
+/**
+   \brief Setting a new value to the Slider.
+   Maybe you also require a Slider::redraw() for this to display
+*/
+void Slider::setValue(int value)
+{
+  this->value = value;
+}
+
+/**
+   \brief Redraws the widget
+   Example: see void CheckButton::redraw(void)
+*/
+void Slider::redraw(void)
+{
+#ifdef HAVE_GTK2
+  gtk_range_set_value(GTK_RANGE(this->widget), this->value);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief Changed the Option, call this Function
+*/
+void Slider::changeOption(void)
+{
+#ifdef HAVE_GTK2
+  this->value =(int)gtk_range_get_value(GTK_RANGE(this->widget));
+#else /* HAVE_GTK2 */
+  char tmpChar[20];
+  PRINT(0)("\nPlease give me a new value for %s [%d-%d] (default:%d): ", this->title, this->start, this->end, this->defaultValue);
+  scanf("%s", tmpChar);
+
+  if ((this->value = atoi(tmpChar))> this->end)
+    this->value = this->end;
+  if (this->value <= this->start)
+    this->value = this->start;
+
+  PRINT(0)("%s set to: %d\n",this->title, this->value);
+#endif /* HAVE_GTK2 */
+}
+
+//////////
+/* MENU */
+//////////
+/**
+   \brief constructs a new Menu, without adding any items to it.
+   \param menuName the Name the Menu gets.
+*/
+Menu::Menu(const char* menuName)
+{
+  this->init();
+  this->setTitle(menuName);
+}
+
+/** 
+    \brief Creates a Menu-Item-list out of multiple input.
+    !! Consider, that the last input argument has to be "lastItem" for this to work!!
+    \param menuname The Database-Name of this Menu
+    \param ... items to be added to this Menu. !! Consider, that the last input argument has to be "lastItem" for this to work!!
+*/
+Menu::Menu(char* menuname, ...)
+{
+  this->init();
+  this->setTitle(menuname);
+  va_list itemlist;                     //!< The list to readin multiple Options.
+
+  char *itemName;
+
+  va_start(itemlist, menuname);
+  while(strcmp(itemName = va_arg(itemlist, char*), "lastItem"))
+    {
+      this->addItem(itemName);
+    }
+  va_end(itemlist);
+}
+
+/**
+   \brief destructs a Menu.
+*/
+Menu::~Menu(void)
+{
+  PRINTF(5)("deleting the Menu: %s\n", this->title);
+  this->currItem = this->firstItem;
+  while(this->currItem)
+    {
+      delete []this->currItem->name;
+      //! \todo destroy menu
+      /*
+	#ifdef HAVE_GTK2
+	gtk_widget_destroy(this->currItem->item);
+	#endif /* HAVE_GTK2 */
+      MenuItem* tmpItem = this->currItem;
+      this->currItem = this->currItem->next;
+      delete tmpItem;
+    }
+}
+
+/**
+   \brief Initializes a new Menu with no items
+*/
+void Menu::init(void)
+{
+  this->optionType = GUI_INT;
+  this->firstItem = NULL;
+
+#ifdef HAVE_GTK2
+  this->widget = gtk_option_menu_new();
+  this->menu = gtk_menu_new();
+  gtk_option_menu_set_menu(GTK_OPTION_MENU(this->widget), menu);
+  this->connectSignal("changed", this->OptionChange);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief saves the Label of the Menu
+   \returns the name of the selected Menu-Item
+*/
+char* Menu::save(void)
+{
+  MenuItem* tmpItem = this->firstItem;
+  for (int i = 0; i<this->value; i++)
+    tmpItem = tmpItem->next;
+      
+  return tmpItem->name;
+}
+
+/**
+   \brief loads a Menu from of its loadString
+   \param loadString the string from which to load the data from
+*/
+void Menu::load(char* loadString)
+{
+  MenuItem* tmpItem = firstItem;
+  bool foundItem = false;
+  while (tmpItem)
+    {
+      if (!strcmp(loadString, tmpItem->name))
+	{foundItem = true; break;}
+      tmpItem = tmpItem->next;
+    }
+  if (foundItem)
+    this->value = tmpItem->itemNumber;
+  else
+    {
+      this->value = 0;
+      PRINTF(2)("%s has not been found in the Itemlist of %s\n", loadString, this->title);
+    }
+  PRINTF(5)( "Loading %s: setting to %d\n", this->title, this->value); 
+  this->redraw();
+}
+
+/**
+   \brief appends a new Item to the Menu-List.
+   \param itemName the itemName to be appendet.
+*/
+void Menu::addItem(char* itemName)
+{
+  if (!this->firstItem)
+    {
+      this->firstItem = this->currItem = new MenuItem;
+      this->currItem->itemNumber = 0;
+    }
+  else
+    {
+      int tmpI = this->currItem->itemNumber;
+      this->currItem = this->currItem->next = new MenuItem;
+      this->currItem->itemNumber = tmpI+1;
+    }
+
+  this->currItem->name = new char[strlen(itemName)+1];
+  strcpy(this->currItem->name, itemName);
+
+#ifdef HAVE_GTK2
+  this->currItem->item = gtk_menu_item_new_with_label(itemName);
+  gtk_menu_shell_append(GTK_MENU_SHELL(this->menu), this->currItem->item);
+#endif /* HAVE_GTK2 */
+  this->currItem->next = NULL;
+}
+
+/**
+   \brief Redraws the widget
+   Example: see void CheckButton::redraw(void)
+*/
+void Menu::redraw(void)
+{
+#ifdef HAVE_GTK2
+  gtk_option_menu_set_history(GTK_OPTION_MENU(this->widget), this->value);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief Changed the Option, call this Function
+*/
+void Menu::changeOption(void)
+{
+#ifdef HAVE_GTK2
+  this->value =(int)gtk_option_menu_get_history(GTK_OPTION_MENU(this->widget));
+#else /* HAVE_GTK2 */
+  char tmpChar[20];
+  PRINT(0)("\nPlease give me a new value for %s (default: %d): ", this->title, this->defaultValue);
+  scanf("%s",tmpChar);
+  this->value = atoi(tmpChar);
+
+#endif /* HAVE_GTK2 */
+  PRINT(5)("%s set to: %d\n", this->title, this->value);
+}
+
+/* OPTION LABEL */
+
+/**
+   \brief Creates a new OptionLabel with a LabelName and a Value.
+   \param label The name of the OptionLabel.
+   \param value The Value of the OptionLabel(what will be displayed).
+*/
+OptionLabel::OptionLabel(const char* label, const char* value)
+{
+  this->optionType = GUI_CHAR_ARRAY;
+  cValue = NULL;
+
+#ifdef HAVE_GTK2
+  this->widget = gtk_label_new("");
+#endif /* HAVE_GTK2 */
+
+  this->setTitle(label);
+  this->setValue(value);
+}
+
+/**
+   \brief destructs an OptionLabel.
+*/
+OptionLabel::~OptionLabel(void)
+{
+  PRINTF(5)("deleting the OptionLabel: %s\n", this->title);
+  if (this->cValue)
+    delete []this->cValue;
+}
+
+/**
+   \brief Updates the value of an OptionLabel
+   \param newValue The new Name that should be displayed.
+*/
+void OptionLabel::setValue(const char* newValue)
+{
+  if (this->cValue)
+    delete []this->cValue;
+  this->cValue = new char [strlen(newValue)+1];
+  strcpy(this->cValue, newValue);
+
+  this->redraw();
+}
+
+/**
+   \brief Redraws an OptionLabel(not implemented yet, but it works).
+*/
+void OptionLabel::redraw(void)
+{
+#ifdef HAVE_GTK2
+  gtk_label_set_text(GTK_LABEL(widget), cValue);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief Changed the Option, call this Function
+*/
+void OptionLabel::changeOption(void)
+{
+#ifdef HAVE_GTK2
+  this->cValue = (char*)gtk_label_get_text(GTK_LABEL(this->widget));
+#else /* HAVE_GTK2 */
+  PRINT(0)("\nPlease give me a new input for %s: ", this->title);
+  char tmpChar[100];
+  scanf("%s",tmpChar);
+  this->setValue(tmpChar);
+#endif /* HAVE_GTK2 */
+  PRINT(4)("%s set to: %s\n", this->title,  this->cValue);
+}
+
+
+/**
+   \brief creates the Optionlabel save-string
+   \returns the String to save.
+*/
+char* OptionLabel::save(void)
+{
+  return cValue;
+}
+
+/**
+   \brief loads an Option from of its loadString
+   \param loadString the string from which to load the data from
+*/
+void OptionLabel::load(char* loadString)
+{
+  PRINTF(5)("Loading %s: setting to %s\n", this->title, loadString); 
+  this->setValue(loadString);
+}
+
+///////////
+/* LABEL */
+///////////
+/**
+   \brief Creates a new Label with a Text.
+   \param text The text to be displayed.
+*/
+Label:: Label(const char* text)
+{
+  this->optionType = GUI_NOTHING;
+  
+#ifdef HAVE_GTK2
+  this->widget = gtk_label_new("");
+  gtk_label_set_line_wrap(GTK_LABEL(this->widget), TRUE);
+#endif /* HAVE_GTK2 */
+  
+  if (text)
+    this->setTitle(text);
+}
+
+/**
+   \brief destructs a Label.
+*/
+Label::~Label(void)
+{
+  PRINTF(5)("deleting the Label: %s\n", this->title);
+}
+
+/**
+   \brief Sets a new Text to a Label.
+   \param text The text to be inserted into the Label.
+*/
+void Label::setTitle(const char* text)
+{
+  if (this->title)
+    delete []this->title;
+  this->title = new char[strlen(text)+1];
+  strcpy(this->title, text);
+#ifdef HAVE_GTK2
+  gtk_label_set_text(GTK_LABEL(this->widget), this->title);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief ereases the Text of a Label
+*/
+void Label::ereaseText(void)
+{
+  this->setTitle("");
+}
+
+/** 
+    \brief appends some Text to a Label
+    \param textToAppend The text that will be appended to this Label
+*/
+void Label::appendText(char* textToAppend)
+{
+  if (this->title)
+    {
+      char* tmpTitle = new char[strlen(this->title)+strlen(textToAppend)+1];
+      strcpy(tmpTitle, title);  
+      strcat(tmpTitle, textToAppend);
+      delete []this->title;
+      this->title = tmpTitle;
+    }
+  else
+    this->title = new char[strlen(textToAppend)];
+  
+#ifdef HAVE_GTK2
+  gtk_label_set_text(GTK_LABEL(this->widget), title);
+#endif /* HAVE_GTK2 */
+}
+
+/** 
+    \brief Appends some integer to the Label
+    \param intToAppend The Int that will be added.
+    
+    it does this by just converting the int into a char* and send it to appendText
+*/
+void Label::appendInt(int intToAppend)
+{
+  char append [32];
+  sprintf(append, "%d", intToAppend);
+  this->appendText(append);
+}
+
+
+/**
+   \brief get the Text of a Label
+   \return The Text the Label holds.
+*/
+const char* Label::getText(void)
+{
+  return this->title;
+}
+
+//////////////////
+/* PROGRESS-BAR */
+//////////////////
+/**
+   \brief Creates a new ProgressBar.
+   \param label The name you want to get the ProgressBar.
+*/
+ProgressBar::ProgressBar(const char* label)
+{
+  this->optionType = GUI_NOTHING;
+  this->progress = 0.0;
+  this->totalSize = 0.0;
+
+#ifdef HAVE_GTK2
+  this->adjustment =(GtkAdjustment*)gtk_adjustment_new(0, 0, 100, 0, 0, 0);
+  this->widget = gtk_progress_bar_new_with_adjustment(this->adjustment);
+#endif /* HAVE_GTK2 */
+
+  if (label)
+    this->setTitle(label);
+}
+
+/**
+   \brief destructs a ProgressBar
+*/
+ProgressBar::~ProgressBar(void)
+{
+  PRINTF(5)("deleting the ProgressBar: %s\n", this->title);
+}
+
+/**
+   \brief Sets the Total size of the Bar.(ex. The maximum one can download)
+*/
+void ProgressBar::setTotalSize(double totalSize)
+{
+  this->totalSize = totalSize;
+}
+
+/**
+   \brief Sets the progress maximum is this->totalSize
+*/
+void ProgressBar::setProgress(double progress)
+{
+  this->progress = progress;
+
+  if (this->progress > this->totalSize)
+    this->progress = this->totalSize;
+
+#ifdef HAVE_GTK2
+  gtk_progress_set_value(GTK_PROGRESS(widget), this->progress*100.0/this->totalSize);
+  PRINTF(5)("Progress: %f%%\n", this->progress*100.0/this->totalSize);
+#else /* HVE_GTK2 */
+  PRINT(0)("Progress: %f%%\n", this->progress*100.0/this->totalSize);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+    \brief returns the Progress Status
+*/
+double ProgressBar::getProgress(void)
+{
+  return this->progress;
+}
+
+///////////
+/* IMAGE */
+///////////
+/**
+   \brief Creates a new Image
+   \param imageName the location of the Image on the Hard Disc
+*/
+Image::Image(const char* imageName)
+{
+  this->init(imageName);
+
+#ifdef HAVE_GTK2
+  widget = gtk_image_new_from_file(imageName);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief Creates a new Image
+   \param imageData data to the PixBuff
+*/
+Image::Image(char** imageData)
+{
+  this->init("pixBuffImage");
+
+#ifdef HAVE_GTK2
+  widget = gtk_image_new_from_pixbuf(gdk_pixbuf_new_from_xpm_data((const char**)imageData));
+#endif /* HAVE_GTK2 */
+}
+
+
+/**
+   \brief destructs an Image.
+*/
+Image::~Image(void)
+{
+  PRINTF(5)("deleting the Image: %s\n", this->title);
+}
+
+/** 
+    \brief Initializes a new Image
+    \param name the name to set to the Image
+*/
+void Image::init(const char* name)
+{
+  optionType = GUI_NOTHING;
+
+  if (this->title)
+    delete []this->title;
+  this->title = new char[strlen(name)+1];
+  strcpy(this->title, name);
+}
+
+
+/////////////////
+/* FILE DIALOG */
+/////////////////
+/**
+   \brief Creates a new FileDialog
+   \param fileDialogName a Name for the Dialog
+*/
+FileDialog::FileDialog(const char* fileDialogName)
+{
+  this->optionType = GUI_NOTHING;
+  this->isOpen = false;
+  this->changeOption = NULL;
+  this->openUpButton = NULL;
+  this->okObject = NULL;
+  this->okFunc = NULL;
+
+#ifdef HAVE_GTK2
+  this->widget = gtk_file_selection_new(fileDialogName);
+
+  gtk_file_selection_set_select_multiple(GTK_FILE_SELECTION (this->widget), FALSE);
+
+  g_signal_connect(GTK_FILE_SELECTION (this->widget)->cancel_button,
+                     "button_release_event",
+                     G_CALLBACK (FileDialog::dialogClose),
+                     this);
+  g_signal_connect(GTK_FILE_SELECTION (this->widget),
+                     "delete_event",
+                     G_CALLBACK (FileDialog::dialogClose),
+                     this);
+  g_signal_connect(GTK_FILE_SELECTION (this->widget)->ok_button,
+                     "button_release_event",
+                     G_CALLBACK (FileDialog::dialogOK),
+                     this);
+#endif /* HAVE_GTK2 */
+  if (fileDialogName)
+    this->setTitle(fileDialogName);
+}
+
+/**
+   \brief destructs a FileDialog
+*/
+FileDialog::~FileDialog(void)
+{
+  PRINTF(5)("deleting FileDialog %s\n", this->title);
+}
+
+void FileDialog::setChangeOption(OptionLabel* changeOption)
+{
+  this->changeOption = changeOption;
+}
+
+void FileDialog::setOKFunc(void* okObject, bool(*function)(const char* , void*))
+{
+  this->okObject = okObject;
+  this->okFunc = function;
+}
+
+
+void FileDialog::setOpenUpButton(Button* openUpButton)
+{
+  this->openUpButton = openUpButton;
+
+  openUpButton->connectSignal("button_release_event", this, FileDialog::dialogOpen);
+}
+
+
+void FileDialog::setDefaultFileName(const char* defaultFileName)
+{
+#ifdef HAVE_GTK2
+  gtk_file_selection_set_filename (GTK_FILE_SELECTION(this->widget), defaultFileName);
+#endif /* HAVE_GTK2 */
+}
+
+void FileDialog::setMask(const char* mask)
+{
+#ifdef HAVE_GTK2
+  gtk_file_selection_complete(GTK_FILE_SELECTION(this->widget), mask);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief disables the File Operator Buttons
+*/
+void FileDialog::disableFileOpts(void)
+{
+#ifdef HAVE_GTK2
+  gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(this->widget));
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \brief The ok-button has been pressed
+*/
+void FileDialog::okEvent(void)
+{
+  if (this->okFunc)
+    {
+#ifdef HAVE_GTK2
+      if(this->okFunc((const char*)gtk_file_selection_get_filename(GTK_FILE_SELECTION(this->widget)), this->okObject))
+	 this->close();
+#endif /* HAVE_GTK2 */
+    }
+  else if (this->changeOption)
+    {
+#ifdef HAVE_GTK2
+      changeOption->setValue(gtk_file_selection_get_filename(GTK_FILE_SELECTION(this->widget)));
+#endif /* HAVE_GTK2 */
+      this->close();
+    }
+  else
+    this->close();
+}
+
+/**
+   \biref opens up the FileDialog-Window
+*/
+void FileDialog::open(void)
+{
+  isOpen = true;
+#ifdef HAVE_GTK2
+  gtk_widget_show_all(this->widget);
+  gtk_grab_add(this->widget);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \closes the FileDialog-Window
+*/
+void FileDialog::close(void)
+{
+  this->isOpen = false;
+#ifdef HAVE_GTK2
+  gtk_grab_remove(this->widget);
+  gtk_widget_hide(this->widget);
+#endif /* HAVE_GTK2 */
+}
+
+#ifdef HAVE_GTK2
+gint FileDialog::dialogOK(GtkWidget* widget, GdkEvent* event, void* dialog)
+{
+  static_cast<FileDialog*>(dialog)->okEvent();
+}
+#else /* HAVE_GTK2 */
+int FileDialog::dialogOK(void* widget, void* event, void* dialog){}
+#endif /* HAVE_GTK2 */
+
+#ifdef HAVE_GTK2
+gint FileDialog::dialogOpen(GtkWidget* widget, GdkEvent* event, void* dialog)
+{
+  static_cast<FileDialog*>(dialog)->open();
+}
+#else /* HAVE_GTK2 */
+int FileDialog::dialogOpen(void* widget, void* event, void* dialog){}
+#endif /* HAVE_GTK2 */
+
+#ifdef HAVE_GTK2
+gint FileDialog::dialogClose(GtkWidget* widget, GdkEvent* event, void* dialog)
+{
+  static_cast<FileDialog*>(dialog)->close();
+}
+#else /* HAVE_GTK2 */
+int FileDialog::dialogClose(void* widget, void* event, void* dialog){}
+#endif /* HAVE_GTK2 */
Index: /orxonox/branches/movie_player/src/lib/gui/gui/gui_gtk.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/gui_gtk.h	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/gui_gtk.h	(revision 4217)
@@ -0,0 +1,461 @@
+/*!
+ \file gui_gtk.h
+ \brief Contains all th different Widgets.
+*/
+#ifndef _GUI_GTK_H
+#define _GUI_GTK_H
+
+#if HAVE_CONFIG_H 
+#include <config.h> 
+#endif
+
+#include "debug.h"
+#include "globals.h"
+
+#ifdef HAVE_GTK2
+#include <gtk/gtkmain.h>
+#include <gtk/gtkwindow.h>
+#include <gtk/gtkframe.h>
+#include <gtk/gtkhbox.h>
+#include <gtk/gtkvbox.h>
+#include <gtk/gtkbutton.h>
+#include <gtk/gtkcheckbutton.h>
+#include <gtk/gtkhscale.h>
+#include <gtk/gtkoptionmenu.h>
+#include <gtk/gtkmenu.h>
+#include <gtk/gtkmenuitem.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtkimage.h>
+#include <gtk/gtkeventbox.h>
+#include <gtk/gtkprogressbar.h>
+#include <gtk/gtkfilesel.h>
+#endif /* HAVE_GTK2 */
+
+// enumerator for different GuiOption-Types
+enum GUI_OPTION {GUI_BOX = -2,
+		 GUI_CONTAINER = -1,
+		 GUI_NOTHING = 0,
+		 GUI_BOOL = 1,
+		 GUI_INT = 2,
+		 GUI_FLOAT = 3,
+		 GUI_CHAR = 4,
+		 GUI_CHAR_ARRAY = 5};
+
+extern char* executable;
+
+bool initGUI(int argc, char* argv[]);
+bool mainloopGUI(void);
+
+//! This is the topmost object that can be displayed all others are derived from it.
+class Widget
+{
+ private:
+
+ public:
+  Widget(void);
+  virtual ~Widget(void);
+
+  void show(void);
+  void hide(void);
+  void setSize(int width, int height);
+
+  virtual void setTitle(const char* title);  //!< An abstract Function, that sets the title of Widgets.
+
+  Widget* findWidgetByName(char* name, unsigned int depth);
+  void walkThrough(void(*function)(Widget*), unsigned int depth);
+  void walkThrough(void(*function)(Widget*, void*), void* data, unsigned int depth);
+   static void listOptionsAndGroups(Widget* widget);
+   static void listOptions(Widget* widget);
+   static void listOptions(Widget* widget, void* data);
+   Widget* findOptionByNumber(int* number, unsigned int depth);
+   static void listGroups(Widget* widget);
+   static void listGroups(Widget* widget, void* data);
+   static void printHelp(Widget* widget);
+   Widget* findGroupByNumber(int* number, unsigned int depth);
+   static void setOptions(Widget* widget);
+   static void redrawOptions(Widget* widget);
+   static void flagCheck(Widget* widget, void* flagName);
+  
+#ifdef HAVE_GTK2
+  // Connection - Functions
+  gulong connectSignal(char* event, gint(*signal)(GtkWidget*, GdkEvent*, void* ));
+  gulong connectSignal(char* event, gint(*signal)(GtkWidget*, Widget* ));
+  gulong connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, GdkEvent*, void* ));
+  gulong connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, void* ));
+  gulong connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, GdkEventKey*, void* ));
+  void disconnectSignal(gulong signalID);
+  // Signals
+  static gint doNothingSignal(GtkWidget* widget, GdkEvent* event, void* nothing);
+#else /* HAVE_GTK2 */
+  // Connection - Functions
+  unsigned long connectSignal(char* event, int(*signal)(void*, void*, void* )){};
+  unsigned long connectSignal(char* event, int(*signal)(void*, Widget* )){};
+  unsigned long connectSignal(char* event, void* extObj, int(*signal)(void*, void*, void* )){};
+  unsigned long connectSignal(char* event, void* extObj, int(*signal)(void*, void* )){};
+  void disconnectSignal(unsigned long signalID);
+  // Signals
+  static int doNothingSignal(void* widget, void* event, void* nothing);
+#endif /* HAVE_GTK2 */
+
+
+  Widget* next;                     //!< next always points to the next Widget in the list. Every Widget has a next one, or has NULL as next
+#ifdef HAVE_GTK2
+  GtkWidget* widget;                //!< widget is the gtk_widget that the specific Object Contains.
+#else /* HAVE_GTK2 */
+  void* widget;
+#endif /* HAVE_GTK2 */
+
+  GUI_OPTION optionType;            //!< The Type of the Widget.
+  char* title;                      //!< The name of the Widget. Some do display it, Options need it to save;
+};
+
+//! This is a Packer Object, which has the ability to Pack other Widgets into itself.
+class Packer : public Widget
+{
+ public:
+  Packer(void);
+  virtual ~Packer(void);
+
+  Widget* down;                      //!< this points to the Widget below this.
+  char* groupName;                   //!< For each Packer you can specify a Groupname under which the lowerWidgets will be saved.
+
+  void setGroupName(const char* name);
+  /** \returns the GroupName if existent NULL otherwise */
+  inline const char* getGroupName(void) const {return this->groupName;}
+
+
+  virtual void fill(Widget* lowerWidget) = 0; //!< An abstract function, that fills Packers.
+};
+
+//! This is a Container Class, it can contain one sub-Widget: down.
+/**
+ * A Container is a Widget that can hold a subWidget in addition to a next-Widget.
+ * The Container can by itself not be displayed created or used.
+ * The derived classes of Container can be displayed
+*/
+class Container : public Packer
+{
+ private:
+  int borderwidth;          //!< The width of The Container Boarder.
+  int policy;               //!< The Update Policy of a Container.
+  
+ public:
+  Container(void);
+  virtual ~Container(void);
+
+  void setBorderWidth(int borderwidth);
+  void fill(Widget* lowerWidget);
+};
+
+//! Window is the class that creates new Windows, and handels them
+/**
+ * A Window is a class derived from Container that contains a window-widget.
+ * It has the ability to hold one sub-object
+ */
+class Window : public Container
+{
+ private:
+  bool isOpen;                      //!< A bool Variable that checks if a Window is already open.
+ public:
+  static Window* mainWindow;        //!< Pointer to the First Window that was opened. By default this should be the GUI's main-Window.
+  static void addWindow(Window* windowToAdd);
+
+  Window(const char* windowName = NULL);
+  virtual ~Window(void);
+  
+  virtual void setTitle(const char* title);
+  void showall(void);
+  void open(void);
+  void close(void);
+
+#ifdef HAVE_GTK2
+  // Signals
+  static gint windowOpen(GtkWidget* widget, GdkEvent* event, void* window);
+  static gint windowClose(GtkWidget* widget, GdkEvent* event, void* window);
+#else /* HAVE_GTK2 */
+  int Window::windowOpen(void* widget, void* event, void* window);
+  int Window::windowClose(void* widget, void* event, void* window);
+#endif /* HAVE_GTK2 */
+};
+
+//! Frame is the class that handles frames
+/**
+ * A Frame is an object, that has a border and if you like a name on it.
+ * It can contain a Widget, which means that you can insert anything you like inside of a frame
+ */
+class Frame :public Container
+{
+ public:
+  Frame(const char* frameName = NULL);
+  virtual ~Frame(void);
+
+  virtual void setTitle(const char* title);
+};
+
+//! EventBox is a Container that can Handle all Events happening inside of it.
+/**
+ * Example: if you have a picture, and you want it to catch mouse-clicks, you have to pack it inside a EventBox
+ */
+class EventBox : public Container
+{
+ public:
+  EventBox(const char* eventBoxName = NULL);
+  virtual ~EventBox(void);
+};
+
+//! A Box can contain multiple Widgets
+/**
+   A Box can Contain multiple Widgets, that are ordered either horizontally or vertically
+   I defined the standartbox to be horizontally.
+   A Box is always filled left->right(horizontally) or up->down(vertically)
+*/
+class Box : public Packer
+{
+ public:
+  Box(char boxtype = 'h');
+  virtual ~Box(void);
+  
+  virtual void fill(Widget* lowerWidget);
+};
+
+//! An Option is a Widget that contains something that may change its state.
+/**
+ * Options are the essence of a GUI, they: Configure, Start, Quit, Execute, and make it worth something
+ */
+class Option : public Widget
+{
+ protected:
+  bool saveable;              //!< Options can be Saved.
+  
+ public:
+  Option(void);
+  virtual ~Option(void);
+
+  int value;                  //!< every option has a value either true or false(0,1) or something else like 25 for 25% of the volume
+  char* flagName;             //!< options have a flag name that will be appendet if you start the Program from the GUI.
+  char* flagNameShort;        //!< like flag_name but shorter
+  int defaultValue;           //!< A default value is good, for hiding a option if it is not needed.(hidden if value == default_value)
+
+  char* shortDescription;      //!< A Text that describes this option in short
+  char* longDescription;      //!< A Longer Text describing this option in a full way
+
+  void saveability(bool isSaveable = true);
+  virtual char* save(void);
+  virtual void load(char* loadString);
+
+  bool isSaveable(void);
+  void setDefaultValue(int defaultValue);
+  void setFlagName(const char* flagname, int defaultvalue);
+  void setFlagName(const char* flagname, const char* flagnameshort, int defaultvalue);
+  void setDescription(const char* shortDescription, const char* longDescription = NULL);
+
+  virtual void redraw(void) = 0;       //!< A Option must be able to redraw itself.
+  virtual void changeOption(void) = 0; //!< What to do, if an Option is Changed. eacht option decides for itself.
+#ifdef HAVE_GTK2
+    // Signals  
+  static gint OptionChange(GtkWidget* widget, Widget* option); //!< Signal for Options that change.
+#endif /* HAVE_GTK2 */
+};
+
+//! Buttons can be pressed, and released.
+/**
+ * Buttons are mainly there for executing some action like Starting the Programm, or Quiting it.
+ */
+class Button : public Option 
+{
+ public:
+  Button(const char* buttonName = NULL);
+  virtual ~Button(void);
+
+  virtual void setTitle(const char* title);
+  virtual void redraw(void);
+  virtual void changeOption(void);
+};
+
+//! CheckButtons are a key in configuring bool Variables
+/** CheckButtons can configure bool Variables like wireframe on/off, enable_sound etc.
+ */
+class CheckButton : public Option
+{
+ public:
+  CheckButton(const char* buttonName = NULL);
+  virtual ~CheckButton(void);
+
+  bool isActive(void);
+
+  virtual void setTitle(const char* title);
+  virtual void redraw(void);
+  virtual void changeOption(void);
+};
+
+//! Sliders are Options that can be modified in their value
+/**
+ * good for volume, brightness, etc.
+ */
+class Slider : public Option
+{
+ private:
+  int start;                            //!< The beginning of the Slider-range.
+  int end;                              //!< The end of the Slider-range.
+ public:
+  Slider(const char* slidername, int start, int end);
+  virtual ~Slider(void);
+
+  void setValue(int value);
+  virtual void redraw(void);
+  virtual void changeOption(void);
+};
+
+//! A Menu is an Option that has a dropdown menu, where you can chose between different Items
+class Menu : public Option
+{
+ private:
+#ifdef HAVE_GTK2
+  GtkWidget* menu;                      //!< The menu That will hold the Options.
+#endif /* HAVE_GTK2 */
+
+  //! A struct to handle the MenuItems
+  struct MenuItem
+  {
+    char* name;                         //!< The name of this entry.
+    int itemNumber;                     //!< The n'th entry of this menu;
+#ifdef HAVE_GTK2
+    GtkWidget* item;                    //!< One Item From a Menu.
+#endif /* HAVE_GTK2 */
+
+    MenuItem* next;                     //!< Pointer to the next MenuItem.
+  };
+  MenuItem* firstItem;                  //!< Pointer to the first Item.
+  MenuItem* currItem;                   //!< Pointer to the current Item.
+  
+ public:
+  Menu(const char* menuName);
+  Menu(char* menuname, ...);
+  virtual ~Menu(void);
+  void init(void);
+
+  virtual char* save(void);
+  virtual void load(char* loadString);
+  
+  void addItem(char* itemName);
+  virtual void redraw(void);
+  virtual void changeOption(void);
+};
+
+//! A OptionLabel is a simple Label, that holds a char*, and will be updated, if changed.
+class OptionLabel : public Option
+{
+ public:
+  OptionLabel(const char* label, const char* value);
+  virtual ~OptionLabel(void);
+  
+  void setValue(const char* newValue);
+
+  virtual char* save(void);
+  virtual void load(char* loadString);
+
+  virtual void redraw(void);
+  virtual void changeOption(void);
+
+  char* cValue;                          //!< The Value the Label will have. \todo make private
+};
+
+//! A EntryField is a TextEntry field, for putting some text into.
+class EntryField : public Option
+{
+ public:
+  EntryField(const char* name = NULL);
+  virtual ~EntryField(void);
+  
+  void setValue(const char* newValue);
+  virtual char* save(void);
+  virtual void load(char* loadString);
+  
+  virtual void redraw(void);
+  virtual void changeOption(void);
+};
+
+//! A label is a Widget, that displays a text
+class Label : public Widget
+{
+ public:
+  Label(const char* text = NULL);
+  virtual ~Label(void);
+  
+  virtual void setTitle(const char* text);
+  void ereaseText(void);
+  void appendText(char* textToAppend);
+  void appendInt(int intToAppend);
+  const char* getText(void);
+};
+
+//! A ProgressBar is a Widget, that can display a Progress
+class ProgressBar : public Widget
+{
+ public:
+  ProgressBar(const char* label = NULL);
+  virtual ~ProgressBar(void);
+
+  void setProgress(double progress);
+  void setTotalSize(double totalSize);
+  double getProgress(void);
+
+ private:
+  double totalSize;         //!< The total Size of a download Bar
+  double progress;          //!< The progress of a Bar.
+#ifdef HAVE_GTK2
+  GtkAdjustment* adjustment;
+#endif /* HAVE_GTK2 */
+};
+
+//! Image is the keeper of one Image 
+/** 
+ * Images are mighty cool.
+ * Images can help you lighten up the Programming process, and will give everyone a better impression of the Software.
+ */
+class Image : public Widget
+{
+ public:
+  Image(const char* imgaeName);
+  Image(char** imageData);
+  virtual ~Image(void);
+  void init(const char* name);
+};
+
+//! A FileDialog is a window with wich one can select a File
+class FileDialog : public Widget
+{
+ private:
+  OptionLabel* changeOption;
+  Button* openUpButton;
+  bool isOpen;
+  bool (*okFunc)(const char* , void*);
+  void* okObject;
+
+ public:
+  FileDialog(const char* fileDialogName);
+  virtual ~FileDialog(void);
+
+  void setChangeOption(OptionLabel* changeOption);
+  void setOKFunc(void* okObject, bool(*function)(const char* , void*));
+  void setOpenUpButton(Button* openUpButton);
+  void setDefaultFileName(const char* defaultFileName);
+  void setMask(const char* mask);
+  void disableFileOpts(void);
+
+  void okEvent();
+  void open();
+  void close();
+
+#ifdef HAVE_GTK2
+  static gint dialogOK(GtkWidget* widget, GdkEvent* event, void* dialog);
+  static gint dialogOpen(GtkWidget* widget, GdkEvent* event, void* dialog);
+  static gint dialogClose(GtkWidget* widget, GdkEvent* event, void* dialog);
+#else /* HAVE_GTK2 */
+  static int dialogOK(void* widget, void* event, void* dialog);
+  static int dialogOpen(void* widget, void* event, void* dialog);
+  static int dialogClose(void* widget, void* event, void* dialog);
+#endif /* HAVE_GTK2 */
+};
+
+#endif /* _GUI_GTK_H */
Index: /orxonox/branches/movie_player/src/lib/gui/gui/gui_keys.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/gui_keys.cc	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/gui_keys.cc	(revision 4217)
@@ -0,0 +1,439 @@
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include "gui_keys.h"
+
+#include <string.h>
+
+/**
+   \brief Creates an Keyboard-Frame
+*/
+GuiKeys::GuiKeys(void)
+{
+  Frame* keysFrame;      //!< The Frame that holds the keyOptions.
+
+  keysFrame = new Frame("Keyboard-Options:");
+  {
+    Box* keysBox0;          //!< The Frame that holds the keyOptions.
+    
+    //  keysFrame->setGroupName("Keyboard");
+    keysBox0 = new Box('v');
+    {
+      Box* keysBox1;
+      MiscKeys* misc;            //!< The Misc Keys
+
+      keysBox1 = new Box('h');
+      {
+	PlayerKeys* player1;       //!< The first Player's keys.
+	PlayerKeys* player2;       //!< The seconds Player's keys.
+	
+	player1 = new PlayerKeys(CONFIG_SECTION_PLAYER "1");
+	player2 = new PlayerKeys(CONFIG_SECTION_PLAYER "2");
+	
+	keysBox1->fill(player1->getOpenButton());
+	keysBox1->fill(player2->getOpenButton());
+      }
+      keysBox0->fill(keysBox1);
+
+      misc = new MiscKeys();
+      keysBox0->fill(misc->getOpenButton());
+    }
+    keysFrame->fill(keysBox0);
+  }
+  
+  // setting up the Input Windows that receives keystrokes.
+  this->inputWindow = new Window("inputWindow");
+  this->inputButton = new Button("test");
+#ifdef HAVE_GTK2
+  this->inputWindow->connectSignal("destroy",  Widget::doNothingSignal);
+  this->inputWindow->connectSignal("delete_event", Widget::doNothingSignal);
+#endif /* HAVE_GTK2 */
+  this->inputWindow->fill(inputButton);
+  
+  this->setMainWidget(keysFrame);
+}
+
+/**
+   \brief Destructs the Keys-stuff
+*/
+GuiKeys::~GuiKeys(void)
+{
+  // nothing to do here.
+}
+
+
+Window* GuiKeys::inputWindow = NULL;
+Button* GuiKeys::inputButton = NULL;
+long GuiKeys::keySignal = 0;
+
+////////////
+/* PLAYER */
+////////////
+/**
+   \brief Creates new inputs for a player
+   \param player the name of the Player
+*/
+PlayerKeys::PlayerKeys(char* player)
+{
+  Window* pKeyWindow;     //!< The Window for a new Key-setting.
+
+  char* windowName = new char[strlen(player)+12];
+  strcpy(windowName, "KeySets: ");
+  strcat(windowName, player);
+  pKeyWindow = new Window(windowName);
+  {
+    Frame* pKeyFrame;       //!< The Frame for a new Key-setting.
+
+    pKeyFrame = new Frame(windowName);
+    {
+      Box* pKeysBox;          //!< The Box that holds the Key-settings.
+      pKeysBox = new Box('v');
+      {
+	Button* closeButton;    //!< The CloseButton for this key-settings.
+
+	pKeysBox->setGroupName(player);
+	pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_UP, "UP"));
+	pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_DOWN, "DOWN"));
+	pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_LEFT, "LEFT"));
+	pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_RIGHT, "RIGHT"));
+	pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_FIRE, "SPACE"));
+	pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_NEXT_WEAPON, "m"));
+	pKeysBox->fill(addKey(CONFIG_NAME_PLAYER_PREV_WEAPON, "n"));
+	closeButton = new Button("close");
+#ifdef HAVE_GTK2
+	closeButton->connectSignal("button_press_event", pKeyWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+
+	pKeysBox->fill(closeButton);
+      }
+      pKeyFrame->fill(pKeysBox);
+    }
+    pKeyWindow->fill(pKeyFrame);
+  }
+  delete windowName;
+  Window::addWindow(pKeyWindow);
+#ifdef HAVE_GTK2
+  pKeyWindow->connectSignal("destroy", pKeyWindow, Window::windowClose);
+  pKeyWindow->connectSignal("delete_event", pKeyWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+  
+  this->openButton = new Button(player);
+#ifdef HAVE_GTK2
+  this->openButton->connectSignal("button_press_event", pKeyWindow, Window::windowOpen);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \returns the OpenButton of a Player
+*/
+Button* PlayerKeys::getOpenButton(void)
+{
+  return this->openButton;
+}
+
+//////////////////
+/* MISC_OPTIONS */
+//////////////////
+/**
+   \brief Creates new inputs for a misc
+   \param player the name of the Misc
+*/
+MiscKeys::MiscKeys()
+{
+  Window* keyWindow;     //!< The Window for a new Key-setting.
+
+  keyWindow = new Window("misc Keys");
+  {
+    Frame* keyFrame;       //!< The Frame for a new Key-setting.
+
+    keyFrame = new Frame("misc Keys:");
+    {
+      Box* keysBox;          //!< The Box that holds the Key-settings.
+      keysBox = new Box('v');
+      {
+	Button* closeButton;    //!< The CloseButton for this key-settings.
+
+	keysBox->setGroupName(CONFIG_SECTION_MISC_KEYS);
+	keysBox->fill(addKey(CONFIG_NAME_QUIT , "ESCAPE"));
+	keysBox->fill(addKey(CONFIG_NAME_PAUSE, "PAUSE"));
+	keysBox->fill(addKey(CONFIG_NAME_NEXT_WORLD, "x"));
+	keysBox->fill(addKey(CONFIG_NAME_PREV_WORLD, "z"));
+	keysBox->fill(addKey(CONFIG_NAME_VIEW0, "1"));
+	keysBox->fill(addKey(CONFIG_NAME_VIEW1, "2"));
+	keysBox->fill(addKey(CONFIG_NAME_VIEW2, "3"));
+	keysBox->fill(addKey(CONFIG_NAME_VIEW3, "4"));
+	keysBox->fill(addKey(CONFIG_NAME_VIEW4, "5"));
+	keysBox->fill(addKey(CONFIG_NAME_VIEW5, "6"));
+
+	closeButton = new Button("close");
+#ifdef HAVE_GTK2
+	closeButton->connectSignal("button_press_event", keyWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+
+	keysBox->fill(closeButton);
+      }
+      keyFrame->fill(keysBox);
+    }
+    keyWindow->fill(keyFrame);
+  }
+  Window::addWindow(keyWindow);
+#ifdef HAVE_GTK2
+  keyWindow->connectSignal("destroy", keyWindow, Window::windowClose);
+  keyWindow->connectSignal("delete_event", keyWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+  
+  this->openButton = new Button("misc");
+#ifdef HAVE_GTK2
+  this->openButton->connectSignal("button_press_event", keyWindow, Window::windowOpen);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \returns the OpenButton of a Misc
+*/
+Button* MiscKeys::getOpenButton(void)
+{
+  return this->openButton;
+}
+
+
+/**
+   \brief adds a new Key.
+   \param key the number of the Key
+   \param name The name of the new Key.
+   \returns A widget that has the Key-Box
+*/
+Widget* addKey(const char* name, const char* defaultVal)
+{
+  InputKey* inputKey = new InputKey;
+  inputKey->keyBox = new Box();
+  inputKey->keyButton = new Button(name);
+  if (defaultVal)
+    inputKey->keyOLabel = new OptionLabel(name, defaultVal);
+  else
+    inputKey->keyOLabel = new OptionLabel(name, name);
+  inputKey->keyOLabel->saveability();
+
+#ifdef HAVE_GTK2
+  //inputKey->keyButton->connectSignal("key_press_event", inputKey->keyButton, key_cb);
+  inputKey->keyButton->connectSignal("button_press_event", inputKey, inputWindowEvent);
+#endif /* HAVE_GTK2 */
+  inputKey->keyBox->fill(inputKey->keyButton);
+  inputKey->keyBox->fill(inputKey->keyOLabel);
+  return inputKey->keyBox;
+}
+
+
+#ifdef HAVE_GTK2
+gint inputWindowEvent(GtkWidget* w, GdkEventKey* event, void* inputKey)
+{
+  GuiKeys::inputButton->setTitle("press a Key");
+  GuiKeys::keySignal = GuiKeys::inputButton->connectSignal("key_press_event", inputKey, key_cb);
+  GuiKeys::inputWindow->open();
+}
+  
+/**
+   \brief Function which gets keystrokes
+   \param w the widget that released the Function.
+   \param event The event that happened.
+   \param Widget the Widget which will be applied.
+   \returns Nothing
+*/
+gint key_cb(GtkWidget* w, GdkEventKey* event, void* inputKey)
+{
+  InputKey* inputkey =(InputKey*) inputKey;
+  char title [50];
+
+  switch(event->keyval)
+    {
+    case GDK_Up:
+      strcpy(title, "UP");
+      break;
+    case GDK_Down:
+      strcpy(title, "DOWN");
+      break;
+    case GDK_Left:
+      strcpy(title, "LEFT");
+      break;
+    case GDK_Right:
+      strcpy(title, "RIGHT");
+      break;
+      
+    case GDK_space:
+      strcpy(title, "SPACE");
+      break;
+      
+    case GDK_Return:
+      strcpy(title, "RETURN");
+      break;
+      
+      // Special Keys //
+    case GDK_BackSpace:
+      strcpy(title, "BACKSPACE");
+      break;
+    case GDK_Scroll_Lock:
+      strcpy(title, "SCROLLOCK");
+      break;
+    case GDK_minus:
+      strcpy(title, "MINUS");
+      break;
+    case GDK_plus:
+      strcpy(title, "PLUS");
+      break;
+    case GDK_slash:
+      strcpy(title, "SLASH");
+      break;
+    case GDK_period:
+      strcpy(title, "PERIOD");
+      break;
+    case GDK_comma:
+      strcpy(title, "COMMA");
+      break;
+    case GDK_colon:
+      strcpy(title, "COLON");
+      break;
+    case GDK_semicolon:
+      strcpy(title, "SEMICOLON");
+      break;
+    case GDK_less:
+      strcpy(title, "LESS");
+      break;
+    case GDK_equal:
+      strcpy(title, "EQUALS");
+      break;
+    case GDK_greater:
+      strcpy(title, "GREATER");
+      break;
+    case GDK_question:
+      strcpy(title, "QUESTION");
+      break;
+    case GDK_at:
+      strcpy(title, "AT");
+      break;
+    case GDK_bracketleft:
+      strcpy(title, "LEFTBRACKET");
+      break;
+    case GDK_bracketright:
+      strcpy(title, "RIGHTBRACKET");
+      break;
+    case GDK_backslash:
+      strcpy(title, "BACKSLASH");
+      break;
+    case GDK_underscore:
+      strcpy(title, "UNDERSCORE");
+      break;
+    case GDK_quoteleft:
+      strcpy(title, "BACKQUOTE");
+      break;
+
+    case GDK_Page_Up:
+      strcpy(title, "PAGEUP");
+      break;
+    case GDK_Page_Down:
+      strcpy(title, "PAGEDOWN");
+      break;
+    case GDK_Home:
+      strcpy(title, "HOME");
+      break;
+    case GDK_Insert:
+      strcpy(title, "INSERT");
+      break;
+      
+    case GDK_Escape:
+      strcpy(title, "ESCAPE");
+      break;
+    case GDK_Tab:
+      strcpy(title, "TAB");
+      break;
+    case GDK_Shift_L:
+      strcpy(title, "LSHIFT");
+      break;
+    case GDK_Shift_R:
+      strcpy(title, "R_SHIFT");
+      break;
+    case GDK_Control_L:
+      strcpy(title, "LCTRL");
+      break;
+    case GDK_Control_R:
+      strcpy(title, "RCTRL");
+      break;
+    case GDK_Alt_L:
+      strcpy(title, "LALT");
+      break;
+    case GDK_Alt_R:
+      strcpy(title, "RALT");
+      break;
+      // FXX KEYS //
+    case GDK_F1:
+      strcpy(title, "F1");
+      break;
+    case GDK_F2:
+      strcpy(title, "F2");
+      break;
+    case GDK_F3:
+      strcpy(title, "F3");
+      break;
+    case GDK_F4:
+      strcpy(title, "F4");
+      break;
+    case GDK_F5:
+      strcpy(title, "F5");
+      break;
+    case GDK_F6:
+      strcpy(title, "F6");
+      break;
+    case GDK_F7:
+      strcpy(title, "F7");
+      break;
+    case GDK_F8:
+      strcpy(title, "F8");
+      break;
+    case GDK_F9:
+      strcpy(title, "F9");
+      break;
+    case GDK_F10:
+      strcpy(title, "F10");
+      break;
+    case GDK_F11:
+      strcpy(title, "F11");
+      break;
+    case GDK_F12:
+      strcpy(title, "F12");
+      break;
+      
+      
+    default:
+      char* tmp;
+      sprintf(tmp, "%c", event->keyval);
+      printf("other key %s \n", tmp);
+      strcpy(title, tmp);
+      break;
+    }
+
+  inputkey->keyOLabel->setValue(title);
+  GuiKeys::inputButton->disconnectSignal(GuiKeys::keySignal);
+  GuiKeys::inputWindow->close();
+}
+#endif /* HAVE_GTK2 */
Index: /orxonox/branches/movie_player/src/lib/gui/gui/gui_keys.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/gui_keys.h	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/gui_keys.h	(revision 4217)
@@ -0,0 +1,67 @@
+/*!
+  \file gui_keys.h
+  \brief File that holds the class that creates the Keyboard-Options.
+*/
+
+#ifndef _GUI_KEYS_H
+#define _GUI_KEYS_H
+
+#include "gui.h"
+#include "gui_element.h"
+#include "gui_gtk.h"
+
+#ifdef HAVE_GTK2
+#include <gdk/gdkkeysyms.h>
+#endif /* HAVE_GTK2 */
+
+//! One KeyOption has one InputKey
+struct InputKey
+{
+  Box* keyBox;           //!< One Box that holds the Keys
+  Button* keyButton;     //!< The Button for changing the Key.
+  OptionLabel* keyOLabel;//!< The Label for displaying the Key-setting.
+};
+
+//! Class that creates the Keys-Options.
+class GuiKeys : public GuiElement
+{
+ public:
+  GuiKeys(void);
+  ~GuiKeys(void);
+
+  static Window* inputWindow; //!< A Window that gets keyboard clicks. Static, because only one needed.
+  static Button* inputButton; //!< A Button that gets keyboard clicks. Static, because only one needed.
+  static long keySignal;      //!< A keySignal that handles keyboard clicks. Static, because only one needed.
+};
+
+//! Class to hold infos about a Player
+class PlayerKeys
+{
+ private:
+  Button* openButton;     //!< The OpenButton for this key-settings.
+
+ public:
+  PlayerKeys(char* player);
+
+  Button* getOpenButton(void);
+};
+
+class MiscKeys
+{
+ private:
+  Button* openButton;     //!< The OpenButton for this key-settings.
+
+ public:
+  MiscKeys();
+
+  Button* getOpenButton(void);  
+};
+
+Widget* addKey(const char* name, const char* defaultValue = NULL);
+#ifdef HAVE_GTK2
+gint inputWindowEvent(GtkWidget* w, GdkEventKey* event, void* widget);
+gint key_cb(GtkWidget* w, GdkEventKey* event, void* inputKey);
+#endif /* HAVE_GTK2 */
+
+
+#endif /* _GUI_KEYS_H */
Index: /orxonox/branches/movie_player/src/lib/gui/gui/gui_main.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/gui_main.cc	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/gui_main.cc	(revision 4217)
@@ -0,0 +1,34 @@
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include "gui.h"
+
+int verbose = 4;
+
+int main(int argc, char *argv[])
+{
+  Gui* orxonoxgui = new Gui(argc, argv);
+  return 0;
+}
Index: /orxonox/branches/movie_player/src/lib/gui/gui/gui_update.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/gui_update.cc	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/gui_update.cc	(revision 4217)
@@ -0,0 +1,500 @@
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+#include "gui_update.h"
+#include <string.h>
+
+#include "gui.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+using namespace std;
+
+/**
+   \brief Creates an Update-Frame
+*/
+GuiUpdate::GuiUpdate(void)
+{
+  FileDialog* dataDirDialog;   //!< A FileDialog for the selection of the DataRepos
+  Button* dataDirButton;       //!< A Button for the selection of the DataRepos
+  OptionLabel* dataDirLabel;   //!< A Label fot the selection of the DataRepos
+  
+
+  this->tmpDir = NULL;
+  this->homeDir = NULL;
+  this->installSourceDir = NULL;
+  this->userName = NULL;
+
+  this->getSystemInfo();
+
+  this->updateFrame = new Frame("Update-Options:");
+  this->updateFrame->setGroupName(CONFIG_SECTION_DATA);
+  this->updateBox = new Box('v');
+
+  dataDirButton = new Button(CONFIG_NAME_DATADIR);
+  dataDirLabel = new OptionLabel(CONFIG_NAME_DATADIR, "unknown");
+  dataDirLabel->setFlagName("data-dir", "d", 0);
+  dataDirLabel->setDescription("Sets the location of the orxonox' Data-Directory");
+  dataDirLabel->saveability();
+  dataDirDialog = new FileDialog("data-Repos-location");
+  dataDirDialog->setDefaultFileName("data");
+  dataDirDialog->setMask(DATA_IDENTIFIER);
+  this->checkDataDir("../data/" DATA_IDENTIFIER, dataDirLabel);
+  dataDirDialog->disableFileOpts();
+  dataDirDialog->setOpenUpButton(dataDirButton);
+  //dataDirDialog->setChangeOption(dataDirLabel);
+  dataDirDialog->setOKFunc(dataDirLabel, GuiUpdate::checkDataDir);
+  updateBox->fill(dataDirButton);
+  updateBox->fill(dataDirLabel);
+
+#ifdef HAVE_CURL
+
+  // the Button for autoUpdating
+  this->autoUpdate = new CheckButton(CONFIG_NAME_AUTO_UPDATE);
+  this->updateBox->fill(this->autoUpdate);
+  this->autoUpdate->setFlagName("update", "u", 0);
+  this->autoUpdate->setDescription("Updates orxonox", "When this option is selected orxonox automatically searches for updates, and if found installs them");
+  this->autoUpdate->saveability();
+
+  
+
+
+  this->updateSourceWindowCreate();
+  this->updateBox->fill(this->updateSourceWindowGetButton());
+
+  this->updateDataWindowCreate();
+  this->updateBox->fill(this->updateDataWindowGetButton());
+
+#else /* HAVE_CURL */
+  Label* noCurlLabel = new Label("since you do not have cURL-support,\nupdate options are not availible");
+  this->updateBox->fill(noCurlLabel);  
+#endif /* HAVE_CURL */
+  this->updateFrame->fill(this->updateBox);
+  this->setMainWidget(this->updateFrame);
+
+
+}
+
+/**
+   \brief Destructs the Update-stuff
+*/
+GuiUpdate::~GuiUpdate(void)
+{
+
+}
+
+/**
+   \brief checks if the Folder containing selected File is data.oxd, and if so sets it.
+   \param 
+*/
+bool GuiUpdate::checkDataDir(const char* fileName, void* object)
+{
+  if (!strcmp(fileName+(strlen(fileName)-strlen(DATA_IDENTIFIER)), DATA_IDENTIFIER))
+    {
+      char* tmpName = new char[strlen(fileName)-strlen(DATA_IDENTIFIER)+1];
+      strncpy(tmpName, fileName, strlen(fileName)-strlen(DATA_IDENTIFIER));
+      tmpName[strlen(fileName)-strlen(DATA_IDENTIFIER)] = '\0'; 
+      static_cast<OptionLabel*>(object)->setValue(tmpName);
+      delete tmpName;
+      return true;
+    }
+  else
+    return false;
+}
+
+
+/** 
+    \brief Look what info we can get from this system
+*/
+bool GuiUpdate::getSystemInfo(void)
+{
+  PRINTF(5)("Grabbing system information\n");
+  this->tmpDir = getenv("TMPDIR");
+  if(!tmpDir)
+    this->tmpDir = "/tmp";
+  PRINTF(5)("Temporary directory is: %s\n", this->tmpDir);
+
+#ifdef __WIN32__
+  this->homeDir = getenv("USERPROFILE");
+#else
+  this->homeDir = getenv("HOME");
+#endif
+  PRINTF(5)("Home directory is %s\n", homeDir);
+
+
+  this->installDataDir = DEFAULT_DATA_DIR;
+  PRINTF(5)("Installation of orxonox-data will go to this directory: %s\n", this->installDataDir);
+
+  this->installSourceDir = "/usr/games/bin";
+  PRINTF(5)("Installation of orxonox-source will go to this directory: %s\n", this->installSourceDir);
+
+  this->userName = getenv("USER");
+  PRINTF(5)("Logged in username is: %s\n", this->userName);
+}
+
+#ifdef HAVE_CURL
+bool* GuiUpdate::checkForUpdates(void)
+{
+  PRINTF(4)("checking for new version of orxonox\n");
+  FileInfo updateFileInfo;
+  updateFileInfo.fileName = "update_info";
+  updateFileInfo.webRoot = "http://www.orxonox.ethz.ch/files/data";
+  updateFileInfo.localRoot = this->tmpDir;
+  
+  download(&updateFileInfo);
+}
+
+/**
+   \brief Creates a window, and all it contains for the Data-update.
+*/
+void GuiUpdate::updateDataWindowCreate(void)
+{
+  this->updateDataWindow = new Window("update orxonox::Data");   
+  this->updateDataBox = new Box('v');
+
+  // the close-Button of the Update Window.
+  //  updateWindowClose = new Button("close");
+#ifdef HAVE_GTK2
+  //  updateWindowClose->connectSignal("button_press_event", updateWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+  //  updateWindowBox->fill(updateWindowClose);
+
+  this->updateDataBar = new ProgressBar();
+  this->updateDataBox->fill(this->updateDataBar);
+
+  FileInfo* dataInfo = new FileInfo;
+  dataInfo->bar = this->updateDataBar;
+
+  this->updateDataBegin = new Button("begin.");
+  dataInfo->stateButton = this->updateDataBegin;
+#ifdef HAVE_GTK2
+  dataInfo->buttonSignal = updateDataBegin->connectSignal("button_press_event", dataInfo, updateDataFunc);
+#endif /* HAVE_GTK2 */
+  this->updateDataBox->fill(this->updateDataBegin);
+
+  this->updateDataWindow->fill(this->updateDataBox);
+
+  this->updateDataWindowButton = new Button("update orxonox::Data");
+#ifdef HAVE_GTK2
+  this->updateDataWindowButton->connectSignal("button_press_event", this->updateDataWindow, Window::windowOpen);
+  this->updateDataWindow->connectSignal("destroy", this->updateDataWindow, Window::windowClose);
+  this->updateDataWindow->connectSignal("delete_event", this->updateDataWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+
+}
+
+/**
+   \returns A Pointer to the Button of the UpdaterDataWindow
+*/
+Button* GuiUpdate::updateDataWindowGetButton(void)
+{
+  return this->updateDataWindowButton;
+}
+
+/**
+   \brief Creates a window, and all it contains for the Source-update.
+*/
+void GuiUpdate::updateSourceWindowCreate(void)
+{
+  // the button, that opens this Window.
+  this->updateSourceWindowButton = new Button("update orxonox::Source");
+
+  // the Window itself
+  this->updateSourceWindow = new Window("update orxonox::Source");
+
+  this->updateSourceBox = new Box();
+
+  this->updateSourceBar = new ProgressBar();
+  this->updateSourceBox->fill(this->updateSourceBar);
+  test = new Button("increment");
+
+#ifdef HAVE_GTK2 
+  test->connectSignal("button_press_event", updateSourceBar, updateSourceFunc);
+#endif /* HAVE_GTK2 */
+
+  this->updateSourceBox->fill(test);
+  this->updateSourceWindow->fill(updateSourceBox); 
+#ifdef HAVE_GTK2 
+  this->updateSourceWindowButton->connectSignal("button_press_event", this->updateSourceWindow, Window::windowOpen);
+  this->updateSourceWindow->connectSignal("destroy", this->updateSourceWindow, Window::windowClose);
+  this->updateSourceWindow->connectSignal("delete_event", this->updateSourceWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+
+}
+
+/**
+   \returns A Pointer to the Button of the UpdaterSourceWindow
+*/
+Button* GuiUpdate::updateSourceWindowGetButton(void)
+{
+  return this->updateSourceWindowButton;
+}
+
+
+#ifdef HAVE_GTK2 
+/**
+   \brief updates the Data of orxonox.
+   \param w The widget, that executed this Function.
+   \param event The event that trigered this Function.
+   \param button The Button, that triggered this event.
+*/
+gint GuiUpdate::updateDataFunc(GtkWidget* w, GdkEventKey* event, void* info)
+{
+  FileInfo* dataInfo =(FileInfo*)info;
+
+  dataInfo->fileName = "02%20orxonox%203.mp3";
+  dataInfo->webRoot  = "http://www.orxonox.ethz.ch/files/";
+  dataInfo->localRoot = "./";
+  PRINTF(4)("Preparing to download file %s.\n", dataInfo->fileName);
+  downloadWithStyle(dataInfo);
+}
+
+/**
+   \brief updates the source of orxonox.
+   \param w The widget, that executed this Function.
+   \param event The event that trigered this Function.
+   \param button The Button, that triggered this event.
+*/
+gint GuiUpdate::updateSourceFunc(GtkWidget* w, GdkEventKey* event, void* bar)
+{
+  ProgressBar* tmpBar = static_cast<ProgressBar*>(bar);
+  tmpBar->setTotalSize(20);
+  tmpBar->setProgress(tmpBar->getProgress()+1);
+}
+#endif /* HAVE_GTK2 */
+
+/**
+   \brief The Function Curl calls to write out the File.
+   \param ptr A Pointer to the date to write.
+   \param size The size in bytes of one nmemb to write.
+   \param nmemb The Count of size to write.
+   \param stream Filehandler to write to.
+*/
+size_t GuiUpdate::curlWriteFunc(void* ptr, size_t size, size_t nmemb, FILE* stream)
+{
+  return fwrite(ptr, size, nmemb, stream);
+}
+
+/**
+   \brief The Function Curl calls to write out the File.
+   \param ptr A Pointer to the date to write to.
+   \param size The size in bytes of one nmemb to write.
+   \param nmemb The Count of size to write.
+   \param stream Filehandler to get data from.
+*/
+size_t GuiUpdate::curlReadFunc(void* ptr, size_t size, size_t nmemb, FILE* stream)
+{
+  return fread(ptr, size, nmemb, stream);
+}
+
+
+/**
+   \brief An update Function for the GUI, to show the progress.
+   \param Bar th ProgressBar to update
+   \param totalSize The total size of the download in bytes.
+   \param progress The current Progress of the download in bytes.
+   \param upTotal not needed
+   \param upProgress not needed
+*/
+int GuiUpdate::curlProgressFunc(ProgressBar* bar, double totalSize, double progress, double upTotal, double upProgress)
+{
+  bar->setProgress(progress);
+  bar->setTotalSize(totalSize);
+#ifdef HAVE_GTK2
+  while(gtk_events_pending()) gtk_main_iteration();
+#endif
+  return 0;
+}
+
+/**
+   \brief The Curl handle for only one CURL(static).
+*/
+CURL* GuiUpdate::curlHandle = NULL;
+
+//! A bool parameter that shows if we are downloading.
+bool GuiUpdate::isDownloading = false;
+
+//! A parameter to see, if downloading has been canceled
+bool GuiUpdate::downloadCanceled = false;
+
+/**
+   \brief Initializes a Download without displaying it.
+   \param fileInfo the FileInfo.
+
+   !! BE AWARE THIS WILL NOT BE THREADED. !!
+*/
+bool GuiUpdate::download(void* fileInfo)
+{
+  if(isDownloading)
+    {
+      PRINTF(2)("unable to Download. already getting some file\n");
+      return false;
+    }
+  PRINTF(4)("Downloading.\n");
+  FileInfo* info =(FileInfo*)fileInfo;
+  CURLcode res;
+  CURL* localCurl;
+  localCurl = curl_easy_init();
+  char* fileOnNet = new char [strlen(info->webRoot)+strlen(info->fileName)+2];
+  strcpy(fileOnNet, info->webRoot);
+  if(fileOnNet[strlen(fileOnNet)] != '/') //!< \todo windows-shit
+    strcat(fileOnNet, "/");
+  strcat(fileOnNet, info->fileName);
+  char* fileOnDisk = new char [strlen(info->localRoot)+strlen(info->fileName)+2];
+  strcpy(fileOnDisk, info->localRoot);
+  if(fileOnDisk[strlen(fileOnDisk)] != '/') //!< \todo windows-shit
+    strcat(fileOnDisk, "/");
+  strcat(fileOnDisk, info->fileName);
+  
+  if(localCurl)
+    {
+      
+      info->fileHandle = fopen(fileOnDisk, "w");
+      
+      curl_easy_setopt(localCurl, CURLOPT_URL, fileOnNet);
+      curl_easy_setopt(localCurl, CURLOPT_WRITEDATA, info->fileHandle);
+      curl_easy_setopt(localCurl, CURLOPT_WRITEFUNCTION, curlWriteFunc);
+      curl_easy_setopt(localCurl, CURLOPT_READFUNCTION, curlReadFunc);
+      curl_easy_setopt(localCurl, CURLOPT_NOPROGRESS, true);
+      
+      curl_easy_perform(localCurl);
+
+      curl_easy_cleanup(localCurl);
+      fclose(info->fileHandle);
+    }
+}
+
+/**
+   \brief Initializes a Download with some style.
+   \param fileInfo the FileInfo.
+   \todo release thread-lock.
+
+   Downloading with a Button that gets a different Name while downloading, and a Bar, that gets to be updated. More to be followed
+*/
+bool GuiUpdate::downloadWithStyle(void* fileInfo)
+{
+  if(isDownloading)
+    {
+      PRINTF(2)("unable to Download. already getting some file\n");
+      return false;
+    }
+  PRINTF(4)("Downloading.\n");
+  FileInfo* info =(FileInfo*)fileInfo;
+  CURLcode res;
+  curlHandle = curl_easy_init();
+  char* fileOnNet = new char [strlen(info->webRoot)+strlen(info->fileName)+1];
+  strcpy(fileOnNet, info->webRoot);
+  strcat(fileOnNet, info->fileName);
+  char* fileOnDisk = new char [strlen(info->localRoot)+strlen(info->fileName)+1];
+  strcpy(fileOnDisk, info->localRoot);
+  strcat(fileOnDisk, info->fileName);
+
+  if(curlHandle)
+    {
+      
+      info->fileHandle = fopen(fileOnDisk, "w");
+      
+      curl_easy_setopt(curlHandle, CURLOPT_URL, fileOnNet);
+      curl_easy_setopt(curlHandle, CURLOPT_WRITEDATA, info->fileHandle);
+      curl_easy_setopt(curlHandle, CURLOPT_WRITEFUNCTION, curlWriteFunc);
+      curl_easy_setopt(curlHandle, CURLOPT_READFUNCTION, curlReadFunc);
+      curl_easy_setopt(curlHandle, CURLOPT_NOPROGRESS, false);
+      curl_easy_setopt(curlHandle, CURLOPT_PROGRESSFUNCTION, curlProgressFunc);
+      curl_easy_setopt(curlHandle, CURLOPT_PROGRESSDATA, info->bar);
+
+      if(!isDownloading)
+	{
+#ifdef HAVE_GTK2 
+	  info->stateButton->disconnectSignal(info->buttonSignal);
+	  info->buttonSignal = info->stateButton->connectSignal("button_press_event", info, cancelDownload);
+#endif /* HAVE_GTK2 */
+	  info->stateButton->setTitle("please wait");
+	  
+	  downloadThread(info);
+	  downloadThreadFinished(info);
+	 
+	  //      res = curl_easy_perform(curlHandle);
+	  
+	  //      fclose(outfile);
+	}
+      else 
+	PRINTF(1)("thread already in use\n");
+
+    }
+  return true;
+}
+
+/**
+   \brief The downloading process(either threaded or not).
+   \param fileInfo the FileInfo.
+
+   \todo Threads get locked, if the cancel button is pressed in to small intervals.
+*/
+void* GuiUpdate::downloadThread(void* fileInfo)
+{
+  isDownloading = true;
+  curl_easy_perform(curlHandle);
+}
+
+/**
+   \brief Finishes a downloading process. 
+   \param fileInfo the FileInfo.
+*/
+void* GuiUpdate::downloadThreadFinished(void* fileInfo)
+{ 
+  FileInfo* info =(FileInfo*)fileInfo;
+  if(curlHandle)
+    curl_easy_cleanup(curlHandle);
+ 
+  PRINTF(4)("Closing the downloaded file.\n");
+  fclose(info->fileHandle);
+
+  if(isDownloading)
+    info->stateButton->setTitle("go on");
+  //  else
+  //    info->stateButton->setTitle("done");
+#ifdef HAVE_GTK2 
+  info->stateButton->disconnectSignal(info->buttonSignal);
+  info->buttonSignal = info->stateButton->connectSignal("button_press_event", info, updateDataFunc);
+#endif /* HAVE_GTK2 */
+  isDownloading = false;
+
+}
+
+#ifdef HAVE_GTK2
+/**
+   \brief canceles a downloading session.
+   \param w The widget, that executed this Function.
+   \param event The event that trigered this Function.
+   \param bar The Bar, that triggered this event.
+
+   \todo canceling a session in non-threaded mode.
+*/
+gint GuiUpdate::cancelDownload(GtkWidget* w, GdkEventKey* event, void* bar)
+{
+  PRINTF(3)("Cannot cancle the Downloading process until after this File\n");
+}
+#endif /* HAVE_GTK2 */
+
+#endif /* HAVE_CURL */
Index: /orxonox/branches/movie_player/src/lib/gui/gui/gui_update.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/gui_update.h	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/gui_update.h	(revision 4217)
@@ -0,0 +1,117 @@
+/*!
+  \file gui_update.h
+  \brief File that holds the class that creates the update-menu.
+*/
+
+#ifndef _GUI_UPDATE_H
+#define _GUI_UPDATE_H
+
+#include "gui.h"
+#include "gui_element.h"
+#include "gui_gtk.h"
+
+
+#define DATA_IDENTIFIER "data.oxd"
+
+#include <stdio.h>
+#ifdef HAVE_CURL
+#include <curl/curl.h>
+#include <curl/types.h>
+#include <curl/easy.h>
+#endif /* HAVE_CURL */
+#ifdef HAVE_PTHREAD_H
+#define _MULTI_THREADED
+#include <pthread.h>
+#endif /* HAVE_PTHREAD_H */
+using namespace std;
+
+//! Class that creates the execute-Options.
+class GuiUpdate : public GuiElement
+{
+ private:
+  // Defining Variables
+  char* tmpDir;                         //!< The Temporary directory.
+  char* homeDir;                        //!< The Home directory.
+  char* installDataDir;                 //!< Where to install the Data to.
+  char* installSourceDir;               //!< Where to install the Source to.
+  char* userName;                       //!< The user logged in.
+
+  bool getSystemInfo(void);
+ 
+  // Window creation.
+  Frame* updateFrame;                   //!< The Frame that holds the updateOptions.
+  Box* updateBox;                       //!< The Box that holds the updateOptions.
+  CheckButton* autoUpdate;              //!< A Checkbutton to enable the automatic Updating.
+
+  
+  Button* updateDataWindowButton;       //!< A Button to update the Data of orxonox.
+  Window* updateDataWindow;             //!< A Window for the data-update.
+  Box* updateDataBox;                   //!< A Box for the Window for the Data-update.
+  ProgressBar* updateDataBar;           //!< A Bar to display the progress of the download.
+  Button* updateDataBegin;              //!< A Button to start the process.
+
+  Button* updateSourceWindowButton;     //!< A Button to update the Source of orxonox. \todo tricky
+  Window* updateSourceWindow;           //!< A Window for the Source-update.
+  Box* updateSourceBox;                 //!< A Box for the Window for the Source-update.
+  ProgressBar* updateSourceBar;         //!< A Bar to display the progress of the download.
+
+  Button* test;                         //!< will be deleted soon.
+
+#ifdef HAVE_GTK2
+  static gint updateDataFunc(GtkWidget* w, GdkEventKey* event, void* info);
+  static gint updateSourceFunc(GtkWidget* w, GdkEventKey* event, void* info);
+#endif /* HAVE_GTK2 */
+
+  static bool checkDataDir(const char* fileName, void* object);
+
+#ifdef HAVE_CURL
+  //! A Struct to hold information about one File to download.
+  struct FileInfo
+  {
+    char* fileName;                     //!< The Name of the file we want to get.
+    char* webRoot;                      //!< The Root of the File on The Web
+    char* localRoot;                    //!< The Root directory to put the files on the local disk.
+    FILE* fileHandle;                   //!< A fileHandler.
+
+    Button* stateButton;                //!< A button that shows either start or cancel;
+    long int buttonSignal;              //!< The Signal of the stateButton.
+    ProgressBar* bar;                   //!< The ProgressBar, that sould be updated.
+  };
+
+  static size_t curlWriteFunc(void* ptr, size_t size, size_t nmemb, FILE* stream);
+  static size_t curlReadFunc(void* ptr, size_t size, size_t nmemb, FILE* stream);
+  static int curlProgressFunc(ProgressBar* bar, double totalSize, double progress, double upTotal, double upProgress);
+
+  static CURL* curlHandle;
+#ifdef HAVE_GTK2 
+  static gint cancelDownload(GtkWidget* w, GdkEventKey* event, void* bar);
+#endif /* HAVE_GTK2 */  
+  static bool isDownloading;
+  static bool downloadCanceled;
+
+  static bool download(void* fileInfo);
+  static bool downloadWithStyle(void* fileInfo);
+  static void* downloadThread(void* fileInfo);
+  static void* downloadThreadFinished(void* fileInfo);
+
+  
+#endif /* HAVE_CURL */
+
+ public:
+  GuiUpdate(void);
+  ~GuiUpdate(void);
+  
+#ifdef HAVE_CURL   
+  void updateDataWindowCreate(void);
+  Button* updateDataWindowGetButton(void);
+
+  void updateSourceWindowCreate(void);
+  Button* updateSourceWindowGetButton(void);
+
+  bool* checkForUpdates(void);
+ 
+#endif /* HAVE_CURL */
+
+};
+
+#endif /* _GUI_UPDATE_H */
Index: /orxonox/branches/movie_player/src/lib/gui/gui/gui_video.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/gui_video.cc	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/gui_video.cc	(revision 4217)
@@ -0,0 +1,225 @@
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+
+*/
+
+
+#include "gui_video.h"
+
+#include "gui_gtk.h"
+#include "glincl.h"
+#include <stdlib.h>
+
+/**
+   \brief Creates the Video-Option-Frame
+*/
+GuiVideo::GuiVideo(void)
+{
+  Frame* videoFrame;        //!< The Frame that holds the video options.
+
+  videoFrame = new Frame("Video-Options:");
+  videoFrame->setGroupName("video");
+  {
+    Box* videoBox;            //!< The Box that holds the video options.
+
+    videoBox = new Box('v');
+    {
+      CheckButton* fullscreen;  //!< CheckButton for fullscreen-mode
+      Menu* resolution;         //!< Menu for the resolution
+      CheckButton* wireframe;   //!< CheckButton for wireframe Mode.
+
+      fullscreen = new CheckButton(CONFIG_NAME_FULLSCREEN);
+      fullscreen->setFlagName("windowed", "q", 1);
+      fullscreen->setDescription("Starts orxonox in windowed mode");
+      fullscreen->saveability();
+      videoBox->fill(fullscreen);
+      resolution = new Menu(CONFIG_NAME_RESOLUTION);
+      getResolutions(resolution);
+      resolution->saveability();
+      resolution->setFlagName("resolution", "r", 0);
+      resolution->setDescription("Sets the resolution of orxonox");
+      videoBox->fill(resolution);
+      wireframe = new CheckButton(CONFIG_NAME_WIREFRAME);
+      wireframe->setFlagName("wireframe", "w", 0);
+      wireframe->setDescription("Starts orxonox in wireframe mode");
+      wireframe->saveability();
+      videoBox->fill(wireframe);
+
+      videoBox->fill(advancedWindowCreate());
+    }
+    videoFrame->fill(videoBox);
+  }
+  setMainWidget(videoFrame);
+}
+
+/**
+   \brief Destructs the Video-stuff
+*/
+GuiVideo::~GuiVideo(void)
+{
+  // nothing to do here.
+}
+
+/**
+   \brief Creates a window, and all it contains for the Source-update.
+*/
+Widget* GuiVideo::advancedWindowCreate(void)
+{
+  // advanced-Performance-Options
+  Window* advancedWindow;   //!< A Window to display advanced options.
+  Button* advancedButton;   //!< A Button to open the Advanced Video Performance Window.
+  // the button, that opens this Window.
+  advancedButton = new Button("advanced");
+
+  // the Window itself
+  advancedWindow = new Window("Advanced Video Options");
+  advancedWindow->setGroupName(CONFIG_SECTION_VIDEO_ADVANCED);
+  {
+    Box* advancedBox;         //!< A Box to pack the options into.
+
+    advancedBox = new Box('v');
+    {
+      CheckButton* shadows;     //!< CheckButton for shadows
+      CheckButton* fog;         //!< CheckButton for fog.
+      CheckButton* reflections; //!< CheckButton for reflections
+      CheckButton* textures;    //!< CheckButton for textures
+      Menu* textureDetail;      //!< Menu for the Texture-Detail.
+      Label* modelDetailLabel;  //!< Label for model-detail.
+      Menu* modelDetail;        //!< model-detail.
+      CheckButton* particles;   //!< If the Particles should be enabled
+      Label* antiAliasingLabel; //!< Label for the anti-aliasing mode.
+      Menu* antiAliasing;       //!< Menu for the Antialiasing-mode.
+      Label* filterMethodLabel; //!< Label for filtering-Method.
+      Menu* filterMethod;       //!< Menu for filtering Method.
+      Button* closeButton;      //!< A Button to close the Advanced-settingsWindow.
+
+      // Advanced Performance Options
+      shadows = new CheckButton(CONFIG_NAME_SHADOWS);
+      shadows->saveability();
+      advancedBox->fill(shadows);
+      
+      fog = new CheckButton(CONFIG_NAME_FOG);
+      fog->saveability();
+      advancedBox->fill(fog);
+      
+      reflections = new CheckButton(CONFIG_NAME_REFLECTIONS);
+      reflections->saveability();
+      advancedBox->fill(reflections);
+      
+      textures = new CheckButton(CONFIG_NAME_TEXTURES);
+      textures->saveability();
+      advancedBox->fill(textures);
+      
+      textureDetail = new Menu(CONFIG_NAME_TEXTURE_DETAIL, "low", "medium", "high", "lastItem");
+      textureDetail->setDefaultValue(1);
+      textureDetail->saveability();
+      advancedBox->fill(textureDetail);
+      
+      modelDetailLabel = new Label(CONFIG_NAME_MODEL_DETAIL);
+      advancedBox->fill(modelDetailLabel);
+      modelDetail = new Menu(CONFIG_NAME_MODEL_DETAIL, "low", "high", "lastItem");
+      modelDetail->setDefaultValue(1);
+      modelDetail->saveability();
+      advancedBox->fill(modelDetail);
+      
+      particles = new CheckButton(CONFIG_NAME_PARTICLES_ENABLED);
+      particles->saveability();
+      particles->setDefaultValue(1);
+      advancedBox->fill(particles);
+
+      antiAliasingLabel = new Label("Anti-Aliasing-depth:");
+      advancedBox->fill(antiAliasingLabel);
+      antiAliasing = new Menu(CONFIG_NAME_ANTI_ALIASING, "0", "1", "2", "4", "8",  "lastItem");
+      antiAliasing->setDefaultValue(2);
+      antiAliasing->saveability();
+      advancedBox->fill(antiAliasing);
+      
+      filterMethodLabel = new Label("Filtering Method:");
+      advancedBox->fill(filterMethodLabel);
+      filterMethod = new Menu(CONFIG_NAME_FILTER_METHOD, "none", "linear", "bilinear", "trilinear", "anisortopic", "lastItem");
+      filterMethod->setDefaultValue(1);
+      filterMethod->saveability();
+      advancedBox->fill(filterMethod);
+
+
+  
+      closeButton = new Button("close");
+#ifdef HAVE_GTK2
+      closeButton->connectSignal("button_press_event", advancedWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+
+      advancedBox->fill(closeButton);
+    }
+    advancedWindow->fill(advancedBox);
+  }
+#ifdef HAVE_GTK2
+  advancedButton->connectSignal("button_press_event", advancedWindow, Window::windowOpen);
+  advancedWindow->connectSignal("destroy", advancedWindow, Window::windowClose);
+  advancedWindow->connectSignal("delete_event", advancedWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+  Window::addWindow(advancedWindow);
+
+  return advancedButton;
+}
+
+/**
+   \brief sets all resolutions to the menu
+   \param menu the Menu to set The resolutions to.
+*/
+void GuiVideo::getResolutions(Menu* menu)
+{
+  SDL_Init(SDL_INIT_VIDEO);
+  SDL_Rect **modes;
+  int i;
+  int x = 0,y =0; // check for difference
+  char tmpChar[100];
+  
+  /* Get available fullscreen/hardware modes */
+  modes=SDL_ListModes(NULL, SDL_FULLSCREEN|SDL_HWSURFACE);
+  
+  /* Check is there are any modes available */
+  if(modes == (SDL_Rect **)0){
+    PRINTF(2)("No video-modes available!\n");
+    exit(-1);
+  }
+  
+  /* Check if our resolution is restricted */
+  if(modes == (SDL_Rect **)-1){
+    PRINTF(2)("All resolutions available.\n");
+  }
+  else{
+    /* Print valid modes */
+    PRINT(5)("Available Modes\n");
+    for(i = 0; modes[i] ;++i)
+      {
+	if (x != modes[i]->w || y != modes[i]->h)
+	  { 
+	    PRINTF(5)("  %d x %d\n", modes[i]->w, modes[i]->h);
+	    sprintf(tmpChar, "%dx%d", modes[i]->w, modes[i]->h);
+	    menu->addItem(tmpChar);
+	    x = modes[i]->w; y = modes[i]->h;
+	  }
+      }
+  }
+  SDL_Quit();
+}
Index: /orxonox/branches/movie_player/src/lib/gui/gui/gui_video.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/gui_video.h	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/gui_video.h	(revision 4217)
@@ -0,0 +1,29 @@
+/*!
+  \file gui_video.h
+  \brief File that holds the class that creates the Video-Options.
+*/
+#ifndef _GUI_VIDEO_H
+#define _GUI_VIDEO_H
+
+#include "gui.h"
+#include "gui_element.h"
+
+// FORWARD DECLARATIONS
+class Widget;
+class Menu;
+
+//! Class that creates the Video-Options.
+class GuiVideo : public GuiElement
+{
+ private:
+  //  Button* advancedWindowGetButton(void);
+  
+ public:
+  GuiVideo(void);
+  ~GuiVideo(void);
+
+ private:
+  void getResolutions(Menu* menu);
+  Widget* advancedWindowCreate(void);
+};
+#endif /* _GUI_VIDEO_H */
Index: /orxonox/branches/movie_player/src/lib/gui/gui/logo.xpm
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/logo.xpm	(revision 4217)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/logo.xpm	(revision 4217)
@@ -0,0 +1,3170 @@
+/* XPM */
+static char * logo_xpm[] = {
+"200 200 2967 2",
+"  	c #000000",
+". 	c #020202",
+"+ 	c #010101",
+"@ 	c #242424",
+"# 	c #2A2A2A",
+"$ 	c #030303",
+"% 	c #040404",
+"& 	c #8B8B8B",
+"* 	c #A0A0A0",
+"= 	c #848484",
+"- 	c #0D0D0D",
+"; 	c #E3E3E3",
+"> 	c #F4F4F4",
+", 	c #181818",
+"' 	c #1C1C1C",
+") 	c #6D6D6D",
+"! 	c #A7A7A7",
+"~ 	c #CECECE",
+"{ 	c #080808",
+"] 	c #555555",
+"^ 	c #FFFFFF",
+"/ 	c #828282",
+"( 	c #090909",
+"_ 	c #B1B1B1",
+": 	c #D3D3D3",
+"< 	c #D5D5D5",
+"[ 	c #FDFDFD",
+"} 	c #8D8D8D",
+"| 	c #D1D1D1",
+"1 	c #FEFEFE",
+"2 	c #E2E2E2",
+"3 	c #6E6E6E",
+"4 	c #FCFCFC",
+"5 	c #EAEAEA",
+"6 	c #0E0E0E",
+"7 	c #141414",
+"8 	c #F7F7F7",
+"9 	c #525252",
+"0 	c #3D3D3D",
+"a 	c #F9F9F9",
+"b 	c #565656",
+"c 	c #3B3B3B",
+"d 	c #F5F5F5",
+"e 	c #1F1F1F",
+"f 	c #FDFEFE",
+"g 	c #FFFEFE",
+"h 	c #EBEAE9",
+"i 	c #29292A",
+"j 	c #9D9D9D",
+"k 	c #FEFDFE",
+"l 	c #FEFEFD",
+"m 	c #BABABA",
+"n 	c #020101",
+"o 	c #111214",
+"p 	c #E2E2E1",
+"q 	c #4B4B4B",
+"r 	c #969696",
+"s 	c #535353",
+"t 	c #FAFFFF",
+"u 	c #FCFBFC",
+"v 	c #C8C6C6",
+"w 	c #050505",
+"x 	c #F3F2F2",
+"y 	c #FDFFFA",
+"z 	c #FAFCFF",
+"A 	c #F2F7F8",
+"B 	c #FCFDFE",
+"C 	c #FAFAFA",
+"D 	c #333333",
+"E 	c #030404",
+"F 	c #B7B5B3",
+"G 	c #FBFFFF",
+"H 	c #606060",
+"I 	c #292929",
+"J 	c #F8F8F8",
+"K 	c #C1C1C1",
+"L 	c #717171",
+"M 	c #FCFEFF",
+"N 	c #FDFCF9",
+"O 	c #FDFCFA",
+"P 	c #FCFCFB",
+"Q 	c #838383",
+"R 	c #FCFEFE",
+"S 	c #FEFDF7",
+"T 	c #BCDFF5",
+"U 	c #A4CDED",
+"V 	c #949494",
+"W 	c #6E6D6F",
+"X 	c #FEFCFB",
+"Y 	c #FBFEFF",
+"Z 	c #FFFDF8",
+"` 	c #919191",
+" .	c #C0C0C0",
+"..	c #C9C9C9",
+"+.	c #E8E8E8",
+"@.	c #323232",
+"#.	c #FBFCFD",
+"$.	c #FCFCFA",
+"%.	c #BAD9E8",
+"&.	c #F7FCFB",
+"*.	c #FAFDFE",
+"=.	c #0B0B0B",
+"-.	c #DBDBDB",
+";.	c #FBFDFE",
+">.	c #50A7EF",
+",.	c #3696F1",
+"'.	c #FAFEFE",
+").	c #EFEFEF",
+"!.	c #373737",
+"~.	c #FAFCFC",
+"{.	c #F6FBFC",
+"].	c #BADBEE",
+"^.	c #FEFFFF",
+"/.	c #2F2F2F",
+"(.	c #CACACA",
+"_.	c #FAFAF7",
+":.	c #5E5F5D",
+"<.	c #030102",
+"[.	c #FEFDFD",
+"}.	c #F9FCFA",
+"|.	c #3898EC",
+"1.	c #9FCBED",
+"2.	c #FCFDFD",
+"3.	c #EEEEEC",
+"4.	c #262827",
+"5.	c #010103",
+"6.	c #4C4C4C",
+"7.	c #D8ECFA",
+"8.	c #0A80F5",
+"9.	c #0780F6",
+"0.	c #C9E4F7",
+"a.	c #FEFCFA",
+"b.	c #68696A",
+"c.	c #1A1A1A",
+"d.	c #DDDDDD",
+"e.	c #FAFCFD",
+"f.	c #FDFBF5",
+"g.	c #B4D7F2",
+"h.	c #2A8EE9",
+"i.	c #F6FEFF",
+"j.	c #FEFCFE",
+"k.	c #CFD4D1",
+"l.	c #050305",
+"m.	c #000002",
+"n.	c #020002",
+"o.	c #030101",
+"p.	c #474646",
+"q.	c #E9E9E7",
+"r.	c #D6D6D6",
+"s.	c #B2B2B2",
+"t.	c #FCFDFC",
+"u.	c #FDFFFD",
+"v.	c #FEFEFF",
+"w.	c #F8F8FA",
+"x.	c #858784",
+"y.	c #060606",
+"z.	c #E0E0E0",
+"A.	c #F9FCFC",
+"B.	c #1E8CF3",
+"C.	c #1B86F3",
+"D.	c #CDE9F4",
+"E.	c #FCFFFE",
+"F.	c #FDFDFC",
+"G.	c #C1C3C3",
+"H.	c #090908",
+"I.	c #B5B5B5",
+"J.	c #7ABAEE",
+"K.	c #047EFC",
+"L.	c #0181FD",
+"M.	c #5DAAEE",
+"N.	c #F7FDFF",
+"O.	c #FCFDFA",
+"P.	c #D5D6D6",
+"Q.	c #070605",
+"R.	c #B3B3B3",
+"S.	c #FDFCFC",
+"T.	c #FAFCFB",
+"U.	c #E3F3FA",
+"V.	c #228BF2",
+"W.	c #0F7FEE",
+"X.	c #DBEDF5",
+"Y.	c #FDFBFC",
+"Z.	c #F8FEFA",
+"`.	c #111011",
+" +	c #020001",
+".+	c #080506",
+"++	c #676A6C",
+"@+	c #F5F9FA",
+"#+	c #BCBCBC",
+"$+	c #7E7E7E",
+"%+	c #FDFDF8",
+"&+	c #FEFDF9",
+"*+	c #A8A8A8",
+"=+	c #151515",
+"-+	c #0F0F0F",
+";+	c #FEFDFA",
+">+	c #D5EDF5",
+",+	c #0E7EEE",
+"'+	c #017FFC",
+")+	c #3798F1",
+"!+	c #EDF6F4",
+"~+	c #8C8E8D",
+"{+	c #343434",
+"]+	c #FBFBFB",
+"^+	c #EEF8FB",
+"/+	c #238FF0",
+"(+	c #0281FD",
+"_+	c #027FFC",
+":+	c #0F82F3",
+"<+	c #E2F2FB",
+"[+	c #FEFDFB",
+"}+	c #454646",
+"|+	c #707070",
+"1+	c #F7FCFC",
+"2+	c #48A1EC",
+"3+	c #047FF8",
+"4+	c #067EF9",
+"5+	c #C5E6F6",
+"6+	c #FBFEFC",
+"7+	c #2A292A",
+"8+	c #060504",
+"9+	c #9B9E9E",
+"0+	c #FAFDFD",
+"a+	c #FFFCF6",
+"b+	c #BBBBBB",
+"c+	c #FFFFFE",
+"d+	c #FBFBFC",
+"e+	c #E8F5F6",
+"f+	c #F3FEFE",
+"g+	c #CFCFCF",
+"h+	c #262626",
+"i+	c #B4DCF4",
+"j+	c #067FF3",
+"k+	c #0180FD",
+"l+	c #0380FC",
+"m+	c #73B4EC",
+"n+	c #FDFFFE",
+"o+	c #FCFBFB",
+"p+	c #9DCEF2",
+"q+	c #057FFB",
+"r+	c #0280FB",
+"s+	c #037EFE",
+"t+	c #0380FB",
+"u+	c #86BEEE",
+"v+	c #CCCDCD",
+"w+	c #7EBDEE",
+"x+	c #047FFA",
+"y+	c #0280FC",
+"z+	c #047EFE",
+"A+	c #9ECCF3",
+"B+	c #4D4D4C",
+"C+	c #171717",
+"D+	c #CCCBCA",
+"E+	c #FDFCFB",
+"F+	c #F9FCFB",
+"G+	c #E8F5F8",
+"H+	c #818181",
+"I+	c #5E5E5E",
+"J+	c #FEFFFD",
+"K+	c #A5C8E3",
+"L+	c #75B6E9",
+"M+	c #F6FBFB",
+"N+	c #FBFCFB",
+"O+	c #F0EFEC",
+"P+	c #3C3C3C",
+"Q+	c #5F5F5F",
+"R+	c #FFFEFB",
+"S+	c #9ACCF5",
+"T+	c #0182FB",
+"U+	c #037DFE",
+"V+	c #0180FC",
+"W+	c #0581F8",
+"X+	c #A6D4F3",
+"Y+	c #FBFEF6",
+"Z+	c #FCFEFD",
+"`+	c #F9FCFF",
+" @	c #3898E9",
+".@	c #017EFF",
+"+@	c #0181FA",
+"@@	c #0180FE",
+"#@	c #2990EE",
+"$@	c #F2FDFE",
+"%@	c #FDFEFA",
+"&@	c #FEFEFC",
+"*@	c #FDFDF9",
+"=@	c #C1E2F4",
+"-@	c #097EF1",
+";@	c #0080FF",
+">@	c #7EBBEF",
+",@	c #FBFDFC",
+"'@	c #8A8A8A",
+")@	c #030201",
+"!@	c #3D3A39",
+"~@	c #FDFEFD",
+"{@	c #FEFCF7",
+"]@	c #F4FCFC",
+"^@	c #88C3ED",
+"/@	c #79B5EA",
+"(@	c #7F7F7F",
+"_@	c #9B9B9B",
+":@	c #404040",
+"<@	c #424242",
+"[@	c #FDFEFC",
+"}@	c #A4D3F0",
+"|@	c #087EF6",
+"1@	c #4DA1EA",
+"2@	c #E6F4FB",
+"3@	c #FDFCF6",
+"4@	c #F6FEFE",
+"5@	c #72B1E9",
+"6@	c #0181FC",
+"7@	c #037EFF",
+"8@	c #0281F8",
+"9@	c #1B83ED",
+"0@	c #D2E9F5",
+"a@	c #FCFDF8",
+"b@	c #C0E0F3",
+"c@	c #0C7DF9",
+"d@	c #0282F9",
+"e@	c #037DFF",
+"f@	c #0380FE",
+"g@	c #057EF8",
+"h@	c #ABD2F2",
+"i@	c #FFFDFF",
+"j@	c #FBFFFA",
+"k@	c #DEF0F6",
+"l@	c #288BEE",
+"m@	c #0180FF",
+"n@	c #0081FE",
+"o@	c #60ADED",
+"p@	c #FAFDFC",
+"q@	c #FDFDFB",
+"r@	c #9F9E9F",
+"s@	c #616165",
+"t@	c #EBF1ED",
+"u@	c #FAFDFB",
+"v@	c #EFF8F9",
+"w@	c #6BB5F0",
+"x@	c #067EF7",
+"y@	c #90C4F2",
+"z@	c #6A6A6A",
+"A@	c #121212",
+"B@	c #909090",
+"C@	c #BFBFBF",
+"D@	c #444444",
+"E@	c #393939",
+"F@	c #FCFDF6",
+"G@	c #B3D4EE",
+"H@	c #0280FA",
+"I@	c #3596EE",
+"J@	c #CAE7F6",
+"K@	c #EEEEEE",
+"L@	c #FDFFFF",
+"M@	c #56A9F0",
+"N@	c #0281FB",
+"O@	c #017FFF",
+"P@	c #0081FC",
+"Q@	c #0280FE",
+"R@	c #3790EC",
+"S@	c #EDF9F7",
+"T@	c #FCFAFD",
+"U@	c #61B3F1",
+"V@	c #037FFD",
+"W@	c #489EEC",
+"X@	c #F5FCFD",
+"Y@	c #FBFDF8",
+"Z@	c #F6F8FC",
+"`@	c #4EA2EF",
+" #	c #0080FE",
+".#	c #3192ED",
+"+#	c #F7FEFE",
+"@#	c #F7F7F4",
+"##	c #FDFAF8",
+"$#	c #E3F5F8",
+"%#	c #4499E8",
+"&#	c #0381F5",
+"*#	c #A6D3ED",
+"=#	c #2C2C2C",
+"-#	c #A1A1A1",
+";#	c #414141",
+">#	c #C4C4C4",
+",#	c #4A4A49",
+"'#	c #DEF3FA",
+")#	c #057FF6",
+"!#	c #1E8AF1",
+"~#	c #BDDEF3",
+"{#	c #288DF0",
+"]#	c #007FFF",
+"^#	c #0082F8",
+"/#	c #047DFE",
+"(#	c #0281F9",
+"_#	c #057EFA",
+":#	c #6FB4ED",
+"<#	c #F9FDFB",
+"[#	c #E0F0F6",
+"}#	c #1281F3",
+"|#	c #0281FC",
+"1#	c #4CA4EA",
+"2#	c #077EF7",
+"3#	c #037FFC",
+"4#	c #0880F4",
+"5#	c #CCE7F6",
+"6#	c #FBFDFD",
+"7#	c #86C2EE",
+"8#	c #057FF8",
+"9#	c #0380FD",
+"0#	c #1987F4",
+"a#	c #EDF7FB",
+"b#	c #FEFFFE",
+"c#	c #FEFEFB",
+"d#	c #C4E5F5",
+"e#	c #278AE6",
+"f#	c #B6D8F1",
+"g#	c #4A4A4A",
+"h#	c #646464",
+"i#	c #DEDEDE",
+"j#	c #FFFDFE",
+"k#	c #FDFEF7",
+"l#	c #CAC9C8",
+"m#	c #4D4F52",
+"n#	c #010203",
+"o#	c #050304",
+"p#	c #E4F2FC",
+"q#	c #0680F8",
+"r#	c #0180FB",
+"s#	c #0F7EF0",
+"t#	c #9BCDED",
+"u#	c #F9FCFE",
+"v#	c #FCFDF9",
+"w#	c #FDFFFC",
+"x#	c #E1F4F9",
+"y#	c #1183F0",
+"z#	c #067EFD",
+"A#	c #2D96EF",
+"B#	c #067EF6",
+"C#	c #087FF5",
+"D#	c #A6D3F2",
+"E#	c #80BFF1",
+"F#	c #067FF8",
+"G#	c #1883EB",
+"H#	c #E4F9FC",
+"I#	c #3E9AF1",
+"J#	c #017FFE",
+"K#	c #0380F8",
+"L#	c #72B5F0",
+"M#	c #BBE0F4",
+"N#	c #0F83F7",
+"O#	c #2E94F0",
+"P#	c #087DF9",
+"Q#	c #037FFA",
+"R#	c #087DF2",
+"S#	c #D7EEF8",
+"T#	c #F9FEFE",
+"U#	c #FAFDFA",
+"V#	c #A0CFF1",
+"W#	c #1688F4",
+"X#	c #057FF9",
+"Y#	c #047FF9",
+"Z#	c #E4F3FB",
+"`#	c #4E4F4F",
+" $	c #C9C9C4",
+".$	c #F1F1F1",
+"+$	c #8E8E8E",
+"@$	c #FFFCFD",
+"#$	c #FCFFFA",
+"$$	c #FAFEFB",
+"%$	c #D0CFCE",
+"&$	c #555357",
+"*$	c #040405",
+"=$	c #F4FBFD",
+"-$	c #238CF1",
+";$	c #027EFE",
+">$	c #0184FC",
+",$	c #62AEEC",
+"'$	c #F6FCFE",
+")$	c #D9EDF7",
+"!$	c #097DF3",
+"~$	c #067EF8",
+"{$	c #E5F7FB",
+"]$	c #429BE9",
+"^$	c #0E81F0",
+"/$	c #178BF7",
+"($	c #0181FE",
+"_$	c #7AB7EE",
+":$	c #FAFEF9",
+"<$	c #A0CCEE",
+"[$	c #047EFB",
+"}$	c #0E83F2",
+"|$	c #1A8AF0",
+"1$	c #037FFE",
+"2$	c #1D89EF",
+"3$	c #DCF4FB",
+"4$	c #268BEC",
+"5$	c #027FFE",
+"6$	c #057EF9",
+"7$	c #B3D7F4",
+"8$	c #F6FBFE",
+"9$	c #7CBBF0",
+"0$	c #097CF7",
+"a$	c #067FF5",
+"b$	c #FBFDFF",
+"c$	c #FCFEF9",
+"d$	c #FDFEFB",
+"e$	c #FFFEFF",
+"f$	c #FEFCFC",
+"g$	c #FDFFF9",
+"h$	c #E6EFF3",
+"i$	c #F9FBF9",
+"j$	c #FEFBF8",
+"k$	c #F9FEFF",
+"l$	c #FDFEF8",
+"m$	c #DDDCDB",
+"n$	c #787878",
+"o$	c #101010",
+"p$	c #F8FEFE",
+"q$	c #328EEA",
+"r$	c #0081FD",
+"s$	c #0081FB",
+"t$	c #077EF8",
+"u$	c #479AE9",
+"v$	c #DEF2FA",
+"w$	c #A2D0F2",
+"x$	c #248AEF",
+"y$	c #F2FBFA",
+"z$	c #D8F0F9",
+"A$	c #1C89ED",
+"B$	c #027FFF",
+"C$	c #037FFB",
+"D$	c #0B80F6",
+"E$	c #D2E9F3",
+"F$	c #EDFAFB",
+"G$	c #1A87EF",
+"H$	c #0B81F4",
+"I$	c #BEDFF3",
+"J$	c #F8FCF9",
+"K$	c #3D98ED",
+"L$	c #027FFB",
+"M$	c #027FFA",
+"N$	c #9ACCF4",
+"O$	c #E3F1F7",
+"P$	c #58A9EE",
+"Q$	c #0380F7",
+"R$	c #0081FA",
+"S$	c #1E89EE",
+"T$	c #EEF9FD",
+"U$	c #0A0A0A",
+"V$	c #5A5A5A",
+"W$	c #D0D0D0",
+"X$	c #FAFCF7",
+"Y$	c #EDF6FA",
+"Z$	c #FAFBFD",
+"`$	c #4F4F4F",
+" %	c #CDCECC",
+".%	c #63A5E3",
+"+%	c #66B3EE",
+"@%	c #D6ECF7",
+"#%	c #FCFEFB",
+"$%	c #EBEBEB",
+"%%	c #E7E7E6",
+"&%	c #FEFFFC",
+"*%	c #F2FFFF",
+"=%	c #3B93EA",
+"-%	c #0380F5",
+";%	c #0181FB",
+">%	c #2E90F1",
+",%	c #5BABF1",
+"'%	c #3E92E8",
+")%	c #F4FDFE",
+"!%	c #ACD4EF",
+"~%	c #0780F5",
+"{%	c #4C9FED",
+"]%	c #78B7EE",
+"^%	c #037FFF",
+"/%	c #0282FA",
+"(%	c #8CC1F0",
+"_%	c #F8FCFC",
+":%	c #6DB3F3",
+"<%	c #027FFD",
+"[%	c #0280FD",
+"}%	c #419CEB",
+"|%	c #3095F2",
+"1%	c #047FFC",
+"2%	c #067FF7",
+"3%	c #308FEA",
+"4%	c #E8E8E7",
+"5%	c #D4D4D4",
+"6%	c #E3F8FC",
+"7%	c #8EC0ED",
+"8%	c #53A2E6",
+"9%	c #717173",
+"0%	c #A0D0EF",
+"a%	c #0B7DF5",
+"b%	c #1084F5",
+"c%	c #69AEEA",
+"d%	c #D4ECF6",
+"e%	c #F8FDFC",
+"f%	c #FDFAFA",
+"g%	c #67B0F7",
+"h%	c #0381F9",
+"i%	c #5FB0EC",
+"j%	c #5DAAED",
+"k%	c #067DF8",
+"l%	c #67B1F4",
+"m%	c #FCFEFC",
+"n%	c #F8FDFB",
+"o%	c #75B6EC",
+"p%	c #0680F7",
+"q%	c #AED5F4",
+"r%	c #D8EEF7",
+"s%	c #1181F3",
+"t%	c #4AA1ED",
+"u%	c #F5FBFD",
+"v%	c #8DC5F0",
+"w%	c #0081FF",
+"x%	c #0480F9",
+"y%	c #3B97F0",
+"z%	c #5AABE8",
+"A%	c #0182FE",
+"B%	c #358EE9",
+"C%	c #F5FEFE",
+"D%	c #FEFFFB",
+"E%	c #FAFEFA",
+"F%	c #D7EBF7",
+"G%	c #6DB3ED",
+"H%	c #1D88EE",
+"I%	c #87C3F0",
+"J%	c #FCFDFB",
+"K%	c #F8F9F8",
+"L%	c #ECF9F9",
+"M%	c #1C88F6",
+"N%	c #0E80ED",
+"O%	c #62ACF0",
+"P%	c #FBFFFB",
+"Q%	c #FCFEFA",
+"R%	c #68B0F0",
+"S%	c #057DFE",
+"T%	c #449FF2",
+"U%	c #F8FAF9",
+"V%	c #90CAF1",
+"W%	c #087DF4",
+"X%	c #017FFD",
+"Y%	c #80BCEE",
+"Z%	c #FEFEFA",
+"`%	c #FDFCFD",
+" &	c #EFFAFA",
+".&	c #489CED",
+"+&	c #3193F1",
+"@&	c #F2FAFC",
+"#&	c #FCFBFE",
+"$&	c #52A3EE",
+"%&	c #0083F9",
+"&&	c #288EF5",
+"*&	c #DDEDF6",
+"=&	c #AED6EF",
+"-&	c #60A8EA",
+";&	c #F3FBFA",
+">&	c #73B8EB",
+",&	c #61AFF5",
+"'&	c #FBFFFD",
+")&	c #D4ECF7",
+"!&	c #62ADEF",
+"~&	c #0A82F4",
+"{&	c #037EFC",
+"]&	c #D8ECF6",
+"^&	c #FDFDFE",
+"/&	c #3F3F3F",
+"(&	c #020203",
+"_&	c #C7C7C5",
+":&	c #FEFEF8",
+"<&	c #63ACE9",
+"[&	c #0380FA",
+"}&	c #0A7FF1",
+"|&	c #5AAAF1",
+"1&	c #CDE7F5",
+"2&	c #FAFBFA",
+"3&	c #FDFBF9",
+"4&	c #82C1EC",
+"5&	c #047FFB",
+"6&	c #057FFA",
+"7&	c #3298F3",
+"8&	c #A8D4F0",
+"9&	c #1787F2",
+"0&	c #067DFB",
+"a&	c #037EFD",
+"b&	c #A9D3EE",
+"c&	c #FAFFFD",
+"d&	c #DBEDF8",
+"e&	c #1484F5",
+"f&	c #8BC3EB",
+"g&	c #B7DCF1",
+"h&	c #1481F5",
+"i&	c #B7DCF4",
+"j&	c #FBFDF6",
+"k&	c #FAFEFF",
+"l&	c #DBEFF8",
+"m&	c #0781F6",
+"n&	c #92C8F0",
+"o&	c #F7FCFD",
+"p&	c #6CB6F1",
+"q&	c #0180FA",
+"r&	c #FEFBFE",
+"s&	c #CFE9F5",
+"t&	c #5CACF1",
+"u&	c #077EF6",
+"v&	c #047EFD",
+"w&	c #4DA5F0",
+"x&	c #FCFCFD",
+"y&	c #D9D9D9",
+"z&	c #6B6A68",
+"A&	c #FCFFFD",
+"B&	c #BBDCF6",
+"C&	c #077FF5",
+"D&	c #51A6EE",
+"E&	c #B2D6F2",
+"F&	c #98CCEB",
+"G&	c #0480FA",
+"H&	c #2491F2",
+"I&	c #F6FCFD",
+"J&	c #FCFFFB",
+"K&	c #C8E5F5",
+"L&	c #2F94EE",
+"M&	c #0381FB",
+"N&	c #057DFD",
+"O&	c #CBE6F4",
+"P&	c #FEFEF9",
+"Q&	c #A5D6F1",
+"R&	c #1A84EA",
+"S&	c #E3F3F7",
+"T&	c #FFFEFD",
+"U&	c #F6F9F9",
+"V&	c #328FEA",
+"W&	c #82BBEB",
+"X&	c #FBFEFE",
+"Y&	c #FFFEFC",
+"Z&	c #ECF7FA",
+"`&	c #0E7FF0",
+" *	c #1888F3",
+".*	c #B9DCF2",
+"+*	c #FBFEFD",
+"@*	c #4099F1",
+"#*	c #74BBF2",
+"$*	c #C6E6F6",
+"%*	c #57A9ED",
+"&*	c #097EF8",
+"**	c #057EFB",
+"=*	c #A3CEF0",
+"-*	c #858581",
+";*	c #505050",
+">*	c #CCCCCC",
+",*	c #8F8F8F",
+"'*	c #626262",
+")*	c #F6F6F6",
+"!*	c #EEF9FB",
+"~*	c #1F89F2",
+"{*	c #047EFA",
+"]*	c #0281FE",
+"^*	c #1588F4",
+"/*	c #0480FB",
+"(*	c #0A7FED",
+"_*	c #EAF7FB",
+":*	c #FCFFFF",
+"<*	c #FFFEFA",
+"[*	c #E0F5FA",
+"}*	c #489EE7",
+"|*	c #0F81F2",
+"1*	c #E6F4FA",
+"2*	c #C2DFEC",
+"3*	c #FDFFFB",
+"4*	c #C4E3EF",
+"5*	c #EFFBFB",
+"6*	c #F6FFFD",
+"7*	c #3795EF",
+"8*	c #3898F0",
+"9*	c #CEE6F2",
+"0*	c #389BF4",
+"a*	c #168AF7",
+"b*	c #0C7FF2",
+"c*	c #0183FD",
+"d*	c #1584F4",
+"e*	c #E7F5FA",
+"f*	c #F9FDFC",
+"g*	c #FDFAFB",
+"h*	c #2C2C2B",
+"i*	c #BEBEBE",
+"j*	c #EDEDED",
+"k*	c #727272",
+"l*	c #A2A2A2",
+"m*	c #E5E5E5",
+"n*	c #858585",
+"o*	c #474747",
+"p*	c #1D1D1D",
+"q*	c #A9A9A9",
+"r*	c #6EB2EE",
+"s*	c #0D7DED",
+"t*	c #E6F8F9",
+"u*	c #FEFCF9",
+"v*	c #F5FCFB",
+"w*	c #3192E6",
+"x*	c #FFFDFC",
+"y*	c #52A1EC",
+"z*	c #5AA5EA",
+"A*	c #E4F5FA",
+"B*	c #F5FDFE",
+"C*	c #1C88EB",
+"D*	c #0282F7",
+"E*	c #1A89F0",
+"F*	c #057EFD",
+"G*	c #55A5F0",
+"H*	c #F7FDFA",
+"I*	c #FCFAF9",
+"J*	c #D5D6D5",
+"K*	c #111111",
+"L*	c #777777",
+"M*	c #E6E6E6",
+"N*	c #C2C2C2",
+"O*	c #E7E7E7",
+"P*	c #D7D7D7",
+"Q*	c #797979",
+"R*	c #CAE4F3",
+"S*	c #087EF5",
+"T*	c #B5DDF2",
+"U*	c #93CAF2",
+"V*	c #248CF1",
+"W*	c #0080FD",
+"X*	c #077EF9",
+"Y*	c #BFDFF1",
+"Z*	c #F8FCFE",
+"`*	c #CBDFEA",
+" =	c #F5FEFD",
+".=	c #FEFFF8",
+"+=	c #FFFDFD",
+"@=	c #C4E1F3",
+"#=	c #F6FCF9",
+"$=	c #FEFFFA",
+"%=	c #EEFCFE",
+"&=	c #0A7EEC",
+"*=	c #258BF2",
+"==	c #90CAF0",
+"-=	c #D9F0F5",
+";=	c #A9D5F1",
+">=	c #A4A3A5",
+",=	c #6A6A69",
+"'=	c #2B2B2B",
+")=	c #5D5D5D",
+"!=	c #FDFAFD",
+"~=	c #F8FEFC",
+"{=	c #3497F4",
+"]=	c #057EFC",
+"^=	c #5BA8ED",
+"/=	c #F8FDFE",
+"(=	c #F6FCFB",
+"_=	c #9ECBF1",
+":=	c #3699EF",
+"<=	c #0980F2",
+"[=	c #ADD8F7",
+"}=	c #FEFDFC",
+"|=	c #FFFFFB",
+"1=	c #FFFFFD",
+"2=	c #E8FAFC",
+"3=	c #107BF2",
+"4=	c #2890F1",
+"5=	c #9ACBEE",
+"6=	c #F3FDFD",
+"7=	c #87C2F0",
+"8=	c #1989F1",
+"9=	c #E5F6FB",
+"0=	c #FAFEFD",
+"a=	c #F6FDFE",
+"b=	c #6C6C6C",
+"c=	c #A6A6A6",
+"d=	c #FFFFFA",
+"e=	c #E8F0F4",
+"f=	c #539CE1",
+"g=	c #72B8F0",
+"h=	c #A2D3EE",
+"i=	c #D9EDF8",
+"j=	c #F0F9F8",
+"k=	c #FCFEF8",
+"l=	c #FEFFF9",
+"m=	c #81C0F1",
+"n=	c #1583ED",
+"o=	c #EAF7FC",
+"p=	c #FBFDFA",
+"q=	c #F8FBFC",
+"r=	c #B9DDF6",
+"s=	c #4B9FF0",
+"t=	c #0881F7",
+"u=	c #AED4F1",
+"v=	c #FFFEF4",
+"w=	c #B7DBF2",
+"x=	c #0283FC",
+"y=	c #2E93F2",
+"z=	c #9ECEF1",
+"A=	c #F3F9FC",
+"B=	c #FAFFFE",
+"C=	c #3092EC",
+"D=	c #0181F9",
+"E=	c #75B6EE",
+"F=	c #FDFDFA",
+"G=	c #FAFCFE",
+"H=	c #F1FCFD",
+"I=	c #E1F1FA",
+"J=	c #B2D5F0",
+"K=	c #75B7F4",
+"L=	c #51A2E7",
+"M=	c #D8E7ED",
+"N=	c #E4E4E3",
+"O=	c #8CC6F1",
+"P=	c #057CFA",
+"Q=	c #0480F8",
+"R=	c #057DF9",
+"S=	c #2088F3",
+"T=	c #53A5F0",
+"U=	c #7FBDEF",
+"V=	c #B8DCF2",
+"W=	c #E1F0F8",
+"X=	c #F4FFF9",
+"Y=	c #FEFBF9",
+"Z=	c #CDEAF5",
+"`=	c #0982F4",
+" -	c #A4CEF2",
+".-	c #FEFDFF",
+"+-	c #C0DFF5",
+"@-	c #50A1ED",
+"#-	c #80B7E2",
+"$-	c #BDDCF2",
+"%-	c #3792EE",
+"&-	c #A4D0F1",
+"*-	c #F2FBFC",
+"=-	c #FDFEF9",
+"--	c #D6EAF4",
+";-	c #0680F9",
+">-	c #BDDEF4",
+",-	c #F7FEFF",
+"'-	c #E3F6FC",
+")-	c #BCDBF2",
+"!-	c #8AC4F1",
+"~-	c #53A5EB",
+"{-	c #2790EF",
+"]-	c #077FF4",
+"^-	c #0480F7",
+"/-	c #7ABAEF",
+"(-	c #FBFCFC",
+"_-	c #505152",
+":-	c #49A4EB",
+"<-	c #057EF7",
+"[-	c #0D83F1",
+"}-	c #228CF2",
+"|-	c #5EAAEE",
+"1-	c #8AC5F1",
+"2-	c #1385F6",
+"3-	c #51A8F1",
+"4-	c #F9FDF9",
+"5-	c #EBF8F8",
+"6-	c #F6F9FB",
+"7-	c #F0FBF7",
+"8-	c #7CBCEF",
+"9-	c #1384F2",
+"0-	c #86C3EF",
+"a-	c #60ACEE",
+"b-	c #3594EA",
+"c-	c #1584EF",
+"d-	c #2F8FEE",
+"e-	c #EAF6F8",
+"f-	c #020302",
+"g-	c #B7B5B7",
+"h-	c #D0E9F6",
+"i-	c #1380F1",
+"j-	c #0281F7",
+"k-	c #0E80F2",
+"l-	c #EBF4F9",
+"m-	c #FDFEFF",
+"n-	c #F7FEFB",
+"o-	c #2B91EE",
+"p-	c #0E81F5",
+"q-	c #BBE0F5",
+"r-	c #C5C5C5",
+"s-	c #191919",
+"t-	c #ECECEC",
+"u-	c #FCFDFF",
+"v-	c #8DC6F1",
+"w-	c #0082FE",
+"x-	c #0280F9",
+"y-	c #057DFB",
+"z-	c #99CDEF",
+"A-	c #C1DDF4",
+"B-	c #0082FC",
+"C-	c #047DFF",
+"D-	c #047FF7",
+"E-	c #74B5E8",
+"F-	c #EEEBEF",
+"G-	c #272728",
+"H-	c #FEFCFD",
+"I-	c #F1FAFA",
+"J-	c #409DF0",
+"K-	c #54AAEF",
+"L-	c #72B3EB",
+"M-	c #3995EB",
+"N-	c #1685F2",
+"O-	c #0480FC",
+"P-	c #3995EF",
+"Q-	c #67B3EE",
+"R-	c #0380F9",
+"S-	c #0281FA",
+"T-	c #1281EF",
+"U-	c #2B8EEA",
+"V-	c #61ACF0",
+"W-	c #6AB4EA",
+"X-	c #0481F9",
+"Y-	c #027EFB",
+"Z-	c #3992EC",
+"`-	c #EDFBFD",
+" ;	c #6E716F",
+".;	c #010000",
+"+;	c #FEFBFA",
+"@;	c #D1EBF8",
+"#;	c #1A86ED",
+"$;	c #0181FF",
+"%;	c #3090ED",
+"&;	c #F6FDFD",
+"*;	c #EAF6F7",
+"=;	c #C1DFF2",
+"-;	c #8EC7F0",
+";;	c #61AEF4",
+">;	c #3090EC",
+",;	c #0682F7",
+"';	c #0E7FEF",
+");	c #D5EBF5",
+"!;	c #FBFFFE",
+"~;	c #1F89F1",
+"{;	c #097DF4",
+"];	c #2B8FEC",
+"^;	c #55A6F2",
+"/;	c #81BEF0",
+"(;	c #E1F1F6",
+"_;	c #F3FDFC",
+":;	c #F6FCF7",
+"<;	c #52A4E8",
+"[;	c #0A7FF6",
+"};	c #BADDF3",
+"|;	c #C7CACA",
+"1;	c #EDEEED",
+"2;	c #91C7EF",
+"3;	c #0580F6",
+"4;	c #6CB3EC",
+"5;	c #FAFEFC",
+"6;	c #DFF1FA",
+"7;	c #B4D7ED",
+"8;	c #CAE3ED",
+"9;	c #FDFBFA",
+"0;	c #EAF6F9",
+"a;	c #AED1E7",
+"b;	c #DDF1F9",
+"c;	c #F6FFFE",
+"d;	c #F7FFFF",
+"e;	c #FFFCFC",
+"f;	c #9FCCEE",
+"g;	c #71B5EE",
+"h;	c #FBFCFA",
+"i;	c #303030",
+"j;	c #434343",
+"k;	c #B6B6B6",
+"l;	c #F2F2F2",
+"m;	c #F9FFFD",
+"n;	c #F1FBF8",
+"o;	c #3F98E7",
+"p;	c #0480FD",
+"q;	c #0A82F1",
+"r;	c #C6E5F7",
+"s;	c #FEFDF8",
+"t;	c #FCFBF7",
+"u;	c #FEFBF5",
+"v;	c #FDFBFB",
+"w;	c #FCFFFC",
+"x;	c #E5F3F9",
+"y;	c #1586F2",
+"z;	c #2A91F3",
+"A;	c #EAF4FC",
+"B;	c #FBFEFA",
+"C;	c #F0F0F0",
+"D;	c #575757",
+"E;	c #CCE8F7",
+"F;	c #157EEB",
+"G;	c #3595EF",
+"H;	c #F0F8FA",
+"I;	c #F8FDF7",
+"J;	c #5AA9F0",
+"K;	c #0683F9",
+"L;	c #C1DFF6",
+"M;	c #929292",
+"N;	c #545454",
+"O;	c #E4F2FA",
+"P;	c #E3F2FB",
+"Q;	c #E4F1FB",
+"R;	c #E2F2FA",
+"S;	c #CAE3F5",
+"T;	c #A3D1EF",
+"U;	c #A7D2EC",
+"V;	c #45A2F0",
+"W;	c #007FFD",
+"X;	c #79BDEE",
+"Y;	c #FFFFFC",
+"Z;	c #A0D1EF",
+"`;	c #3B9AEA",
+" >	c #A2D1F2",
+".>	c #A5D1EE",
+"+>	c #C8E2F4",
+"@>	c #E3F2FC",
+"#>	c #E4F2FB",
+"$>	c #F3FDFE",
+"%>	c #7C7C7C",
+"&>	c #515151",
+"*>	c #F2FAFA",
+"=>	c #59A0E2",
+"->	c #0680F2",
+";>	c #077FF6",
+">>	c #0C81F3",
+",>	c #BDDFF3",
+"'>	c #F8FEFD",
+")>	c #E0F1F8",
+"!>	c #1C8AF0",
+"~>	c #067DFA",
+"{>	c #097EF4",
+"]>	c #5C9FE0",
+"^>	c #F0F8F7",
+"/>	c #494949",
+"(>	c #DFDFDF",
+"_>	c #E2F2F9",
+":>	c #5BACEF",
+"<>	c #3291ED",
+"[>	c #EDF6FB",
+"}>	c #F7F9FD",
+"|>	c #50A4ED",
+"1>	c #0082F9",
+"2>	c #3897EC",
+"3>	c #DEF3F9",
+"4>	c #F5F6F5",
+"5>	c #DCDCDC",
+"6>	c #F7FBFD",
+"7>	c #64AFE9",
+"8>	c #0280FF",
+"9>	c #097EF2",
+"0>	c #107CE9",
+"a>	c #0F7DEC",
+"b>	c #86B9E3",
+"c>	c #B1D6E9",
+"d>	c #117CE7",
+"e>	c #0E7DEB",
+"f>	c #0B7CF5",
+"g>	c #047DFA",
+"h>	c #097CFA",
+"i>	c #0381FA",
+"j>	c #0382FB",
+"k>	c #087CFC",
+"l>	c #4294EE",
+"m>	c #E4F4F9",
+"n>	c #FFFEF7",
+"o>	c #F4F3F4",
+"p>	c #484847",
+"q>	c #D9D8D9",
+"r>	c #F6FEFC",
+"s>	c #6FAFEB",
+"t>	c #3B99ED",
+"u>	c #BBDDF5",
+"v>	c #C1DDF3",
+"w>	c #C1DEF5",
+"x>	c #C0DEF6",
+"y>	c #C1DEF2",
+"z>	c #C1DEF4",
+"A>	c #DCF0F9",
+"B>	c #EFFEFD",
+"C>	c #F1FEFD",
+"D>	c #F4FEFD",
+"E>	c #F5FDFF",
+"F>	c #EFFEFF",
+"G>	c #F3FFFD",
+"H>	c #E5FAFA",
+"I>	c #C4DFF4",
+"J>	c #C0DEF5",
+"K>	c #C2DFF3",
+"L>	c #C2DEF1",
+"M>	c #BFDEF5",
+"N>	c #BFDEF1",
+"O>	c #66B3F0",
+"P>	c #67B2EC",
+"Q>	c #F7FDF7",
+"R>	c #2F2C2F",
+"S>	c #020103",
+"T>	c #F7FEFD",
+"U>	c #70B3EC",
+"V>	c #0D80F3",
+"W>	c #78B8ED",
+"X>	c #A9D3F2",
+"Y>	c #1082F2",
+"Z>	c #6EB3E8",
+"`>	c #F5FDFC",
+" ,	c #A2D3F3",
+".,	c #0B84F2",
+"+,	c #0581F9",
+"@,	c #73B5ED",
+"#,	c #FCFFF9",
+"$,	c #78B9F0",
+"%,	c #087EF7",
+"&,	c #74B7EC",
+"*,	c #F6FCFA",
+"=,	c #FFFDFA",
+"-,	c #D4D3D3",
+";,	c #1B1B1B",
+">,	c #A5A5A5",
+",,	c #F9FEFC",
+"',	c #ACD4F1",
+"),	c #1081F3",
+"!,	c #53A4EA",
+"~,	c #E9F6F9",
+"{,	c #F9FBFE",
+"],	c #F8FFFC",
+"^,	c #F9FCF9",
+"/,	c #EEF7F9",
+"(,	c #CCE4F2",
+"_,	c #C7E4F3",
+":,	c #ECF9FB",
+"<,	c #F7FFFE",
+"[,	c #FDFCF8",
+"},	c #FFFBFB",
+"|,	c #F2FDFC",
+"1,	c #6FB8ED",
+"2,	c #087DF7",
+"3,	c #1081F0",
+"4,	c #95C9EE",
+"5,	c #F6FBFD",
+"6,	c #B5B5B6",
+"7,	c #1B1918",
+"8,	c #010100",
+"9,	c #010200",
+"0,	c #2A2C2A",
+"a,	c #6B6B6B",
+"b,	c #EBEDEC",
+"c,	c #FBFCFE",
+"d,	c #ABD8F6",
+"e,	c #0381FC",
+"f,	c #3F98E9",
+"g,	c #EBF7FA",
+"h,	c #81B7E6",
+"i,	c #3697EB",
+"j,	c #1583F0",
+"k,	c #1184F6",
+"l,	c #1384F5",
+"m,	c #0D84F7",
+"n,	c #1184F5",
+"o,	c #1284F5",
+"p,	c #3994EC",
+"q,	c #97C7EC",
+"r,	c #F9FEFD",
+"s,	c #F5FFF7",
+"t,	c #70B2EC",
+"u,	c #0D82F3",
+"v,	c #A7D6F5",
+"w,	c #6C6C6A",
+"x,	c #2B2B2D",
+"y,	c #030202",
+"z,	c #030000",
+"A,	c #000201",
+"B,	c #D9D9DA",
+"C,	c #FDFBFD",
+"D,	c #FEFBFD",
+"E,	c #F6FCFC",
+"F,	c #B4E0F6",
+"G,	c #0082F7",
+"H,	c #3697ED",
+"I,	c #E7F3F6",
+"J,	c #F8FBFB",
+"K,	c #E4F3FA",
+"L,	c #A1CBEE",
+"M,	c #61ADEF",
+"N,	c #3495EE",
+"O,	c #2889E1",
+"P,	c #F2FBFD",
+"Q,	c #F4FEFE",
+"R,	c #8EC2EF",
+"S,	c #90C3ED",
+"T,	c #F0F7F8",
+"U,	c #0C7EEC",
+"V,	c #3594EF",
+"W,	c #61ACF3",
+"X,	c #9CCDEF",
+"Y,	c #E1F3FA",
+"Z,	c #F6FDFB",
+"`,	c #67A9E6",
+" '	c #9DCEF0",
+".'	c #E6E9E9",
+"+'	c #9B9D9E",
+"@'	c #5F5F60",
+"#'	c #232221",
+"$'	c #464646",
+"%'	c #F6FEFD",
+"&'	c #EFFAFC",
+"*'	c #C4DFF1",
+"='	c #82C1F2",
+"-'	c #4199EA",
+";'	c #0E82F4",
+">'	c #3B97EA",
+",'	c #D5EBF6",
+"''	c #D3E8F5",
+")'	c #379AF0",
+"!'	c #D1E7F5",
+"~'	c #DDF0F8",
+"{'	c #1883F0",
+"]'	c #1C87F0",
+"^'	c #DEF0F7",
+"/'	c #B8DEF3",
+"('	c #0480F5",
+"_'	c #077FF3",
+":'	c #3899ED",
+"<'	c #87C1F0",
+"['	c #D2E9F7",
+"}'	c #F7FDFD",
+"|'	c #C9E5F6",
+"1'	c #2E8FF1",
+"2'	c #0282FD",
+"3'	c #0C81F2",
+"4'	c #3D9BEE",
+"5'	c #74BAF2",
+"6'	c #C1E0F4",
+"7'	c #EBF7F9",
+"8'	c #D2D2D2",
+"9'	c #878787",
+"0'	c #454545",
+"a'	c #070707",
+"b'	c #2E2E2E",
+"c'	c #B8B8B8",
+"d'	c #D5EBF8",
+"e'	c #8EC6F0",
+"f'	c #52A5F1",
+"g'	c #228AEE",
+"h'	c #027EFD",
+"i'	c #72B4ED",
+"j'	c #F0F8FB",
+"k'	c #FCFBFA",
+"l'	c #E7F4F8",
+"m'	c #93C5EC",
+"n'	c #3997EF",
+"o'	c #0A7FEC",
+"p'	c #2691EE",
+"q'	c #B5D5EF",
+"r'	c #FBFFFC",
+"s'	c #97C9EF",
+"t'	c #1081EE",
+"u'	c #A9D1F0",
+"v'	c #ACD1F1",
+"w'	c #2B8EF1",
+"x'	c #0B7DF3",
+"y'	c #489EF2",
+"z'	c #A1CDF1",
+"A'	c #E8F3F9",
+"B'	c #F9FDFE",
+"C'	c #EDF9F8",
+"D'	c #73B3EC",
+"E'	c #097FF2",
+"F'	c #1786F3",
+"G'	c #449FEF",
+"H'	c #8EC4EE",
+"I'	c #CEE5F6",
+"J'	c #F1FDFE",
+"K'	c #F3F3F3",
+"L'	c #7B7B7B",
+"M'	c #E5F6FC",
+"N'	c #AAD2F1",
+"O'	c #68B3F2",
+"P'	c #288CEE",
+"Q'	c #087FF7",
+"R'	c #1C8AEF",
+"S'	c #AFD7F2",
+"T'	c #D0E9F8",
+"U'	c #6AB2EE",
+"V'	c #1887F3",
+"W'	c #047FFD",
+"X'	c #258BEF",
+"Y'	c #64B1EE",
+"Z'	c #ABD4F1",
+"`'	c #E1F1F8",
+" )	c #FCFCFE",
+".)	c #F8FFFB",
+"+)	c #F5FCFA",
+"@)	c #7EBFF1",
+"#)	c #0D7FF5",
+"$)	c #0F81F0",
+"%)	c #9ECFED",
+"&)	c #DAEFF9",
+"*)	c #A0D0F3",
+"=)	c #65AEEE",
+"-)	c #258CEF",
+";)	c #027FF9",
+">)	c #1B87ED",
+",)	c #77BAF0",
+"')	c #D1E8F6",
+"))	c #FBFEFB",
+"!)	c #F8FEFB",
+"~)	c #A1CDF3",
+"{)	c #1381F4",
+"])	c #027EFF",
+"^)	c #288CEA",
+"/)	c #5BABF3",
+"()	c #A7D2F1",
+"_)	c #DBEFF7",
+":)	c #EBF1F4",
+"<)	c #6CACE0",
+"[)	c #0880F3",
+"})	c #0082FD",
+"|)	c #DAEEF7",
+"1)	c #D2E7F8",
+"2)	c #5BAAF0",
+"3)	c #0C81F6",
+"4)	c #0083FD",
+"5)	c #268FEB",
+"6)	c #6FB5EC",
+"7)	c #CEE8F6",
+"8)	c #F2FAFD",
+"9)	c #F1FCFE",
+"0)	c #F8FCFB",
+"a)	c #51A6F5",
+"b)	c #127FE9",
+"c)	c #057FF7",
+"d)	c #077FF9",
+"e)	c #127DEA",
+"f)	c #4FA5F2",
+"g)	c #CBE5F6",
+"h)	c #FBFBFD",
+"i)	c #F4FCFE",
+"j)	c #C5DEF2",
+"k)	c #F1FDFF",
+"l)	c #F1FAFC",
+"m)	c #BFE2F5",
+"n)	c #70B5EA",
+"o)	c #278CF0",
+"p)	c #5FA7EF",
+"q)	c #CEE7F5",
+"r)	c #F6FDF9",
+"s)	c #CEECF4",
+"t)	c #2C8FF0",
+"u)	c #62A5E2",
+"v)	c #DDE7EC",
+"w)	c #3E3E3E",
+"x)	c #C6E7F7",
+"y)	c #3D9AEE",
+"z)	c #53A6F0",
+"A)	c #E5F4F6",
+"B)	c #DDF1FA",
+"C)	c #65ADEA",
+"D)	c #107FF2",
+"E)	c #62ADEC",
+"F)	c #BBDDF2",
+"G)	c #FEFAFC",
+"H)	c #E5F2F9",
+"I)	c #AAD3F4",
+"J)	c #6FB5ED",
+"K)	c #3893ED",
+"L)	c #0A80EC",
+"M)	c #087DFA",
+"N)	c #6AAEEE",
+"O)	c #F3FFFE",
+"P)	c #D1E7F7",
+"Q)	c #D0E6F4",
+"R)	c #F1FEFE",
+"S)	c #FBFFF9",
+"T)	c #66B1EB",
+"U)	c #067FF9",
+"V)	c #0C7DEB",
+"W)	c #3395F3",
+"X)	c #6CB4EC",
+"Y)	c #A9D9F0",
+"Z)	c #E9F7FB",
+"`)	c #F6FFFF",
+" !	c #B1D7F2",
+".!	c #62ADEE",
+"+!	c #0E81F1",
+"@!	c #0A7EF4",
+"#!	c #6FB5F0",
+"$!	c #DEF0F8",
+"%!	c #4EA2EA",
+"&!	c #077DFC",
+"*!	c #0680F6",
+"=!	c #3B9AF2",
+"-!	c #B3D6F1",
+";!	c #F9FDFD",
+">!	c #D2D2D1",
+",!	c #DFDEDE",
+"'!	c #FBFDFB",
+")!	c #FAFBFC",
+"!!	c #B2DAF2",
+"~!	c #3093EB",
+"{!	c #59A9EE",
+"]!	c #F0FAFD",
+"^!	c #FFFDFB",
+"/!	c #F0FBFC",
+"(!	c #80BAEE",
+"_!	c #1385F0",
+":!	c #208AF0",
+"<!	c #7DBBEC",
+"[!	c #DBEBF5",
+"}!	c #FDFBF8",
+"|!	c #DBF1F7",
+"1!	c #95C8F0",
+"2!	c #48A1F0",
+"3!	c #1180F2",
+"4!	c #5FACF3",
+"5!	c #E4F2F8",
+"6!	c #56A4EE",
+"7!	c #1181EB",
+"8!	c #49A2EF",
+"9!	c #9AC7ED",
+"0!	c #E5F4F9",
+"a!	c #D6ECF9",
+"b!	c #6AB0EE",
+"c!	c #1182F2",
+"d!	c #1185F2",
+"e!	c #98CBF0",
+"f!	c #F1F9FC",
+"g!	c #59A8EB",
+"h!	c #328FE7",
+"i!	c #9BCEF1",
+"j!	c #FBFCF7",
+"k!	c #DEDDDC",
+"l!	c #6C6F71",
+"m!	c #0E0D0C",
+"n!	c #484848",
+"o!	c #ABABAB",
+"p!	c #888888",
+"q!	c #EFEEEF",
+"r!	c #F0FAFC",
+"s!	c #9CCEF1",
+"t!	c #2790EE",
+"u!	c #0681F9",
+"v!	c #68ADEB",
+"w!	c #F1FBFB",
+"x!	c #C5E3F5",
+"y!	c #3996EB",
+"z!	c #1284F2",
+"A!	c #6EB4EB",
+"B!	c #DFF2F9",
+"C!	c #FCFCF9",
+"D!	c #B7DCF2",
+"E!	c #56A4E8",
+"F!	c #1181F5",
+"G!	c #268BED",
+"H!	c #8AC6F1",
+"I!	c #DEF2F6",
+"J!	c #F8FDFD",
+"K!	c #E0F3F8",
+"L!	c #8AC4F0",
+"M!	c #208CF2",
+"N!	c #1785F4",
+"O!	c #55A5EE",
+"P!	c #B5DCF4",
+"Q!	c #F9FCFD",
+"R!	c #DAEEF9",
+"S!	c #72B3ED",
+"T!	c #0F85F4",
+"U!	c #3495ED",
+"V!	c #5CA9EC",
+"W!	c #1B85F3",
+"X!	c #8DC6ED",
+"Y!	c #EFF9FB",
+"Z!	c #878786",
+"`!	c #000001",
+" ~	c #313131",
+".~	c #C7C7C7",
+"+~	c #161616",
+"@~	c #F9F8F3",
+"#~	c #FDFAF9",
+"$~	c #EEF5FC",
+"%~	c #85C3F2",
+"&~	c #7BB9EB",
+"*~	c #F6FDFA",
+"=~	c #F1F9F9",
+"-~	c #80BEEE",
+";~	c #0F83F1",
+">~	c #59A6E9",
+",~	c #DEEEF6",
+"'~	c #FEFCF6",
+")~	c #F1F9F8",
+"!~	c #94CAF0",
+"~~	c #2D93F0",
+"{~	c #097EF6",
+"]~	c #0280F6",
+"^~	c #067FFA",
+"/~	c #1183F5",
+"(~	c #449FED",
+"_~	c #70B6EC",
+":~	c #8DC7F4",
+"<~	c #92C6F3",
+"[~	c #73B5EA",
+"}~	c #439DF0",
+"|~	c #077DFA",
+"1~	c #3C99EF",
+"2~	c #ECF9F7",
+"3~	c #DCEDF9",
+"4~	c #59A6EC",
+"5~	c #037FF9",
+"6~	c #1484F0",
+"7~	c #86C4F3",
+"8~	c #F0F9FC",
+"9~	c #F9FFFE",
+"0~	c #F5FAFC",
+"a~	c #70B0EA",
+"b~	c #6EAFEE",
+"c~	c #E7F8F5",
+"d~	c #363636",
+"e~	c #AFAFAF",
+"f~	c #E1E1E1",
+"g~	c #A4A4A4",
+"h~	c #585858",
+"i~	c #232328",
+"j~	c #A2A3A7",
+"k~	c #FBFDF9",
+"l~	c #FBFFF8",
+"m~	c #DCEDF5",
+"n~	c #3D99F1",
+"o~	c #B5D9F1",
+"p~	c #F7FDFE",
+"q~	c #FCFBF8",
+"r~	c #99CBF2",
+"s~	c #288CF0",
+"t~	c #268BF3",
+"u~	c #9CCAF0",
+"v~	c #F7FDFC",
+"w~	c #B3D8F1",
+"x~	c #268CEF",
+"y~	c #0580F8",
+"z~	c #4B9FEF",
+"A~	c #DAEFF7",
+"B~	c #FDFDF7",
+"C~	c #B7B8B7",
+"D~	c #AAAAAA",
+"E~	c #747474",
+"F~	c #D8D8D8",
+"G~	c #010201",
+"H~	c #050301",
+"I~	c #383839",
+"J~	c #B0B1B3",
+"K~	c #B1D9F1",
+"L~	c #1C89F2",
+"M~	c #037EFB",
+"N~	c #0A7FF5",
+"O~	c #6DB6F1",
+"P~	c #B5DAF2",
+"Q~	c #3497EF",
+"R~	c #3895EC",
+"S~	c #C5E2F3",
+"T~	c #70B8EC",
+"U~	c #258FF0",
+"V~	c #B6DCF4",
+"W~	c #D2D3CE",
+"X~	c #373638",
+"Y~	c #E9E9E9",
+"Z~	c #9C9C9C",
+"`~	c #010202",
+" {	c #4A4B4B",
+".{	c #8FC5F0",
+"+{	c #238BEF",
+"@{	c #B8DDF3",
+"#{	c #67AEEA",
+"${	c #65B0EE",
+"%{	c #ECF5FB",
+"&{	c #ACD6F3",
+"*{	c #1B88F1",
+"={	c #1083F5",
+"-{	c #9ECBF0",
+";{	c #F8FCFA",
+">{	c #959595",
+",{	c #383838",
+"'{	c #F4FEFF",
+"){	c #7CB9EE",
+"!{	c #459EEE",
+"~{	c #F7FDF9",
+"{{	c #ABD4EF",
+"]{	c #258DF5",
+"^{	c #0181F7",
+"/{	c #0B7DF1",
+"({	c #1986EE",
+"_{	c #1588F2",
+":{	c #0B7FF0",
+"<{	c #0280F8",
+"[{	c #2190F4",
+"}{	c #B3D9F2",
+"|{	c #FBFEF9",
+"1{	c #DCEEF8",
+"2{	c #389AF3",
+"3{	c #0282FB",
+"4{	c #7BBAF3",
+"5{	c #FAFDF9",
+"6{	c #9F9F9F",
+"7{	c #E4E4E4",
+"8{	c #ACACAC",
+"9{	c #212121",
+"0{	c #DADADA",
+"a{	c #79B6EC",
+"b{	c #69B2F0",
+"c{	c #EBF9FA",
+"d{	c #6AB0F1",
+"e{	c #097DF6",
+"f{	c #0082FA",
+"g{	c #0D83F3",
+"h{	c #5BA8EE",
+"i{	c #AED5F2",
+"j{	c #D8F1F8",
+"k{	c #EDF6F9",
+"l{	c #DCF1F8",
+"m{	c #AAD5F5",
+"n{	c #479DEC",
+"o{	c #0580F7",
+"p{	c #0D80F6",
+"q{	c #79BAEF",
+"r{	c #EDF8FC",
+"s{	c #FBFBF9",
+"t{	c #EBF3F8",
+"u{	c #6BADEC",
+"v{	c #73B8EC",
+"w{	c #FAFCF9",
+"x{	c #6F6F6F",
+"y{	c #666666",
+"z{	c #808080",
+"A{	c #CBCBCB",
+"B{	c #9A9A9A",
+"C{	c #F8FFFF",
+"D{	c #6FB4F1",
+"E{	c #0681F6",
+"F{	c #0A81F5",
+"G{	c #88C1EE",
+"H{	c #D4EBF7",
+"I{	c #469BED",
+"J{	c #248CEF",
+"K{	c #C0E1F7",
+"L{	c #C1DFF4",
+"M{	c #419DEE",
+"N{	c #F2FCFB",
+"O{	c #6FB2EF",
+"P{	c #087EF9",
+"Q{	c #4D4D4D",
+"R{	c #999999",
+"S{	c #6CB1EA",
+"T{	c #0E80F5",
+"U{	c #ABD3F1",
+"V{	c #FAFBFB",
+"W{	c #BFDFF4",
+"X{	c #218AEE",
+"Y{	c #067EFA",
+"Z{	c #2C90EE",
+"`{	c #DAF1F9",
+" ]	c #FDFDFF",
+".]	c #D2ECF7",
+"+]	c #278DF0",
+"@]	c #238BEC",
+"#]	c #C9EAF7",
+"$]	c #80BCED",
+"%]	c #0882F6",
+"&]	c #6CB0F1",
+"*]	c #868686",
+"=]	c #77B9EF",
+"-]	c #A9D7EF",
+";]	c #FCFBFD",
+">]	c #A6D0F2",
+",]	c #1686F1",
+"']	c #D8ECF7",
+")]	c #92C5EA",
+"!]	c #6CB3F0",
+"~]	c #70B3ED",
+"{]	c #9ECEED",
+"]]	c #EDF9FC",
+"^]	c #0F85F5",
+"/]	c #1A86F1",
+"(]	c #A4D2F5",
+"_]	c #84BEEC",
+":]	c #0480F4",
+"<]	c #353535",
+"[]	c #202020",
+"}]	c #5C5C5C",
+"|]	c #B0B0B0",
+"1]	c #757575",
+"2]	c #95C9F0",
+"3]	c #0881F8",
+"4]	c #0381F8",
+"5]	c #96C7F0",
+"6]	c #A1CDF0",
+"7]	c #0C82F6",
+"8]	c #057DFC",
+"9]	c #79B9F1",
+"0]	c #BFE0F4",
+"a]	c #2489EB",
+"b]	c #047EF9",
+"c]	c #328FED",
+"d]	c #BDDFF1",
+"e]	c #7BBBED",
+"f]	c #0B82F6",
+"g]	c #A0CFF2",
+"h]	c #F5FCFE",
+"i]	c #0A81F7",
+"j]	c #9CCEF2",
+"k]	c #FCFDF7",
+"l]	c #989898",
+"m]	c #939393",
+"n]	c #131313",
+"o]	c #8C8C8C",
+"p]	c #BBE1F7",
+"q]	c #1383EF",
+"r]	c #85BEF3",
+"s]	c #F9FDFA",
+"t]	c #9CCCEE",
+"u]	c #0A82F3",
+"v]	c #0C7FF3",
+"w]	c #D6EDF5",
+"x]	c #1D89EE",
+"y]	c #1F88E8",
+"z]	c #E4F6FB",
+"A]	c #D6EDF6",
+"B]	c #0982F7",
+"C]	c #0982F8",
+"D]	c #9ECDF3",
+"E]	c #F7FDFB",
+"F]	c #87BDEF",
+"G]	c #1687F4",
+"H]	c #BEE0F1",
+"I]	c #252525",
+"J]	c #B4B4B4",
+"K]	c #DAEFFA",
+"L]	c #2189ED",
+"M]	c #61AAEF",
+"N]	c #F5FEFA",
+"O]	c #B4DAF3",
+"P]	c #0C7EF4",
+"Q]	c #74B5EB",
+"R]	c #83BEEE",
+"S]	c #1C89EF",
+"T]	c #1585F3",
+"U]	c #BFE4F6",
+"V]	c #F7FBFB",
+"W]	c #51A6F0",
+"X]	c #2C8FF3",
+"Y]	c #E1F0F7",
+"Z]	c #9E9E9E",
+"`]	c #0C0C0C",
+" ^	c #A3A3A3",
+".^	c #F7F9FB",
+"+^	c #439BF1",
+"@^	c #3999EB",
+"#^	c #F5FAFD",
+"$^	c #C4E1F7",
+"%^	c #4B9DED",
+"&^	c #2D8DEA",
+"*^	c #439DF1",
+"=^	c #F9FFFF",
+"-^	c #44A0EE",
+";^	c #1785EF",
+">^	c #C4E3F3",
+",^	c #EEF8FA",
+"'^	c #3394EE",
+")^	c #4DA3EE",
+"!^	c #F2FBFB",
+"~^	c #ADADAD",
+"{^	c #84BFEE",
+"]^	c #1E84F3",
+"^^	c #D7EDF5",
+"/^	c #DAF1FA",
+"(^	c #248DEC",
+"_^	c #047EFF",
+":^	c #489FEE",
+"<^	c #F5FDFD",
+"[^	c #2C8DE8",
+"}^	c #4098E8",
+"|^	c #499FEB",
+"1^	c #2E92EE",
+"2^	c #CDE8F7",
+"3^	c #1788F3",
+"4^	c #077EFA",
+"5^	c #91C6EF",
+"6^	c #3A3A3A",
+"7^	c #D2E7F6",
+"8^	c #0C84F3",
+"9^	c #0981F8",
+"0^	c #B0D8F5",
+"a^	c #F1F9FB",
+"b^	c #4199EE",
+"c^	c #439AEF",
+"d^	c #F8FEF9",
+"e^	c #5FADF2",
+"f^	c #0182FA",
+"g^	c #78B9F1",
+"h^	c #258EF1",
+"i^	c #52A4EE",
+"j^	c #F1FAF9",
+"k^	c #A1CDEF",
+"l^	c #CDE9F6",
+"m^	c #FDFCFE",
+"n^	c #656565",
+"o^	c #7A7A7A",
+"p^	c #3E97F1",
+"q^	c #62AFF0",
+"r^	c #7FBAED",
+"s^	c #0D80F4",
+"t^	c #DBF1F6",
+"u^	c #D2E7F4",
+"v^	c #1285F4",
+"w^	c #1782F4",
+"x^	c #DAF1F7",
+"y^	c #E4F1F7",
+"z^	c #0981F4",
+"A^	c #86C1F0",
+"B^	c #F3FCFE",
+"C^	c #55A3EE",
+"D^	c #037FF8",
+"E^	c #4A9EEC",
+"F^	c #4E4E4E",
+"G^	c #C8C8C8",
+"H^	c #B7B7B7",
+"I^	c #C6C6C6",
+"J^	c #FFFDF9",
+"K^	c #92C7EB",
+"L^	c #0580FA",
+"M^	c #278CF1",
+"N^	c #E8F7F7",
+"O^	c #BADFF4",
+"P^	c #0A80F6",
+"Q^	c #0182FD",
+"R^	c #8CC3F2",
+"S^	c #A7D2EF",
+"T^	c #1080EF",
+"U^	c #1A89F4",
+"V^	c #A6D2F3",
+"W^	c #8FC2ED",
+"X^	c #0D83F8",
+"Y^	c #CCE5F4",
+"Z^	c #E0F2F7",
+"`^	c #1E8BF3",
+" /	c #067FFB",
+"./	c #9FCFEE",
+"+/	c #E5F4F7",
+"@/	c #1788F0",
+"#/	c #0581F3",
+"$/	c #B0D8F4",
+"%/	c #E3F7FB",
+"&/	c #298DEF",
+"*/	c #2087F6",
+"=/	c #E4F7FB",
+"-/	c #D7F0F8",
+";/	c #70B2EB",
+">/	c #48A4F5",
+",/	c #4AA3F3",
+"'/	c #7CBBEC",
+")/	c #DAEEF8",
+"!/	c #D7EFF8",
+"~/	c #3495EC",
+"{/	c #96C8EE",
+"]/	c #0A7FF4",
+"^/	c #248FF0",
+"//	c #E5F5FA",
+"(/	c #272727",
+"_/	c #282828",
+":/	c #7FBBED",
+"</	c #48A3F0",
+"[/	c #76B4EC",
+"}/	c #3F9AEC",
+"|/	c #ECF8F8",
+"1/	c #FFFEF8",
+"2/	c #E1F2F9",
+"3/	c #3E97E9",
+"4/	c #7BBBF0",
+"5/	c #3E99EB",
+"6/	c #7CBBEE",
+"7/	c #979797",
+"8/	c #1586F3",
+"9/	c #0D7FF3",
+"0/	c #C9E7F7",
+"a/	c #CBE8F6",
+"b/	c #1583F2",
+"c/	c #0180F9",
+"d/	c #3597F0",
+"e/	c #D9EDF6",
+"f/	c #FFFEF9",
+"g/	c #D7EDF6",
+"h/	c #3C96E7",
+"i/	c #1683F0",
+"j/	c #D9EFF9",
+"k/	c #B5DAF3",
+"l/	c #1884F4",
+"m/	c #E4F4F7",
+"n/	c #5B5B5B",
+"o/	c #5AADF0",
+"p/	c #50A6EF",
+"q/	c #067FF6",
+"r/	c #1788F2",
+"s/	c #7DBBEE",
+"t/	c #CBE7F3",
+"u/	c #C8E6F6",
+"v/	c #63B1EF",
+"w/	c #1183F2",
+"x/	c #55A5ED",
+"y/	c #439DE9",
+"z/	c #047DFC",
+"A/	c #78B9EE",
+"B/	c #B9B9B9",
+"C/	c #676767",
+"D/	c #E3F2FA",
+"E/	c #1485F1",
+"F/	c #D7E9F6",
+"G/	c #C6E2F6",
+"H/	c #097FF7",
+"I/	c #0980F4",
+"J/	c #1484F2",
+"K/	c #2C91ED",
+"L/	c #218AF2",
+"M/	c #1583F7",
+"N/	c #0A80F1",
+"O/	c #C2E3F5",
+"P/	c #C8E5F4",
+"Q/	c #1887F0",
+"R/	c #EAF8FC",
+"S/	c #7D7D7D",
+"T/	c #0182FC",
+"U/	c #56A6EA",
+"V/	c #4CA1ED",
+"W/	c #4BA2ED",
+"X/	c #F8FCFD",
+"Y/	c #499EED",
+"Z/	c #90C5ED",
+"`/	c #F5FBFB",
+" (	c #288DF4",
+".(	c #077DF6",
+"+(	c #BBE1F5",
+"@(	c #C4E0F2",
+"#(	c #0080FC",
+"$(	c #D1EAF7",
+"%(	c #B5D7F2",
+"&(	c #3894EF",
+"*(	c #F3FCFD",
+"=(	c #616161",
+"-(	c #636363",
+";(	c #ABD8F3",
+">(	c #3193F2",
+",(	c #59AAEF",
+"'(	c #66AEEB",
+")(	c #2C8FEC",
+"!(	c #BADEF2",
+"~(	c #232323",
+"{(	c #BDBDBD",
+"](	c #5AA7E7",
+"^(	c #93C5F2",
+"/(	c #0D81EE",
+"((	c #2C8DEB",
+"_(	c #66B3F2",
+":(	c #72B2EA",
+"<(	c #6FB3EB",
+"[(	c #56ABEF",
+"}(	c #1F86F0",
+"|(	c #E7F3F9",
+"1(	c #8BC2F0",
+"2(	c #73B6F1",
+"3(	c #FAFFFC",
+"4(	c #767676",
+"5(	c #898989",
+"6(	c #EBF4FA",
+"7(	c #1886F2",
+"8(	c #0B7DF4",
+"9(	c #DAEEF6",
+"0(	c #8BC2EF",
+"a(	c #1184EF",
+"b(	c #9AD0F5",
+"c(	c #8BC9EF",
+"d(	c #0F81F5",
+"e(	c #98C8EF",
+"f(	c #0A7DF3",
+"g(	c #2489EE",
+"h(	c #C3C3C3",
+"i(	c #ABD6F0",
+"j(	c #0082FF",
+"k(	c #4A9FED",
+"l(	c #F8FEFF",
+"m(	c #2F94ED",
+"n(	c #1C87F2",
+"o(	c #D7EDF7",
+"p(	c #FDFCF7",
+"q(	c #AFDAF3",
+"r(	c #1582EE",
+"s(	c #46A1F0",
+"t(	c #479FF1",
+"u(	c #B9DCF5",
+"v(	c #66B3EF",
+"w(	c #95C7EF",
+"x(	c #D3EAF5",
+"y(	c #0780F8",
+"z(	c #ACD5F4",
+"A(	c #F6FDFC",
+"B(	c #E0F1F6",
+"C(	c #FBFCF4",
+"D(	c #9CCEF4",
+"E(	c #097EF0",
+"F(	c #DFF0F9",
+"G(	c #86BFEF",
+"H(	c #F4FDFD",
+"I(	c #288DEE",
+"J(	c #D1E8F5",
+"K(	c #89C1F1",
+"L(	c #3293EF",
+"M(	c #D8F0F8",
+"N(	c #50A0E9",
+"O(	c #0B7EF2",
+"P(	c #0B7EED",
+"Q(	c #4CA1EC",
+"R(	c #D6F0F9",
+"S(	c #3192F0",
+"T(	c #93C8F1",
+"U(	c #D2E8F5",
+"V(	c #3593F0",
+"W(	c #CDCDCD",
+"X(	c #D4EBF6",
+"Y(	c #2F91EE",
+"Z(	c #F4FCFD",
+"`(	c #4AA0EE",
+" _	c #76BBF2",
+"._	c #F7FCFA",
+"+_	c #479CE7",
+"@_	c #4A9AE4",
+"#_	c #78BAF2",
+"$_	c #56A9EE",
+"%_	c #F3FBFD",
+"&_	c #248CEE",
+"*_	c #0D81F1",
+"=_	c #E0F2F9",
+"-_	c #A8D2F3",
+";_	c #5FA9EE",
+">_	c #0F81F1",
+",_	c #91C6F4",
+"'_	c #0882F7",
+")_	c #DEEFF9",
+"!_	c #8EC5F6",
+"~_	c #1889F2",
+"{_	c #5BAAEF",
+"]_	c #ACD3F3",
+"^_	c #6BB1EB",
+"/_	c #94C8F3",
+"(_	c #BBDDF0",
+"__	c #91C7F4",
+":_	c #D2E8F6",
+"<_	c #0E81F4",
+"[_	c #DDEFF7",
+"}_	c #93C5F4",
+"|_	c #CAE5F5",
+"1_	c #89C2EF",
+"2_	c #7CBAEE",
+"3_	c #3C98F1",
+"4_	c #C8E3F4",
+"5_	c #88C1F1",
+"6_	c #7ABCF1",
+"7_	c #58A5ED",
+"8_	c #F9FFFC",
+"9_	c #71B1F1",
+"0_	c #90C5F3",
+"a_	c #BDDBF0",
+"b_	c #46A2F3",
+"c_	c #595959",
+"d_	c #F2F9FB",
+"e_	c #238AF1",
+"f_	c #0C80F8",
+"g_	c #E4F1F9",
+"h_	c #64AAEE",
+"i_	c #F2F9FA",
+"j_	c #DEEFF8",
+"k_	c #1283F3",
+"l_	c #1682EF",
+"m_	c #5DAAF0",
+"n_	c #F2F9FC",
+"o_	c #3490EE",
+"p_	c #6FB3EE",
+"q_	c #E0F2FB",
+"r_	c #2891F4",
+"s_	c #F5FCFC",
+"t_	c #696969",
+"u_	c #0C7CF0",
+"v_	c #2C90EF",
+"w_	c #F3FEFD",
+"x_	c #419CED",
+"y_	c #9ACCF2",
+"z_	c #E2F5FB",
+"A_	c #E4F5F9",
+"B_	c #8FC5F1",
+"C_	c #49A1EC",
+"D_	c #F2FCFE",
+"E_	c #2490F0",
+"F_	c #0B7DEE",
+"G_	c #C3E5F4",
+"H_	c #3C96EE",
+"I_	c #1084F7",
+"J_	c #1485EE",
+"K_	c #B3D8F4",
+"L_	c #B0DCF5",
+"M_	c #1185F1",
+"N_	c #208BED",
+"O_	c #2F90E7",
+"P_	c #ACD6F4",
+"Q_	c #61B1F6",
+"R_	c #E6F7F6",
+"S_	c #0E81F3",
+"T_	c #8CC2EC",
+"U_	c #EBF8FC",
+"V_	c #E3F5FC",
+"W_	c #83BAEC",
+"X_	c #0F83F2",
+"Y_	c #1184F4",
+"Z_	c #F7FCFE",
+"`_	c #61B0F7",
+" :	c #B1D5F1",
+".:	c #62B1F4",
+"+:	c #C9E2F2",
+"@:	c #1E87F0",
+"#:	c #4CA3F1",
+"$:	c #6BB4EF",
+"%:	c #4EA3EF",
+"&:	c #1282F0",
+"*:	c #64AFF5",
+"=:	c #AFD5F4",
+"-:	c #7FB9E9",
+";:	c #88C2EE",
+">:	c #C6E3F4",
+",:	c #067DF9",
+"':	c #C7E3F3",
+"):	c #A0D1F4",
+"!:	c #73B6EA",
+"~:	c #A0CEEE",
+"{:	c #C6E3F2",
+"]:	c #087EF4",
+"^:	c #C4E3F4",
+"/:	c #65AFF4",
+"(:	c #74B6EA",
+"_:	c #75B4ED",
+"::	c #A0CEEF",
+"<:	c #C7E3F4",
+"[:	c #047EF5",
+"}:	c #0082FB",
+"|:	c #067EF5",
+"1:	c #C6E3F3",
+"2:	c #9ECDED",
+"3:	c #71B5EA",
+"4:	c #047FF5",
+"5:	c #067DFC",
+"6:	c #0A7FF7",
+"7:	c #A1CEED",
+"8:	c #2188ED",
+"9:	c #9DD4F3",
+"0:	c #DEF0F5",
+"a:	c #D3E9F4",
+"b:	c #85C1EF",
+"c:	c #0C80F5",
+"d:	c #88C3F1",
+"e:	c #74B4EC",
+"f:	c #2589E9",
+"g:	c #CEE6F4",
+"h:	c #9ED0F1",
+"i:	c #0B81F7",
+"j:	c #62AFF5",
+"k:	c #8BC3EE",
+"l:	c #6FB2F0",
+"m:	c #C9E3F3",
+"n:	c #047FF6",
+"o:	c #CDE8F8",
+"p:	c #A5D3F2",
+"q:	c #0D82F4",
+"r:	c #087CF8",
+"s:	c #65B0F4",
+"t:	c #ADD5F5",
+"u:	c #AED5F5",
+"v:	c #66B0F4",
+"w:	c #CBE3F1",
+"x:	c #0083FA",
+"y:	c #D2E9F8",
+"z:	c #FCFCF3",
+"A:	c #A9D6F2",
+"B:	c #0B82F5",
+"C:	c #1082F3",
+"D:	c #E7F6F9",
+"E:	c #62B0F4",
+"F:	c #ACD5F5",
+"G:	c #ADD5F3",
+"H:	c #5EAEF6",
+"I:	c #2A8DEB",
+"J:	c #D8EBF6",
+"K:	c #AFD8F1",
+"L:	c #1182F5",
+"M:	c #1384EF",
+"N:	c #459FEA",
+"O:	c #BFDCF2",
+"P:	c #D7EFF6",
+"Q:	c #0780F7",
+"R:	c #308EEA",
+"S:	c #1887EE",
+"T:	c #2F8EEA",
+"U:	c #D7ECF7",
+"V:	c #B1DAF1",
+"W:	c #0F84F5",
+"X:	c #2E96F3",
+"Y:	c #2E90E8",
+"Z:	c #0A7DEF",
+"`:	c #E0F4F9",
+" <	c #0C7EF1",
+".<	c #248DF1",
+"+<	c #47A2ED",
+"@<	c #0282FC",
+"#<	c #2F8FEF",
+"$<	c #FEFFF7",
+"%<	c #B6DCF3",
+"&<	c #1285F2",
+"*<	c #50A0ED",
+"=<	c #E9F4F8",
+"-<	c #1983EE",
+";<	c #E7F8FC",
+"><	c #2E90F5",
+",<	c #DBF1FB",
+"'<	c #6EB7F0",
+")<	c #3090F1",
+"!<	c #DCEFF9",
+"~<	c #D6E9F2",
+"{<	c #EEF7FB",
+"]<	c #B9DFF5",
+"^<	c #1185F3",
+"/<	c #077CFB",
+"(<	c #81BDF5",
+"_<	c #D4EBF9",
+":<	c #3294EF",
+"<<	c #58A8F0",
+"[<	c #ABD3EC",
+"}<	c #9FCEED",
+"|<	c #3491E8",
+"1<	c #E0F0F8",
+"2<	c #FBFEF8",
+"3<	c #D6E6F2",
+"4<	c #2189F0",
+"5<	c #3D99E9",
+"6<	c #E2F5FA",
+"7<	c #FEFBF6",
+"8<	c #BDE0F3",
+"9<	c #AFD4F1",
+"0<	c #A6D0F0",
+"a<	c #64B2F0",
+"b<	c #AEAEAE",
+"c<	c #7EBBEE",
+"d<	c #87C2F3",
+"e<	c #CFE7F1",
+"f<	c #3894EB",
+"g<	c #E2F1F9",
+"h<	c #FFFFF8",
+"i<	c #1C8AEE",
+"j<	c #3C97E8",
+"k<	c #FEFAFE",
+"l<	c #C0E4F5",
+"m<	c #1687F3",
+"n<	c #DDEFF8",
+"o<	c #79B9F0",
+"p<	c #8DC3F0",
+"q<	c #4CA0EC",
+"r<	c #FBFCFF",
+"s<	c #F2FDF8",
+"t<	c #1F88F3",
+"u<	c #3C95EF",
+"v<	c #E4F2F7",
+"w<	c #C6E3F5",
+"x<	c #2088EB",
+"y<	c #3798EE",
+"z<	c #E0F2F6",
+"A<	c #FEFBFC",
+"B<	c #C4E3F5",
+"C<	c #1A88F0",
+"D<	c #2B91F0",
+"E<	c #3F99EB",
+"F<	c #0481F7",
+"G<	c #E0F3F9",
+"H<	c #127FEA",
+"I<	c #1686F3",
+"J<	c #5DA8EF",
+"K<	c #3F98EE",
+"L<	c #F9FDF6",
+"M<	c #FBFDF5",
+"N<	c #1C88F3",
+"O<	c #077CFD",
+"P<	c #3595EE",
+"Q<	c #C5E6F7",
+"R<	c #1C89F0",
+"S<	c #087CFB",
+"T<	c #6BB0F0",
+"U<	c #E6F7FC",
+"V<	c #0D82F1",
+"W<	c #1486F2",
+"X<	c #EBF5F9",
+"Y<	c #737373",
+"Z<	c #429DED",
+"`<	c #B9E0F5",
+" [	c #FEFBFB",
+".[	c #A5D0EF",
+"+[	c #4499E7",
+"@[	c #E5F4FA",
+"#[	c #C0E0F5",
+"$[	c #1A87F2",
+"%[	c #C8E5F6",
+"&[	c #1F89F0",
+"*[	c #B3D7F0",
+"=[	c #FCFCF8",
+"-[	c #AFD6F0",
+";[	c #459DF0",
+">[	c #1E1E1E",
+",[	c #80BDEF",
+"'[	c #76B7EF",
+")[	c #EFFBFA",
+"![	c #1783F4",
+"~[	c #0382FA",
+"{[	c #439AEB",
+"][	c #E9F5FA",
+"^[	c #1A86EE",
+"/[	c #3092E8",
+"([	c #FEF9FD",
+"_[	c #CBEAF7",
+":[	c #1F8BF1",
+"<[	c #69AFEE",
+"[[	c #8DC5F2",
+"}[	c #CDE6F5",
+"|[	c #2B8FEB",
+"1[	c #F4FAFD",
+"2[	c #499BEF",
+"3[	c #EEF6F8",
+"4[	c #F7FFFD",
+"5[	c #BCDCF3",
+"6[	c #1584EE",
+"7[	c #0281F6",
+"8[	c #2A91F0",
+"9[	c #D8EEF5",
+"0[	c #FEFAFD",
+"a[	c #D1EAF8",
+"b[	c #228DF0",
+"c[	c #5FAAF1",
+"d[	c #1D8AEF",
+"e[	c #CDE6F4",
+"f[	c #3698EE",
+"g[	c #CBE4F4",
+"h[	c #AED6ED",
+"i[	c #4D9EEC",
+"j[	c #EDF8FB",
+"k[	c #F7FEF9",
+"l[	c #B8D9F5",
+"m[	c #1384F6",
+"n[	c #1184F8",
+"o[	c #087CFD",
+"p[	c #278FEF",
+"q[	c #FDFBF7",
+"r[	c #D2EDF8",
+"s[	c #268DEE",
+"t[	c #B8DBF2",
+"u[	c #3996EE",
+"v[	c #84BEF0",
+"w[	c #6BB0EC",
+"x[	c #ECFCFC",
+"y[	c #268DED",
+"z[	c #51A0E5",
+"A[	c #B1D9F4",
+"B[	c #7BBBF1",
+"C[	c #D2EBF6",
+"D[	c #298EEA",
+"E[	c #D0ECF6",
+"F[	c #D6ECF8",
+"G[	c #278FEE",
+"H[	c #3390E8",
+"I[	c #F4FBF9",
+"J[	c #61ADEC",
+"K[	c #87BEEE",
+"L[	c #D8EBF7",
+"M[	c #0C81F5",
+"N[	c #1C85F1",
+"O[	c #EAF6FA",
+"P[	c #F8FFFE",
+"Q[	c #85C0EF",
+"R[	c #52A2EC",
+"S[	c #AED6F0",
+"T[	c #1482ED",
+"U[	c #80BFEF",
+"V[	c #D5EDF8",
+"W[	c #278EF0",
+"X[	c #258CEA",
+"Y[	c #FDF9FC",
+"Z[	c #D7EFF9",
+"`[	c #2990EF",
+" }	c #89C3F0",
+".}	c #E5F5FB",
+"+}	c #0D82F2",
+"@}	c #479FEE",
+"#}	c #A0CDF2",
+"$}	c #E9F5F8",
+"%}	c #1084F1",
+"&}	c #56A3EF",
+"*}	c #F2F8F8",
+"=}	c #B0D4F1",
+"-}	c #0E83F1",
+";}	c #087FF1",
+">}	c #81C1F1",
+",}	c #FAFBF9",
+"'}	c #298EF1",
+")}	c #218CF1",
+"!}	c #CEE9F4",
+"~}	c #2A91EF",
+"{}	c #1D88EF",
+"]}	c #EAF7F9",
+"^}	c #83BCED",
+"/}	c #56A7EF",
+"(}	c #AED8F3",
+"_}	c #0183F8",
+":}	c #258FEE",
+"<}	c #F2FAFE",
+"[}	c #6DB5EF",
+"}}	c #0580F9",
+"|}	c #5CA7EB",
+"1}	c #F4FBFB",
+"2}	c #F6FFFB",
+"3}	c #FBFCF5",
+"4}	c #A9D0F3",
+"5}	c #0C81F8",
+"6}	c #DBF0F9",
+"7}	c #2B92F0",
+"8}	c #087BFE",
+"9}	c #1C8AF1",
+"0}	c #CAE6F6",
+"a}	c #FCFBF6",
+"b}	c #DEF2F9",
+"c}	c #3193ED",
+"d}	c #077CFC",
+"e}	c #89C4F2",
+"f}	c #FBFCF9",
+"g}	c #B5D7F1",
+"h}	c #F4FEFA",
+"i}	c #2A90EF",
+"j}	c #99C9EF",
+"k}	c #DCEEF7",
+"l}	c #62A9E6",
+"m}	c #0C82F4",
+"n}	c #8FC5EE",
+"o}	c #3293ED",
+"p}	c #208AEC",
+"q}	c #3396ED",
+"r}	c #248BF1",
+"s}	c #E9F8F9",
+"t}	c #FCFBF9",
+"u}	c #9BCAEC",
+"v}	c #3E9BEE",
+"w}	c #98CBEF",
+"x}	c #268EEF",
+"y}	c #F1F9FA",
+"z}	c #65ACED",
+"A}	c #0982F5",
+"B}	c #93C8EF",
+"C}	c #DFF2FA",
+"D}	c #3295F0",
+"E}	c #1D88EC",
+"F}	c #C2E2F6",
+"G}	c #E1F4FA",
+"H}	c #3797ED",
+"I}	c #077DF9",
+"J}	c #8DC8F3",
+"K}	c #EFF9FA",
+"L}	c #298DEA",
+"M}	c #B6DAF4",
+"N}	c #F5FBFA",
+"O}	c #288FF1",
+"P}	c #067FFD",
+"Q}	c #91C8F3",
+"R}	c #EEF7FC",
+"S}	c #2A8DEC",
+"T}	c #0382F9",
+"U}	c #68ADF0",
+"V}	c #F5FAF9",
+"W}	c #F7FEFC",
+"X}	c #9DC9F1",
+"Y}	c #0B82F3",
+"Z}	c #0C80EF",
+"`}	c #94CBF2",
+" |	c #E0F2FA",
+".|	c #3695F0",
+"+|	c #1A88F2",
+"@|	c #C0E2F3",
+"#|	c #3899EE",
+"$|	c #3696ED",
+"%|	c #F2F7FA",
+"&|	c #91C8F1",
+"*|	c #439EF1",
+"=|	c #9FCDF0",
+"-|	c #218DF4",
+";|	c #ECF6FA",
+">|	c #B1D7F4",
+",|	c #0580F4",
+"'|	c #6BB0EB",
+")|	c #F6FFFC",
+"!|	c #FAFDF8",
+"~|	c #99C7F1",
+"{|	c #097FF8",
+"]|	c #9DCDEF",
+"^|	c #087BFD",
+"/|	c #FBFBF8",
+"(|	c #FFFCF7",
+"_|	c #3C99ED",
+":|	c #077DFD",
+"<|	c #0D81F4",
+"[|	c #B8DDF4",
+"}|	c #E3F1F9",
+"||	c #1584F3",
+"1|	c #C0DCF2",
+"2|	c #44A0F2",
+"3|	c #70B4F1",
+"4|	c #60AAEF",
+"5|	c #73B2E6",
+"6|	c #A3D1F0",
+"7|	c #E8F6FB",
+"8|	c #3C98EB",
+"9|	c #1585EE",
+"0|	c #B7DFF3",
+"a|	c #3E9CED",
+"b|	c #71B3E7",
+"c|	c #62ADE9",
+"d|	c #C1E1F4",
+"e|	c #0E80F4",
+"f|	c #107EF4",
+"g|	c #E1F4FB",
+"h|	c #238DF0",
+"i|	c #057EFF",
+"j|	c #77B4EC",
+"k|	c #8BC3ED",
+"l|	c #0A7FF0",
+"m|	c #0A83F5",
+"n|	c #5BA6E8",
+"o|	c #E8F7FC",
+"p|	c #3C9BEF",
+"q|	c #067EFB",
+"r|	c #1483EE",
+"s|	c #FCFAFA",
+"t|	c #449DEC",
+"u|	c #077DF8",
+"v|	c #3291EE",
+"w|	c #ECF9FC",
+"x|	c #FCFCF7",
+"y|	c #AED9F4",
+"z|	c #0B81F1",
+"A|	c #D8EEF8",
+"B|	c #79B8F1",
+"C|	c #077EFC",
+"D|	c #EEF6F9",
+"E|	c #B9DCF3",
+"F|	c #0883F6",
+"G|	c #0481F6",
+"H|	c #7BB7F0",
+"I|	c #FDFDF6",
+"J|	c #8ABFF0",
+"K|	c #0782F5",
+"L|	c #1082EE",
+"M|	c #A7D4F3",
+"N|	c #DBECF8",
+"O|	c #2B8FF0",
+"P|	c #2F92EB",
+"Q|	c #E9F6FC",
+"R|	c #B2DBF2",
+"S|	c #45A0ED",
+"T|	c #047DFD",
+"U|	c #1386F3",
+"V|	c #C3E0F5",
+"W|	c #E1F2F8",
+"X|	c #248AF0",
+"Y|	c #222222",
+"Z|	c #EFF7FB",
+"`|	c #3494EC",
+" 1	c #87C1EA",
+".1	c #7EBBED",
+"+1	c #F7FFFC",
+"@1	c #87BCEE",
+"#1	c #0780FA",
+"$1	c #1182EF",
+"%1	c #ADD6F1",
+"&1	c #DAEBF6",
+"*1	c #298FF3",
+"=1	c #2C91F0",
+"-1	c #DBEDF7",
+";1	c #1084F4",
+">1	c #ADD8F1",
+",1	c #EEF9FA",
+"'1	c #4BA1EC",
+")1	c #91CAF1",
+"!1	c #5FAAEC",
+"~1	c #3593EA",
+"{1	c #686868",
+"]1	c #BADEF5",
+"^1	c #0E86F7",
+"/1	c #0C7EF0",
+"(1	c #A5D4F4",
+"_1	c #F4FCF9",
+":1	c #60AAF0",
+"<1	c #83BCEA",
+"[1	c #FFFFF9",
+"}1	c #7EBAE9",
+"|1	c #0480F6",
+"11	c #0E85F4",
+"21	c #B0D8F3",
+"31	c #D0EBF9",
+"41	c #268DF0",
+"51	c #4CA0EB",
+"61	c #0F84F1",
+"71	c #AAD7F1",
+"81	c #FDFBFE",
+"91	c #F0FAFA",
+"01	c #4CA4ED",
+"a1	c #66ABEC",
+"b1	c #F8FDFA",
+"c1	c #0680FA",
+"d1	c #1483F1",
+"e1	c #82BCEA",
+"f1	c #1183F4",
+"g1	c #C8E3F3",
+"h1	c #F2FCFC",
+"i1	c #3896EF",
+"j1	c #0880F9",
+"k1	c #8ABFEE",
+"l1	c #F9FEFB",
+"m1	c #F9FFFB",
+"n1	c #79B9EC",
+"o1	c #0980F3",
+"p1	c #1086F4",
+"q1	c #B7DAF1",
+"r1	c #D3E8F7",
+"s1	c #258BED",
+"t1	c #2A8CE7",
+"u1	c #D0ECF8",
+"v1	c #EDF9FD",
+"w1	c #4BA4EF",
+"x1	c #087EFA",
+"y1	c #0E82F2",
+"z1	c #A4D3F2",
+"A1	c #FBFAFA",
+"B1	c #53A6EC",
+"C1	c #459EEB",
+"D1	c #BBDCF2",
+"E1	c #1183F1",
+"F1	c #F5FAF8",
+"G1	c #53AAEE",
+"H1	c #E7F6F8",
+"I1	c #4298ED",
+"J1	c #0882F3",
+"K1	c #FEFEF6",
+"L1	c #F4FCFB",
+"M1	c #78B5F0",
+"N1	c #1685EE",
+"O1	c #B8DCF3",
+"P1	c #CEE6F6",
+"Q1	c #208BF0",
+"R1	c #248DED",
+"S1	c #D3E9F7",
+"T1	c #F1FAFD",
+"U1	c #51A6EF",
+"V1	c #A1D2F2",
+"W1	c #FFFDF7",
+"X1	c #5CA7EC",
+"Y1	c #3C98EC",
+"Z1	c #D8EDF8",
+"`1	c #278DF7",
+" 2	c #F9FBFC",
+".2	c #E5F2F6",
+"+2	c #3193EC",
+"@2	c #EEF7FA",
+"#2	c #A6CEEE",
+"$2	c #F4FDFC",
+"%2	c #75B3ED",
+"&2	c #1885ED",
+"*2	c #BCDEF3",
+"=2	c #C7E6F7",
+"-2	c #2289EF",
+";2	c #218CF0",
+">2	c #CEE7F6",
+",2	c #59A6EB",
+"'2	c #9CCEEF",
+")2	c #F8FBFA",
+"!2	c #F2FAFB",
+"~2	c #86BEEC",
+"{2	c #E6F3F8",
+"]2	c #E8F7FA",
+"^2	c #288CED",
+"/2	c #3D95EB",
+"(2	c #2087EE",
+"_2	c #499CE7",
+":2	c #6EB0E7",
+"<2	c #1687F1",
+"[2	c #BDE1F7",
+"}2	c #C4E4F6",
+"|2	c #1D8BF0",
+"12	c #CEE7F4",
+"22	c #5DA8EB",
+"32	c #9ACEEF",
+"42	c #FBFAFD",
+"52	c #EDF7F8",
+"62	c #1E89F1",
+"72	c #DAF1FC",
+"82	c #C7E6F4",
+"92	c #0A7EF3",
+"02	c #B3D6F0",
+"a2	c #67ACEC",
+"b2	c #1487F2",
+"c2	c #C3E2F4",
+"d2	c #C7E3F5",
+"e2	c #1E88EC",
+"f2	c #59ABEF",
+"g2	c #0981F6",
+"h2	c #95CBEF",
+"i2	c #8AC0E9",
+"j2	c #1D8AEE",
+"k2	c #CBE5F5",
+"l2	c #ACD3F2",
+"m2	c #1781EB",
+"n2	c #FDFFF8",
+"o2	c #65AAEE",
+"p2	c #C9E5F5",
+"q2	c #C5E0F4",
+"r2	c #1988EF",
+"s2	c #C8E4F7",
+"t2	c #F8FDFF",
+"u2	c #60AFEF",
+"v2	c #087DF6",
+"w2	c #91CAF2",
+"x2	c #1881EA",
+"y2	c #CEEAF7",
+"z2	c #6DAAE2",
+"A2	c #1F89EC",
+"B2	c #BBDFF6",
+"C2	c #1885EF",
+"D2	c #1888F0",
+"E2	c #C0E1F4",
+"F2	c #69B0EC",
+"G2	c #98C8EB",
+"H2	c #C7E3F1",
+"I2	c #FAFCF8",
+"J2	c #2890EE",
+"K2	c #218CEE",
+"L2	c #C9E8F8",
+"M2	c #1485F2",
+"N2	c #1787F0",
+"O2	c #C0DFF2",
+"P2	c #077FF8",
+"Q2	c #0481FA",
+"R2	c #3392ED",
+"S2	c #C4E1F5",
+"T2	c #B8D8F1",
+"U2	c #EAF6FB",
+"V2	c #67B3EF",
+"W2	c #067FF4",
+"X2	c #B7DBF4",
+"Y2	c #1586F0",
+"Z2	c #B8DEF4",
+"`2	c #70B6F2",
+" 3	c #0780F4",
+".3	c #69B1EC",
+"+3	c #EBF9FC",
+"@3	c #F7FAFA",
+"#3	c #BBDEF0",
+"$3	c #EDFBFC",
+"%3	c #4EA4F2",
+"&3	c #0A80F4",
+"*3	c #5DACEC",
+"=3	c #FBFBFA",
+"-3	c #B8DDF6",
+";3	c #288CEC",
+">3	c #D2E9F6",
+",3	c #B6D8F3",
+"'3	c #1385F2",
+")3	c #74B7ED",
+"!3	c #3D96E5",
+"~3	c #C3E4F6",
+"{3	c #54A6EE",
+"]3	c #087EF8",
+"^3	c #A0C6E8",
+"/3	c #228CEF",
+"(3	c #F0FBFB",
+"_3	c #E2EFF6",
+":3	c #ADD7F4",
+"<3	c #0F82EF",
+"[3	c #1184F1",
+"}3	c #B0DAF3",
+"|3	c #268AEE",
+"13	c #0481F8",
+"23	c #0B7FF1",
+"33	c #B5D7ED",
+"43	c #93C7EE",
+"53	c #63ADEB",
+"63	c #E1F0F6",
+"73	c #AAD4F2",
+"83	c #1183EF",
+"93	c #B1D8F0",
+"03	c #ECF7F9",
+"a3	c #5FA6E5",
+"b3	c #1785F2",
+"c3	c #A1D0F1",
+"d3	c #FFFCFB",
+"e3	c #D4EBF8",
+"f3	c #3998F2",
+"g3	c #DBEDF6",
+"h3	c #0D84F4",
+"i3	c #ABD5F1",
+"j3	c #7DC0F2",
+"k3	c #4C9EED",
+"l3	c #D8ECF5",
+"m3	c #2D2D2D",
+"n3	c #F3FBFB",
+"o3	c #92C2EF",
+"p3	c #3E97EB",
+"q3	c #DBF1FA",
+"r3	c #FEFEF7",
+"s3	c #FFFBFE",
+"t3	c #A5D0F1",
+"u3	c #0C82F5",
+"v3	c #AAD5F3",
+"w3	c #8FC2EC",
+"x3	c #9BCBF0",
+"y3	c #A0D0F1",
+"z3	c #0980F1",
+"A3	c #A3D2F1",
+"B3	c #9CCCF0",
+"C3	c #0D80F1",
+"D3	c #9CD1F4",
+"E3	c #97C9F1",
+"F3	c #087FF6",
+"G3	c #9FCFED",
+"H3	c #FEFAFB",
+"I3	c #EFF7FA",
+"J3	c #6FB2E6",
+"K3	c #057FFD",
+"L3	c #1B86F1",
+"M3	c #69B0EE",
+"N3	c #D6ECF5",
+"O3	c #E7F8FD",
+"P3	c #9DCBED",
+"Q3	c #439BEF",
+"R3	c #1083F3",
+"S3	c #50A3EF",
+"T3	c #99CBEF",
+"U3	c #DCEDF7",
+"V3	c #95C5F1",
+"W3	c #54A7F2",
+"X3	c #1380EC",
+"Y3	c #077EF5",
+"Z3	c #047EF7",
+"`3	c #1D8AED",
+" 4	c #56A8EF",
+".4	c #A3CDEF",
+"+4	c #C4E2F4",
+"@4	c #8AC3F3",
+"#4	c #5BABED",
+"$4	c #3092EF",
+"%4	c #1482F8",
+"&4	c #0680F5",
+"*4	c #1184F3",
+"=4	c #3093EC",
+"-4	c #99CBF0",
+";4	c #C6E1F0",
+">4	c #CEE3F1",
+",4	c #95C5EE",
+"'4	c #8CC6F4",
+")4	c #60ABE9",
+"!4	c #58A7EA",
+"~4	c #59A7EA",
+"{4	c #54A8F0",
+"]4	c #6EB2EC",
+"^4	c #90C6F4",
+"/4	c #B2DAF4",
+"(4	c #CCE3F0",
+"                                                                                                                                                                                                      . . +                                                                                                                                                                                                     ",
+"                                                                                                                                                                                                      @ #                                                                                                                                                                                                       ",
+"                                                                                                                                                                      + . $ $ +                   + % & * +                       . $                                                                                                                                                                           ",
+"                                                                                                                                                                      + . = @ +                   + - ; > ,                       ' )                                                                                                                                                                           ",
+"                                                                                                                                                                      + . ! ~ {                   . ] ^ ^ / $                 $ ( _ : $ .                                                                                                                                                                       ",
+"                                                                                                                                                                        + < [ } +                 + | 1 ^ 2 %                 . 3 4 5 6 +                                                                                                                                                                       ",
+"                                                                                                                                                                      + 7 8 ^ 1 9 .               0 a 1 ^ 1 b                 c d ^ ^ , .                                                                                                                                                                       ",
+"                                                                                                                                                + +                   + e f g 1 h i +           + j [ k l [ m + +         n o p l ^ 1 q +                 + +                                                                                                                                                   ",
+"                                                                                                                                                r -                     s [ 1 t u v w +       + 7 x y z A B C D $         E F 1 G ^ ^ H +               + $ $ & I                                                                                                                                               ",
+"                                                                                                                                                J K ' + + +           + L B M N O P & . +     + Q R S T U l [ V .     + + W X Y Z ^ ^ ` .             + . 6  .J +                                                                                                                                               ",
+"                                                                                                                                                ..[ +.@.% .             V #.$.%.&.*.4 s $ +   =.-.;.u >.,.'.^ ).7     . !.$.~.{.].^.^  ..           + $ /.(.1 C                                                                                                                                                 ",
+"                                                                                                                                                m [ k _.:.<.. +         ~ [.}.|.1.P 2.3.4.5.+ 6.4 2.7.8.9.0.a.2.b.n + c.d.e.f.g.h.i.j.k.l.      m.n.o.p.q.1 ^ r.                                                                                                                                                ",
+"                                                                                                                                                s.t.u.v.w.x.y..       y.z.4 A.B.C.D.E.F.G.H.$ I.[ a.J.K.L.M.N.O.P.Q.% R.S.T.U.V.W.X.Y.Z.`.       +.+++@+f ^ ^ #+                                                                                                                                                ",
+"                                                                                                                                                $+1 [.%+&+[.*+=++ +   -+[ ;+>+,+'+)+!+;+B ~+{+]+1 ^+/+(+_+:+<+[+f }+|+[ 1 1+2+3+4+5+[ 6+7+  + + 8+9+0+a+;+^ 1 b++                                                                                                                                               ",
+"                                                                                                                                                $+c+d+e+f+S.[ g+h+.   c [ S.i+j+k+l+m+R n+o+(.1 ^ p+q+r+s+t+u+v.u.v+> ^ ^.w+x+y+z+A+~.4 B+  + C+D+0+E+F+G+^ 1 H++                                                                                                                                               ",
+"                                                                                                                    + . + .                     I+1 J+K+L+M+N+[ O+P+. Q+^ R+S+T+U+V+W+X+Y+[.Z+[+`+ @.@+@@@V+#@$@%@&@R *@=@-@;@;@@@>@,@P '@)@!@z.~@{@]@^@/@^ 1 (@+                   + .                                                                                                                         ",
+"                                                                                                                    . . _@:@+                   <@[ [@}@|@1@2@3@4@t.|+& ^ J+5@6@7@k+8@9@0@B l a@b@c@8@d@e@f@g@h@E+i@j@k@l@m@;@;@n@o@p@q@r@s@t@u@u v@w@x@y@^ 1 z@.                   I V A@                                                                                                                      ",
+"                                                                                                                        B@[ C@D@+ .             E@2.F@G@x+H@I@J@O.a.1 K@^ L@M@N@O@P@r+Q@R@S@e.T@U@K.L.K.V@T+L.W@X@Y@Z@`@N@;@;@;@ #.#+#R+@#[+j.##$#%#t+&#*#^ ^ :@        . . . . =#-#d C@                                                                                                                        ",
+"                                                                                                                        ;#[ [ [ >#,#            $ [ t.'#)#V+l+!#~#*.^ ^ ^ G {#N@]#^#/#(#_#:#<#[#}#|#g@1#2# #3#4#5#6#7#8#9#;@;@;@ #0#a#R+b#n+c#d#e#t+V@8#f#^ ^ :@        + $ g#>#8 4 [ h#                                                                                                                        ",
+"                                                                                                                        % i#l f j#k#l#m#n#o#    % k %@p#q#|#r#6@s#t#u#v#w#x#y#H@z#A#B#k+_+C#D#E#F#@@G#H#I#H@J#K#L#M#N#3+3#O#P#O@Q#R#S#T#[ U#V#W#X#L.V@Y#Z#^ ^ w . . $ % `# $q@[@L@^ .$6                                                                                                                         ",
+"                                                                                                                        + +$n+@$w##$$$&+%$&$*$  % i#w#=$-$L.;$_+>$B#,$'$f )$!$t+~${$]$L.V@m@^$/$y+($_$:$<$r+[$V+}$|$1$t+2$3$4$5$V+6$7$[ 8$9$0$l+k+k+@@a$Z#^ ^ .   y.] g+t.b$c$d$e$^ j $                                                                                                                         ",
+"                                                                                                                        . c f$g$'$h$i$j$k$l$m$n$o$K J+p$q$r$s$e@3#V+t$u$v$w$K.y+x$y$z$A$k+4+B$($C$D$E$B F$G$f@J#P@@@_+H$I$J$K$L$M$d@N$O$P$Q$n@3#R$k+k+S$T$^ 5 U$V$W$1 ^ X X$Y$Z$2.4 `$.                                                                                                                         ",
+"                                                                                                                        + .  %Z+$..%+%@%#%n+2.q@$%%%&%*%=%M$k+-%_+;%y+C$>%,%_+V+'%)%S.!%~%($s+;%(${%e.E+p@]%l+^%V+_+/%(%0+_%:%5$<%[%}%|%1%<%r#2%]#r+V+3%4@^ 4%5%~.[ v.L@6%7%8%}.E+5 U$.                                                                                                                         ",
+"                                                                                                                            9%$.#.0%a%b%c%d%e%f%1 u.k 2.g%h%[%i%j%k%@@5$3#r+V+k+l%m%~@n%o%y+V+l+p%q%*.l g r%s%y+s+t+t%u%w#4 v%J#J#3#C$w%t+x%y%z%($z+A%B%C%L@f D%E%e.F%G%H%X#I%J%4 _@+                                                                                                                           ",
+"                                                                                                                            e K%F.L%M%|#U+N%O%d%6+k P%Q%R%m@S%T%U%V%W%[%(#r$<%X%Y%R Z%`% &.&K.|#+&@&f ^ ^.#&$&Q#%&&&*&d$1 4 =&C$;@C$<%_#l+-&;&>&[$<%@@,&6#f Z+'&)&!&~&<%{&4#]&^&2./&                                                                                                                            ",
+"                                                                                                                            (&_&l :&<&Q#C$|#[&}&|&1&2&3&4&5&6&7&[ R 8&9&0&s+a&y+b&^&G j#c&d&e&a$f&R ^ ^.^ U#g&5&h&i&j&k&i@#.l&)#5$k+<%m&n&o&k#p&V@q&5$l%r&Z$s&t&u&v&y+6@_+w&x&J+y&$                                                                                                                             ",
+"                                                                                                  + o$6 + +     +   +       n#z&Z+A&B&x%J#r#y+5$f@C&D&E&F&G&K.H&I&J&J%K&L&M&N&Y#O&P&i@&%g [+Q&R&S&l ^ ^ T&x&U&V&W&t.X&Y&'&,@Z&`&V@<% *.*+*t.2.@*<%s$6$#*$*%*&***K#L.L._+[$=*#%[.-*.     +   + + + + + + 6 o$                                                                                                    ",
+"                                                                                                + $ ;*5 >*,*'*@ $ . +       . ' )*^ !*~*@@<%{*Q@]*y+;%t$^*/*5$(*_*f :*<*[*}*2%|*1*m%^ ^ ^ M o&2*~.L@^ ^ ^ 3*#%4*5*e$^ ^ ^ &@6*7*($8*9*[@b#n+f 0*l+B$<%a*b*/#[&c*V@;@@@k+d*e*f*g*h*.     . $ $ $ h+9 B@i*j*k*                                                                                                    ",
+"                                                                                                  + . l*[ 1 1 [ m*I.n*o*p*+ . . q*1 X&r*J#<%3#S$H@q+[$<%9#x+m@s*t*f 1 n+u*v*:#w*I&x*^ ^ ^ &@[@q@[@T&^ ^ ^ e$f f$f$c+^ ^ ^ 1 +*y*z*A*q@&%Y&^.B*C*@@Q@X#4+D*[$6&E*F*_+<%n@G*H*I*J*(&$ + K*o*L*I.M*[ 1 [ 4 N*y.                                                                                                    ",
+"                                                                                                    + p*O*^ ^ ^ ^ ^ 1 4 8 P**+Q*= [ R R*S*5$[&T*U*V*_+H@ #k+W*X*Y*J%g ^.L@6+Z*`* =[.^ ^ ^ :*Y&1 &@L@^ ^ ^ .=+=d$'&c+^ ^ ^ c#~@@=#=$=Y&&%L@c+%=&=J#[%k+r$'+*===-=8#x+Q@2%;=6#;+>=,=*+P*d 4 [ ^ ^ ^ ^ 4 > '=.                                                                                                     ",
+"                                                                                                      + )=1 l n+M '.j.!=j.k 6#X&1 k k ~={=]=1$^=/=(=_=:=<=H@K.K.[=[@b#T&^.&%X&}=c#^ ^ ^ ^ ^ b#c+l ^ ^ ^ ^ v.:*|=g ^ ^ ^ ^ 1=R Z 1 L@L@R+u.~@2=3=y+a&V@4=5=6=t.7=y+C$@@8=9=0=R k &@[ J%N J%`%f a=^ ^ 4 b=+ +                                                                                                     ",
+"                                                                                                        . c=k d=e=f=g=h=i=j=k=:&l=J+f Y m=]=[%n=o=O.p=q=r=s=t=|#u=&+^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ c+v=w=x=Q#y=z=A=x&B=+*C=L.D=5&E=F=&@&%n+[+G=H=I=J=K=L=M=c+^ b+$                                                                                                         ",
+"                                                                                                        + , N=R #%O=P=Q=R=S=T=U=V=W=X=Y=Z=`=k+_+ -u@.-x*&@P%+-@-#-;.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^.f $-%-&-*-6+f [ =---;-<%k+8#>-0=,-'-)-!-~-{-]-C$^-/-(-l > /.+                                                                                                         ",
+"                                                                                                        + $ _-N N+M+:-3#;%H@Q@l+<-[-}-|-1-2-X%X%3-,@'&t f ;+4-f*5-F@^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^.J&6-7-,@$=~@L@;.O.8-]=(+y+9-0-a-b-c-q+{*[%m@5$G&d-e-p@4 Q*$ .                                                                                                         ",
+"                                                                                                          + f-g-f :*h-i-n@k+K.@@J#H@[$C$x+r$J#j-k-l-g g R+:*m-v.1 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ g e$v.J+^.c+^.~@n-o-z+L.W*r#k+r+@@V+x%@@@@L$k+p-q-4 U#r-y.  +                                                                                                         ",
+"                                                                                                              s-t-^ u-v-5&5&w-x-3+<%k+ #;@L$(#k+y-z-T&^ ^.c+^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ i@A-&*v&l+k+w%5$z+6&V@<%B-C-P@D-E-<#*@F-G-$                                                                                                             ",
+"                                                                                                              + b [ H-I-J-k+{*<%K-L-M-N-O-1%s+r+x%P-T#&@G Y&^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ w#Q-r$R-S-(+5&T-U-V-W-X-Y-r#3#Z-`-:&f* ;.;                                                                                                              ",
+"                                                                                                                $ *+X&+;@;#;$;_#%;a#&;*;=;-;;;>;,;';);S !;e$^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ *-~;{;];^;/;$-(;_;:;<;{&;$y+[;};l J+|;H.                                                                                                                ",
+"                                                                                      . . + + + + + . . . + + + + =+1;P&S.2;3;J#R-4;<#E+~@.-b#5;6;7;8;9;L@1=^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 0;a;b;c;~@d;e;~@,@f;;-V+5$[$g;h;q@d i;. + + + + + + + + + + + + . +                                                                                     ",
+"                                                                                    + j;k;k;k;k;k;k;k;k;j*l;l;l;l;.$P m;P n;o;[%p;q;r;G=u.[ g ^ O s;t;u;G J+^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ l v;T&^.1 y :*w;x;y;1$_+3+z;A;B;P ]+.$C;l;l;l;K@k;k;k;k;k;k;k;k;j;+                                                                                     ",
+"                                                                                    + . D;a [ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ x*3*`%a@E;F;($5&G;H;f n+T&L@t E.u.G :*Y&^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^.L@L@c+b#d=&@I;J;6$5$_+K;L;v;+*^.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 4 M;$ +                                                                                     ",
+"                                                                                      . $ N;J ^ ^ ^ L@B*O;p#P;P;P;P;Q;R;S;T;U;V;W;@@v&X;R 1 L@Y;Y&1 J+^.g v.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1=1=^.b#1=w#t.Z;X#5&w%k+`; >.>+><+P;P;P;@>@>P;#>$>L@^ ^ ^ a %>. . .                                                                                     ",
+"                                                                                        + . &>)*[ ^ *>=>->6&3+x+x+x+;>F#C$R-x+<%5$5$1%>>,>J%e$^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [@'>)>!>[%@@5$B$r+~>3+Y#x+x+x+x+X#t$X#{>]>^>Y&P&d ;*                                                                                            ",
+"                                                                                          . $ />(>^ l _>:>6$<%;@;@;@;@V+C$5$m@w%w%n@[&Q@<>[>^.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ R }>|>v&X%W*r$s$;$1>@@@@ #;@;@;@_+A%Q$2>3>q@f 4>6.+                                                                                             ",
+"                                                                                              . @ 5>6#d$6>7>Q@;@;@;@C$1$8>|#y+[%[%[%9>0>a>b>^.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [+c>d>e>f>g>Q@V@Y#@@h>i>n@;@;@;@j>k>l>m>@$n>o>p>                                                                                                ",
+"                                                                                            + . . e q>d$[.r>s>Y#@@;@@@t>u>v>w>x>y>z>A>B>C>D>^.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ c+c+^ ^ Y;1=^ c+^.^.1=1=e$e$e$e$:*L@^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ &@E>F>G>H>I>J>K>L>M>N>O>3#m@ #m@6&P>Q>k &@y&R>S>                                                                                                ",
+"                                                                                                + . e 5%1 ^ T>U>V>V+k+~%W>A.1 l ~@~@g ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ g g ^.^ T&1 E.w#D%T&c+L@u.w#w#&%[+1 1=Y&^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ g T&w#n+2.}.X>Y>Q#@@(+2%Z>`>D%:*r.p*                                                                                                    ",
+"                                                                                                + + + o$q*1 &@f* ,.,<%Q@+,@,&.k x*f b#^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^.^ 1 ~@c#<*g ~@X&L@l g g g c+Z+k$:*+=^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ e$#,F.;+U#$,%,t+;%<%W+&,*,=,M -,;,+                                                                                                     ",
+"                                                                                                        w >,B <*,,',),C$Q@9.!,~,'.&%^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 *.G={,+#],^,/,(,_,:,<,<,<,*,[,R+n+^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ Y;:*},|,1,2,5$ #/*3,4,5,w#L@6,7,                                                                                                        ",
+"                                                                                              +   + 8,9,0,a,b,g i@c,d,T-[%X%e,f,g,B 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ c+^ e$^ ^ L@1 [.1 t.T#'.[ =-Z*h,i,j,k,l,m,8#B#Y>n,n,o,p,q,l |=Z+,,r,y ~@=,1 L@^.g ^.c+^ ^ c+1=^ ^ ^ ^ ^ ^ ^ f j.s,t,t$6@<%a&u,v,%@R l ,@w,x,y,z,8,A,+                                                                                               ",
+"                                                                                              % =+&>j B,c,C,D,j#R E%E,F,b%G,k+t+H,I,Y;^ ^ ^ ^ ^ ^ ^ ^ ^ ^ g x*g Y;Z%b#Y&J,K,L,M,N,O,P,{@Q,R,+,s+X%r#;@;@;@n@@@[$C$]*S,g T&T,U,V,W,X,Y,Z,a@Y;&%L@Y&g ^.^ c+^ ^ ^ ^ ^ ^ ^ d$Z.`,;-y+@@w%5& 'i$m%&@n+v.x&Q%.'+'@'#'$ .                                                                                             ",
+"                                                                              . + + + + - $'Q r-1 1 ~@O ;+4 %'&'*'='-';'t$[%[$r+>','g ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^.2.&@X&i.''7=)']-C$Q@Q@S*!'5;&+~'{'L.q&]#;@;@;@;@**5$$;]'^';+f /'('t+S-8#_':'<'['}'+*;.l ^ ^.^.^ ^ ^ ^ ^ ^ ^ [@'.|'1'2'C$k+L.3'4'5'6'7'5;O.+*j$F.n+[+8'9'0'A@+ . . + + +                                                                             ",
+"                                                                              $ a'b'b=c'5 4 1 ^ ^ ^ M %'d'e'f'g'Q=H@r#K.n@h'C#i'j'k'1=^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^.<#l'm'n']-[&k+<%5$x+o'p'q',@r'2.s'^-Q# #;@;@;@@@C$w%t'u'r,&+d$v'w'x'<%m@1%5$O-C&y'z'A'B'1 g ^ ^ ^ ^ ^ ^ ^ ^ [+'&[ C'D'E'[%<%k+Q#t+X#F'G'H'I'J'6+Y;^.^ ^ 1 K'c'L'0 { $ +                                                                             ",
+"                                                                              . H+J [ [ [ ^ l p$M'N'O'P'Q'K.y+ #O@5$_+{*@@R'S';.E.f ^.^ ^ ^ E.j#J+b#Q%B q@T'U'V'C$r#W'3#B#X'Y'Z'`'r> )[,.)[ +)@)#);%V+Q@r+r#y+$)%)0+0=O J%U#G=&)*)=)-)Q=;)x%Q@C$>),)')))k &@m%1 g ^ ^ ^ :*|=e$u.!)~){)y+V+ #C-_+3#])<%+,^)/)()_)i.&@J+1 [ [ [ 9'.                                                                               ",
+"                                                                              . + b'c'4 [ ^ l :)<)[)<-3#@@r+8#@@B$;@O@})];|)l ^ ^ ^ ^ ^ ^ ^ &%n+u.u.h;1)2)3)**4)H@X#5)6)7)8)t.6+:*e%9)L>0)F.P&o+,>a)b)c)d)e)f)g)h)m%P&i)j)k)0)Y&f$p=l)m)n)o)~$k+[%i>~&p)q)#.H-w#$=^ ^ ^ ^ ^ ^ ^ r&r)s)t)s+Q@(#0&;@<%C$V+y+6$F#u)v)c#n+1 4 c'w)w $ +                                                                             ",
+"                                                                              + +     !.W$[ t.w;u@x)y)%,3#V@_+k+J#y+t$z)A)E.^.^ ^ ^ ^ ^ ^ ^ ;+'.f$B)C)%,y+**Q#D)E)F)T#G)x&J%H)I)J)K)L)M)N)v*t.Z%i@m-O)P)Q)R)p=S)Z+[ E,T)U)V)W)X)Y)Z)h)`%[+`) !.!+!1%s+x+@!#!$!0+[.^ ^ ^ ^ ^ ^ ^ f [+Y.l&%!&!6&w-@@{&$;k+*!=!-!+#;!q@;.>!N;+                                   . + . .                                           ",
+"                                                                                      . $ Q+,!x*#$'!)!!!~!8#k+;@@@x@{!]!^!l ^ ^ ^ ^ ^ ^ ^ ^ #./!(!_!G&W'r+:!<![!B'}!<#|!1!2!3!v&e,Q@5&6@U)4!O;~@Z+j#3*w;&@[ :*1 m-5!6!q+|#L.8>5&;>7!8!9!0!m-[.*.a!b!c!k+M$l+d!e!=$^ ^ ^ ^ ^ ^ ^ g :*[+P f!g!a&_+k+3#Q#h!i!e%j!k#F=k!l!m!. +                                   + y.A@.                                           ",
+"                              + . + $ n!o!p!q -+. . .                                       =.b=q!4 ~@A&r!s!t!y+u!v!w!^.e$^.^ ^ ^ ^ 1 :*X ;!x!y!y+k+5$z!A!B!~.C!D>D!E!F!+@[%m@O@@@O@n@;@V+1$G!H!I!p@E+e;m-J!)!K!L!M! #m@;@;@;@;@]#;@;@_+N!O!P!Q!`%*.R!S!T!X#;$Y#U!x!u Y@&@u.T&~@b#c+^ ^.l *-V!]=N@W!X!Y!c+^.;.K@Z!6 `!                                        =#: ).*+ ~$ . +                                   ",
+"                                . <@.~[ 4 [ 1 K@#+k*{++                                       . +~H+@~w#~@#~$~%~&~*~T&^ ^ ^ ^ ^ ^ ^ '&k =~-~;~3#<%9.>~,~J!'~)~!~~~{~<%;%]~1$;@;@;@;@;@;@;@m@5$^~/~(~_~:~<~[~}~/~|~O@;@;@;@;@;@;@;@;@;@;@@@9#B#1~4,2~B;B'3~4~2%5~B$6~7~8~[ J+D%9~L@^ ^ ^ l ~@0~a~b~c~T@[ ^ a j @ . +                                           6 t-[ [ J b+&>$                                   ",
+"                          + % d~e~C ^ ^ ^ ^ ^ ^ ^ ^ ^ f~g~h~;,. $ + $                               i~j~N k~l~t l$r&c+^ ^ ^ ^ ^ ^ ^ F.m~n~H@[%F#|%o~p~q~B*r~s~x+q&Q#<%])a&;%;@;@;@;@;@;@;@[%[%;@V@1$5$B$]);$<%8@r$;@;@;@;@;@;@;@;@;@;@;@@@<%7@7@{&t~u~v~e.n%w~x~C$[%y~z~A~B~'&^&g ^ ^ ^ &@E.G A&5;^&C,$$C~=#                          + . . $                 . D~1 ^ ^ ^ [ 8'E~- . +                           ",
+"                          I I.[ [ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 [ [ [ F~} 0'(                               G~H~I~J~f$c#J+w;b#^ ^ ^ ^ ^ ^ ^.K~L~M~V@N~O~(=p=A.P~Q~~$y+m@k+O@L.P@s+L$;@;@;@;@;@;@;@O@3#[%V+_+k+ #Q@t+O@Q@V+;@;@;@;@;@;@;@;@;@;@;@O@1%V+r$(+N@G&R~S~p@Z+0!T~[;;%v&U~V~&+:*^ ^ ^ ^ [@<*b#J+2.1 W~X~$ .                             ( /&-++               . q ^ ^ ^ ^ 4 [ 4 Y~p!@                           ",
+"                  + $ I Z~8 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ ~ w .                               `~ {[ ^ ^ ^ ^ ^ ^ ^ 1 [@u@.{;~Q@l++{@{0+~._)#{x@t+_+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@r$y+C$a&[%n@ #X%L$@@W* #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@ #]-${%{6#p$&{*{x+6&={-{;{R+J+n+Y&^ ^ ^ ^ ^ ^ b .                           + . I+M*4 9 +               + -+5 [ ^ ^ ^ ^ ^ ^ ^ J _@!.                      ",
+"                  7 >{8 [ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ [ Q+.                               ,{C;1 ^ ^ ^ ^ ^ ^ ^ 3*'{){D-[%3+!{x;`%~{{{]{<%^{S%m@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@J#_#($L._#/{({_{:{[$O@<{k+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@5$q+[{}{|{))1{2{K.3{X*4{5{9~n>n+^ ^ ^ ^ ^ ^ C;#                           + U$f~[ 4 D~+               + $ 6{[ ^ ^ ^ ^ ^ ^ 1 ^ 7{N;                      ",
+"                + 8{^ ^ ^ ^ ^ ^ ^ 1 4 f~Q I.$%4 [ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ Y~K*                          + 9{0{^ ^ ^ ^ ^ ^ ^ ^ ^ 6#a{S-{&2%b{M+;!c{d{e{|#<%f{m@**;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@H@g{h{i{j{e-k{l{m{n{o{;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@w%R-C$p{q{r{s{t{u{G&6&Q=v{w{9~u.^ ^ ^ ^ ^ ^ [ y&+~.                       + x{1 ^ [ C;K*                  & 4 ^ ^ ^ ^ ^ ^ [ >,+~.                       ",
+"                . t-^ ^ ^ ^ 1 1 ^ C;y{a'. + ( D z{A{^ 1 1 ^ ^ ^ ^ ^ ^ [ B{                        + U$m 1 ^ ^ ^ ^ ^ ^ ^ c+C{D{E{_+F{G{o&#&H{I{r+y+Q@r#z+P@m@;@;@;@;@;@;@;@;@;@;@;@;@W*;@5$l+J{K{O.#.6#0=J%F.B~f+L{X'm@;@@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@]#]#5$|#K#M{);6#N{O{-%3#P{_~U#R+c+g b#L@^ ^ [ [ _ + +                     - 7{^ ^ 1 1 |++               + A{1 ^ ^ ^ ^ ^ $%h#$ + +                       ",
+"                D [ ^ ^ ^ 1 4 5 (@7 $ +           . o$Q{R{r.C ^ ^ ^ ^ [ a @..                   + $ Q*4 1 ^ ^ ^ ^ ^ e$:*e%S{F#n@T{U{4 V{W{X{m@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@]#R$V+Y{Z{`{ ]w#H-#.q@k j.Y&:&#,.]+];@y+ #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@5$B$@]#]S i)$]%]W'K#&]#=:*f X&6+^ ^ ^ ^ 4 a,% .               + $ *][ 1 ^ ^ ^ >#$             . K*).^ ^ ^ ^ ^ g+'                               ",
+"              + / 1 ^ ^ ^ 1 C;' $ + + +           + . . + . j;l;^ ^ ^ [ 1 C@a'                +   D@8 [ 1 ^ ^ ^ ^ ^ J+t.=]G&r+T{-];];.>]3)N@ #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@ #Q#($,]']k==-~=_*)]!]~]{]]]l k N 5#^]1%@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@w%V+[%/](]h)}._]:]X#1%u+*@6+&%R+^ ^ ^ ^ 1 J <].               + []d [ 1 ^ ^ ^ J }]% +         + <@^ ^ ^ ^ ^ ^ x{$                               ",
+"              + W$[ ^ ^ ^ 1 |].                               1]4 ^ ^ ^ ^ 4 '*              + $ =+d.[ ^ ^ ^ ^ ^ ^ ^ m%2]3]V@4]5]e.E,6]7]y+8]@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@]#H@_+9]R #,'>0]a]c)b]C$X-c]d]h;'.#%e]t+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@O@B$@@r$f]g]x&h]9$x+;%i]j]k]J+w#^ ^ ^ ^ ^ ^ g+=.              + l][ ^ ^ ^ ^ ^ [ [ m]w +       + / ^ ^ ^ ^ ^ 1 /..                               ",
+"            + , a 1 ^ ^ ^ 1 |++       + + p*n]+ + + .         - g+1 1 ^ ^ 1 K@n]              . o][ ^ ^ ^ ^ ^ T&l R p]q]@@|@r]s];!t]u]z+5$@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@r#;@v]w]j.%@A>x];$@@($O@C$6@y]z]s;m%A]B];@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@y+n@k+5$<%C]D]F@E]F]x+P#G]H]B J&^ ^ ^ ^ ^ ^ [ n*+ +       + + I]d 1 ^ ^ ^ ^ ^ 1 1 1 K A@.     . J]^ ^ ^ ^ 1 5 . +                               ",
+"            $ ] ^ ^ ^ ^ ^ ^ 9{+       + $ R.d A{(@<@%         . <]8 [ ^ ^ ^ ^ m].           + /.4 ^ ^ ^ ^ ^ c+G q@K]L]K#y~M]N]5{O]P]O@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@X%n@7*+)`%B'Q]y+O@;@;@;@<%[&Q#R]c#v.E]S];@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@X%r#T]U]6#V]W]G&K.X]Y]E+c+^ ^ ^ ^ ^ 4 ).=#.         . Z]4 1 ^ ^ ^ ^ ^ ^ ^ 1 4 F~@.+   `]Y~^ ^ ^ ^ 4 *+                                  ",
+"            $  ^^ ^ ^ ^ 1 y&. +       . A@> 1 1 1 [ i#+       + + n$1 ^ ^ ^ ^ 8 i;        + % (.1 ^ ^ ^ ^ ^ g 5;.^+^H@V@@^#^N+$^y;h%w%;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@r+%^$$0+`>&^[%;@;@;@;@m@x+[%*^=^T&0+-^;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@W*[%[%;^>^q~,^'^1%[&)^!^c+^ ^ ^ ^ ^ 1 1 #+w       + c )*1 1 ^ ^ ^ ^ ^ ^ ^ 1 1 1 ).] + ,{1 ^ ^ ^ ^ 1 z@                                  ",
+"            a'7{^ ^ ^ 1 [ & $ +       + o*1 ^ ^ ^ 1 ~^            =.C;^ ^ ^ ^ 4 `$      + . y{[ [ ^ ^ ^ ^ ^ ~@;!{^3+h%]^^^c,/^(^@@_^;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@B$y+:^P%k <^[^B$W*;@;@;@m@V+1%}^B=&@C{|^;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@W*J#r+O@1^U.F.2^3^(+4^5^^.^ ^ ^ ^ ^ ^ ^ [ 9       + B{[ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ]+Q*%>[ ^ ^ ^ ^ 4 #                                   ",
+"            6^1 ^ ^ ^ 1 4 q +         . B@1 ^ ^ ^ [ 3             @.C ^ ^ ^ ^ K',         - O*1 ^ ^ e$^ |=1=B 7^8^V@9^0^Z$a^b^ #@@ # #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@B$;@c^d^@$5;e^y+a&R$C$O@B$f^Y#g^n+X&}'h^;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@k+B$w%5$6$i^j^4 k^X#;$u,l^m^$=Y&^ ^ ^ ^ 1 8'. +     E~1 [ 1 j*6{n^F~[ 1 ^ ^ ^ ^ ^ 1 1 d 1 ^ ^ ^ ^ m*.                                   ",
+"            o^[ ^ ^ ^ 1 $%-           % r.1 ^ ^ ^ 1 []            n$1 ^ ^ ^ ^ #+$         L*1 ^ ^ ^ n+D%L@^.<^p^6@q+q^P }'r^y+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@m@5~s^t^~@g u^v^v&w%B$**L.1%w^x^[@Z%y^z^;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@[%6&A^(-B^C^D^_+E^1+'&A&^ ^ ^ ^ ^ ^ D;.     []7{c=F^K*+ $ `]B@1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ >,.                                   ",
+"            G^1 ^ ^ ^ 1 H^+           # [ ^ ^ ^ ^ F~%         + . I^1 ^ ^ ^ ^ L'+     . -+Y~1 ^ ^ ^ L@J^^&#%K^L^[&M^N^+;O^P^n@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@Q^a$R^d$l 0+S^T^O-L$V+_+U^V^S.x*,@W^R-;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@n@5&X^Y^0+Z^`^V@ /./D,c$^ ^ ^ ^ ^ ^ F~+     + a'+   + +   + . n!(>1 1 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ n^$                                   ",
+"          =+K'[ ^ ^ ^ 1 E~+           z@4 1 ^ ^ ^ '@$ +       . C+.$4 ^ ^ ^ 1 c .   + $ ) ]+1 ^ ^ ^ ^ c#c&+/@/5&#/$/$.%/&/|#<%;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@O@V+R-*/=/~@Z*I*-/;/>/,/'/)/p=t.`%!/R'9#;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@O@+@l+~/,^$.{/]/<%^/// )^ ^ ^ ^ ^ ^ [ I+                      + =.r ]+^ ^ ^ ^ ^ ^ ^ ^ ^ ^ (/$                                   ",
+"        . }]1 ^ ^ ^ ^ [ _/+       + $ 8{^ ^ ^ 1 [ o*+         . q ^ ^ ^ ^ [ m*+       { 0{1 ^ ^ ^ ^ ^.c#T#:/8>Q#</Q!O.[/(+<% #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@;@J#}/|/k'5{d$m-x*c#1/^&(-J%2/3/@@s+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@w%;@y+4/N %'5/_#N@6/F.c+^.^ Y&^ ^ ^ 0{. +                       . N;(>[ 1 ^ ^ ^ ^ ^ ^ ^ #+;,+ +                               ",
+"        . >,^ ^ ^ ^ ^ 5%. +       + a'd ^ ^ ^ 1 $%U$          . B{^ ^ ^ ^ 4 7/        Q{[ ^ ^ ^ ^ ^ e$B=//8/|#9/0/Y@a/b/v&c/]#;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@Y#d/e/<#:&J^c#E.!;f/U#g/h/R-k+_+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@i/j/h;k/^~h%l/m/T&^ ^ ^ ^ ^ ^ [ $'+                       . $ n]Z~^ ^ ^ ^ ^ ^ ^ ^ 4 Y~n/.                               ",
+"        { M*^ ^ ^ ^ [ M;          + />1 ^ ^ ^ 1 I.+           { (>^ ^ ^ ^ [ D;        I.[ ^ ^ ^ ^ ^ j#p==]5$y+o/C!A.p/q/;@_+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@8#r/s/t/$@1+_%f*u/v/w/@@[%M$w%;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@_+x/0)J!y/z/N@A/;.1 ^ ^.^ ^ ^ 1 ! .                           + $ B/4 ^ ^ ^ ^ ^ ^ ^ ^ ]+Z~U$+                           ",
+"        @.[ ^ ^ ^ 1 [ <@          + ,*1 ^ ^ ^ 1 C/+            ~4 ^ ^ ^ ^ J '       []J [ ^ ^ ^ ^ ^ n+D/E/r$C&F/0=G/H/;%C$;@r$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@k+;@[%l+I/J/K/L/M/[;L$C$a&_+w%V@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@V@N/O/$.P/t$q+Q/R/B 1=c+^ ^ ^ 1 d +~                          + % $%[ ^ ^ ^ ^ ^ ^ ^ ^ [ 1 P*/.                          ",
+"        z{1 ^ ^ ^ ^ l;-           + W$1 ^ ^ ^ 1 (/+           x{[ ^ ^ ^ ^ >#.     $ S/^ ^ ^ ^.c+g ^.!;F]T/v&U/p@;!V/r+;@@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@5$1$J#k+B$B$W* #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%k+W/X/0+Y/J#D=Z/ )A&J+^ ^ ^ 1 [ S/$ +                       . &>1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 8 n$w . . `]}]! t-e +       ",
+"        K 1 ^ ^ ^ 1 B/+           @ 4 1 ^ ^ ^ F~{ +           i*[ ^ ^ ^ ^ $+.     $ >*^ ^ ^ 1=T&L@T&`/ (5&.(+(p=@(x%($;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@5$@@@@x+J# ##(B$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@r$J#C&$(t.%(F#3#&(*(k ^ ^ ^ ^ ^ [ >*. +                       + ! ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 4 H^h#e~.$4 4 [ =(+       ",
+"      C+J [ ^ ^ ^ ^ 1]+       + . -([ 1 ^ [ [ B@. +       + A@.$^ ^ ^ ^ 1 D .     =#C ^ ^ ^ 1=n+~@E+;(4^Y#>(&;~=,(K.;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@[&Q#y+n@5&[% #B$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@L$C$Q#'(w;N.)(@@2%!(l ^ ^ ^ ^ ^ ^ ]+~(+                       C+a ^ ^ ^ ^ [ {(o![ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 4 l;[]+       ",
+"      ( 0{[ ^ ^ ^ 1 .~+       + . s.4 1 ^ 1 4 :@+         + s ^ ^ ^ ^ ^ ).+ +     (@1 ^ ^ ^ ^ :*[+~.](9#|#^(O _>/(@@ #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@k+<%V@((_(:(<([(}(5$r+@@5$n@@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@X%V+w-/]|(F.1(b]R-2(3(J+^ ^ ^ ^ ^ ^ a,+                       -([ ^ ^ ^ ^ 4 I+y.Q+.$^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 [ 4(. +       ",
+"        w))*^ ^ ^ 1 ]+z@. +   + $ `]6.5(: [ j*o$          . M;^ ^ ^ ^ [ 6{        C@[ ^ ^ ^ ^ b#Z+6(7(T/8(9(G=0([%k+k+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@1%1%a(b(1+E.!;E.P ,^c(d(l+1$T/r+m@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@k+e(Z+A~f(V@g(v@[@^ ^ ^ ^ ^ ^ _ .                   + $ i*[ ^ ^ ^ ^ > ,     c.h(4 [ ^ ^ ^ ^ ^ ^ ^ ^ z.-           ",
+"        . 6{^ 1 ^ ^ [ > I +   + + . + + + C+D@+           a'(>^ ^ ^ ^ 4 Q+      s-)*1 ^ ^ ^ b#l l i(0&j(k(l(;.m(X%@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;%n(o(p(m^%@l=a.5{0+g*q(r(($_+k+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@s(Z$J!t({&~$u([+^ ^ ^ ^ ^ 1 ).A@                  . ' 8 [ ^ ^ ^ ^ B/+     + % E~8 1 ^ ^ ^ ^ ^ 1 1 z@+           ",
+"        . =+5 [ ^ ^ ^ 1 C@w                               I 4 ^ ^ ^ ^ [ o$    . D@^ ^ ^ ^ ^ 1=n+Z+v(5$V@w(1 x(c)C$t+<%;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@y(z(H-v.q@A(B(l{Z*C(#%c#D(2#V+k+ #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@E(F(A.G(H@6@J)a@^ ^ ^ ^ ^ 1 [ <]                  + a,1 ^ ^ ^ ^ ^ n^$         .  ~>*[ ^ ^ ^ ^ 4 d.=.+           ",
+"        . + Q+[ ^ ^ ^ ^ 1 a,+ + + + +               + + + z{[ ^ ^ ^ ^ (.$     . n*^ ^ ^ ^ ^ g G H(I([%2,J(+=K(k+X%;@W*;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@L(E]~=}=M(N(O(P(Q(R(+=A&w!S(x- #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@l+T(*@U(y~m@V(T#^ ^ ^ ^ ^ ^ 1 4(+             + + . >#1 ^ ^ ^ 1 C p*+         + + -+g~^ 1 ^ ^ 4 y{.             ",
+"            a'#+^ ^ ^ ^ ^ ]+W(,*D@-+$ +           . . d~~^8 [ ^ ^ ^ ^ z{$     + k;^ ^ ^ ^ ^ ^ c+X(O(V+Y(Z(k~`(;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@ _a.p=._+_N@Q@3#y+@_'.l ~.#_<%W*;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@9#$_}=%_&_W'*_=_^ ^ ^ ^ ^ ^ ^ *+. +       + $ e x{K ]+^ ^ ^ ^ [ I^                . E@4 [ ^ 1 K {               ",
+"            + 9{]+1 ^ ^ ^ ^ 1 1 1 )*>#4(# + + + + !.R.C 1 1 1 ^ ^ 1 1 6^.     a'2 ^ ^ ^ ^ ^ ^.~@-_@@@@;_G=Q,>_;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@,_=-6#0@;-m@K.<%@@'_)_f ^!!_5$k+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@Q@~_u@Y {_h'3#]_^ ^ ^ ^ ^ ^ ^ 0{$ +   + A@L (.a 1 1 1 ^ ^ ^ ^ 4 L*                + `]5 1 1 1 ;#.               ",
+"                n$^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 4 +.o!L*.~4 [ 1 ^ ^ ^ ^ ^ [ f~{ .     c.[ ^ ^ ^ ^ ^ c+0+^_;@6@/_*@(_U);@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@__:*2.:_]-{*<%n@(+<_[_M l }_J#5$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@X%;>|_x&1_l+q+2_^ ^ ^ ^ ^ ^ ^ )*=+.   + ,{1 ^ ^ ^ ^ ^ ^ ^ ^ ^ [ #                      ^1 4 #+. .               ",
+"                - 5%1 1 ^ ^ ^ ^ ^ ^ ^ ^ 1 1 1 ^ 1 1 1 ^ ^ ^ ^ 1 1 [ B{+ +     6.1 ^ ^ ^ ^ ^ g 6#3_y+c)4_k=5_k+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@6_Y@c$F+J-J#V@r#G&7_8_u.'.9_R$5$m@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@J#b]0_F.a_Y#6@b_Z+&%n+1=^ ^ ^ 1 /.+   + y.0{1 1 [ ^ ^ ^ ^ ^ ^ 4 x{                  + ] [ [ c + +               ",
+"              + . 0'4 [ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ I^F^w         c_1 ^ ^ ^ ^ ^ ^&d_e_;%f_g_;.h_@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@1^i_+#<*j_V!k_l_m_n_6+:*!^o_y+L.;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@V+p_N+q_C&r$r_s_Q%E.Y;^ ^ ^ 1 b +   + . c.'@K@[ 1 ^ ^ ^ ^ ^ [ ..                    ' (.4(.                   ",
+"                + + t_R.Y~[ [ 1 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 1 5>y{% + +         ,*1 ^ ^ ^ ^ ^ g [*u_r#v_w_))x_6@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@1%y_h;F=l(F.z_A_5;Q%p@E+B_R-J#V+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@W*C_e.D_E_J#F_m>6+g 1=^ ^ ^ 1 L +     + + + C+= 2 1 1 1 ^ ^ 1 4 # .                     + +                   ",
+"                    $ + U$;#5(W(4 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ [ 0{H { $ $             >{^ ^ ^ ^ ^ ^ T&G_x@q&H_J!J,I__+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@J_K_c,Z+Z+w;y |=:*(-L_M_3#@@W';@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@ #W*N_6>B'O_z+)#.]0=Y&b#^ ^ ^ 1 m]+           . . a'H -.4 ^ ^ ^ ^ $+$                                           ",
+"                    +   +       - V$R{7{]+[ 1 1 [ [ O*Q*-++                   I.[ ^ ^ ^ ^ ^ c+P_r+Y#Q_^&R_S_$;;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%y+3,T_U_6+P&'.2.V_W_X_ #V@@@m@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@k+Q@Y_Z_f `_Q@5$ :2.[@^ ^ ^ ^ ^ >{+                   + n/< 4 [ 1 7{=.                                          ",
+"                                  + . $ I z@|]).l;L*-+. $ +                   W$[ ^ ^ ^ ^ ^ T&q%y+;@.:v.+:e{@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@C$k+i>@:#:$:t,%:&:M&r+@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%@@H$,~1 *:($B$=:+=u.^.^ ^ ^ 1 .~+                   + . % 9 s.K ) a'                                          ",
+"                                              -+=+                            : 1 ^ ^ ^ ^ ^ ^.-:@@6&;:v.>:,:W*;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@K#K#k+v&a&5$k+@@L._+5&5$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@B$w%B#':1 *:($<%):O 1 J+^ ^ ^ ^ :                               +                                               ",
+"                                                                              : ^ ^ ^ ^ ^ ^ ^.!:($3+~:.-{:k%]#;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@5$O@y+[%@@k+_+v&]=@@($$;;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@J#$;]:^:l /:($J#(:O. ]c#^ ^ ^ ^ :                                                                               ",
+"                                                                              : ^ ^ ^ ^ ^ ^ L@_:W*_+::e$<:[:;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@V+n@J#<%}:J#H@H@_#L.5&k+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@O@ #|:1:g 2:[%_+3:c#^ ^.^ ^ ^ ^ :                                                                               ",
+"                                                                              : ^ ^ ^ ^ ^ ^ L@_:W*_+::e$<:4:;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%**3#s+5:T{6:@@K.k+Q# #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@O@ #|:1:f 7:_# #3:c#^ ^.^ ^ ^ ^ :                                                                               ",
+"                                                                              : ^ ^ ^ ^ ^ ^ L@_:W*_+::e$<:4:;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@_#m@L.8:9:0:a:b:c:b] #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@O@ #|:1:p=d:6$ #3:c#^ ^.^ ^ ^ ^ :                                                                               ",
+"                                                                              : ^ ^ ^ ^ ^ ^ L@e:W*_+z=e$<:[:;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@ #;@;@;@;@_+n@f:g:6#`%6#p=h:i:V+ # #O@ #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@O@W*B#1:v#j:@@y+&~&@^ c+^ ^ ^ ^ :                                                                               ",
+"                                                                              : ^ ^ ^ ^ ^ ^ m-k:O-(+l:!;m:n:W*;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@k+n@<%_+5$6@X'o:1 ^ ^ ^ u.E.p:q:{&w-K.6&;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@m@+@r:':R s:B$[%t:Y;L@Y&^ ^ ^ ^ | +                                                                             ",
+"                                                                              : 1 ^ ^ ^ ^ ^ T&u:Y#V+v:w#w:<-J#;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%K.<%x:*=y:z:J+^ ^ ^ n+Y;+*A:B:8]4]1$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@w%r#C:D:}=E:B$@@F:c#&@n+^ ^ ^ 1 I.+                               +     +                                       ",
+"                                      + $ $ h+o$.                             >{[ ^ ^ ^ ^ ^ L@G:[%x+H:k~_;Y_V@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@{*m@|#I:J:E%p$g ^ ^ ^ X&J^Y;u.K:L:z+r$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@s+M:J!F+N:])D-O:+*c#L@^ ^ ^ ^ >{                    . w Q{I.6{N;7 . $ $                                       ",
+"                            + + + +   C+t_m 1 5 Z~(/+ + +                     >{[ ^ ^ ^ ^ ^ Y;P:Q:Y{R:H(}'S:m@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@ #;@;@m@<%Q^T:U:,@[.&@D%c+^ Y;d$R ~@l S.V:W:3# # #B$n@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%S%X:p@B*Y:O@Z:`:+*b#c+^ ^ ^ ^ >{              + + w 9 (.[ 1 1 1 )*k;t_'=. + + +   +                           ",
+"                          + $ % n]9 ~^> [ 1 ^ ^ ^ )*{(D@=.+                   S/1 ^ ^ ^ ^ ^ e$m> <z+.<I-u#+<B$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@ #n@<%5&<%@<#<)/J+^ ^ ^ Y&w#$<A&b#G v.g n+n+%<&<a&j(6&**;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@W;3#*<0==<-<r$({;<J^L@1=^ ^ ^ 1 =(.           + . 6^..1 ^ ^ ^ ^ ^ ^ ^ 4 [ >*$+;#( $ .                           ",
+"                    . + + a'/>r j*1 1 1 1 1 ^ ^ ^ 1 1 1 0{n^=++ + + +         D;1 ^ ^ ^ ^ ^ i@<^><[&x@,<E+'<O@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%K.@@f^)<!<C(T&^ ^ ^ n+p@~<{<;+;+G J+l &@Z+]<^</<(#8>;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@3#r+(<*._<L^[&:<6+l L@T&^ ^ ^ ^ h~+     + + + /&B/]+[ ^ ^ ^ ^ ^ ^ ^ ^ 1 1 [ 1 1 7{>{D;A@+ .                     ",
+"                    $ I +$5>4 [ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ ).5(h+. $         c 1 ^ ^ ^ ^ ^ g V{<<y+Q#[<S.}<_+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@C$@@M&|<1<2<p$T&^ ^ ^ 6+3<4<5<6<7<~@n++*f/T&u.8<b/7@6@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@V@S-9<~.0<t+e,a<J+b#1=^.^ ^ ^ 1 p*.   + . j;i*a 4 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ ]+d 5($ .                   ",
+"                  t_: 1 1 1 1 1 ^ ^ ^ ^ ^ 1 1 [ 1 1 ^ ^ ^ 1 1 1 1 b<b'        7 K'^ ^ ^ ^ ^ f S.c<J#b]d<e.e<X#s+w%x-;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@k+;@;@m@<%T+f<g<6#j#T&h<+=T&6#K&i<n@5&j<A*k<#%%@f f 1 X l<m<V@W*@@7@r$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@a&m&n<Z+o<1%x-p<^.c+Y;^.^ ^ ^ $%6 +   . I.1 [ ^ 1 ^ ^ ^ ^ 1 1 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 1 1 1 ;#.                   ",
+"                '=[ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ [ .$4 1 ^ ^ ^ ^ ^ ^ ^ [ *         $ F~^ ^ ^ ^ ^ ^.s;P!Q=p;q<r<s<t<:]L.5:]#;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@n@V@{*y+@<u<v<w#^ ^ ^ T&<,k=w<x<L.Q@C$C$y<z<A<f G L@T&E.u.B<C<s+A%3+F*;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%D<B=8_E<W'F<G/^ ^ ^ ^ ^ ^ ^ 5%$ +   h+[ 1 ^ ^ ^ ^ ^ ^ ^ 1 t-A{> ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 >*U$                  ",
+"            . . o!1 ^ ^ ^ ^ ^ 1 1 [ [ 1 Y~l*q =+c_W$[ 1 1 ^ ^ ^ ^ ^ 8 A@.     .  ^^ ^ ^ ^ ^ e$+=G<H<Q@I<_*U#J<}:X%B$r$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@_+K.m@3{K<K,L<+=^ ^ ^ Y&M<$^N<;%Q@**Q@L.O<P<6;j$s;G J+Y&&@[@Q<R<S<|#m@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@+@T<F.U<V<5&W<X<^ ^ ^ ^ ^ ^ [ M;+ + + 4(1 ^ ^ ^ ^ 1 1 [ 5%) K*+ +~-(H^Y~[ 1 1 1 1 ^ ^ ^ ^ 4 Y<+ +               ",
+"            $ @.C 1 ^ ^ ^ ^ ^ 1 4 4 e~H `]$ . $ . a'!.|]4 ^ ^ ^ ^ ^ ^ h#$     $ n^^ ^ ^ ^ ^ ^ b#'&Z<C$0&`< [.[2%V@n@@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@3#@@[&+[@[B~T#&%^ ^ ^ Z+#[$[3#[%C$5$r$y+t$J#b-z$j$n+n++*<*b#&@%[&[])V+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@*!*[=[-[i>R-;[0+^ ^ ^ ^ ^ 1 [ )=  + % N*^ ^ ^ ^ ^ 1 k;q { +       . $ - D@B@0{[ [ ^ ^ ^ ^ 4 O*' +               ",
+"            + |]1 ^ ^ ^ [ [ 1 A{z@>[+ +     +   + + + + ~(M*[ ^ ^ ^ ^ g+$     +  ~1 1 ^ ^ ^ ^ R+#%,[t+C$'[2.)[![N@U+P@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@V+;@@@O@Q@~[{[][~@g g h<l Y&f*~#^[L.[%5$;@m@X%@@k+J#(+/[A>([v#d$1 1 g [+_[:[V@V+@@S%r$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@_+w% #;@d*7-4 <[k+y+[[F.^ ^ ^ ^ ^ 1 4 ~(  + p*4 ^ ^ ^ 1 [ &>+   +                 + % /.z{> [ ^ ^ 1 1 r .               ",
+"            ,{C ^ ^ ^ 1 [ -#h+. $ .                   . $ $+]+^ ^ ^ ^ 4 I]      { M*[ ^ ^ ^ ^.c+~@}[E{n@|[1[p@:>y+V+#(;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@K.{*N@;%2[3[%@^ ^ ^ j#4[E%5[6[L.Q@5&O@Y{w%7[n@;@B$@@V@8[9[0[L@t L@l E.&%a[b[;$2'^-z+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@X%[$3#c[f+A=d[k+9.e[}=^ ^ ^ ^ ^ 1 5>.   + z@[ ^ ^ ^ [ i#a'                          $ . 1][ ^ ^ ^ ^ ]+P+              ",
+"        . . 7/1 ^ ^ ^ 1 +.o$  +       + . $ . +           /.[ ^ ^ ^ ^ [ p!        ! [ ^ ^ ^ ^.n+1 Z$f[C$^-g[@$h[,:($B$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@_+K.w%M&i[j[k[[.^ ^ ^ Y;C(l[m[T+<%**Q@k+r+4+n[l+<%O@r#[&o[p[a!q[{@t J+c#&@&%r[s[S<Q^@@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@C$;@Y#5[$.t[3+_+u[!;l ^ ^ ^ ^ ^ 1 } +   + e~1 ^ ^ ^ [ p!+           % y.. . . .         { ~ [ [ ^ ^ ^ {(y.+           ",
+"        . I]> [ ^ ^ ^ ^ V$+           + w g#*]w           w K ^ ^ ^ ^ [ f~        )=[ ^ ^ ^ c+1=1 ;.v[L$Q^w[#.x[y[V+]#;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%k+x%z[r{B~'.$=^ ^ ^ f A[w/l+5$_+@@r$y+]-B[C[&_x+;@ #[%X#J#D[E[+;L@u.6+c#n+c#F[G[s+V+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@n@V+L.H[I[6#J[V@[%K[E.g ^ ^ ^ ^ ^ ^ Q{.   7 )*1 ^ ^ ^ 1 o*+           w)i#Z~/>-+.         . :@J 1 ^ ^ ^ 1 H +           ",
+"        $ j ^ ^ ^ ^ [ | y.+       + <]} -.[ 4 $'. +       . ) ^ ^ ^ ^ ^ 1 ;#.     C+K'^ ^ ^ ^ ^ ^ ^.L[M[r+N[O[P[Q[1%V+;@;@;@;@;@;@;@;@;@;@;@;@;@;@ #;%;@X%J#9#i>R[8~b#^ ^ d=[@[+n%S[T[n@_+;@k+_+L.~%U[~=&@V[W[[%_+m@@@O@$;X[a[Y[v#u.1 1 g c#Z[`[3#V+$;0&L.;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@ #r$5& }a@.}+}V@n,[_#%n+^ ^ ^ 1 [ j*-+$ . }]4 ^ ^ ^ ^ 5 6 +       + $ 7/[ ^ ^ t-m e +         * [ ^ ^ ^ ^ d.A@          ",
+"        I )*^ ^ ^ ^ [ b $ +       n^C [ 4 [ [ g~$ +       . A@K@^ ^ ^ ^ ^  ^.     $ B/^ ^ ^ ^ ^ ^ ^ B=@}(+6&#}R $}%}W';@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@K.[$6@N@&}*}l$^ ^ ^ g 8_~==}-}n@5${*@@C$@@;}>},}5;n+2.V['}1%w%]#B$k+5$)}!}0[n+G L@&@f w#!<~}])[&K#7@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@V@y+{}]}0+^}3+5$/}J!~@n+^ ^ ^ ^ [ _@. . . j [ [ ^ ^ ^ l].         + U$7{[ ^ ^ 4 [ (/+         c.m*^ ^ ^ 1 [ z{          ",
+"        * [ ^ ^ 4 4 W(+           >[4 1 ^ ^ ^ $%K*            ! [ ^ ^ ^ ^ d o$    . n/4 1 ^ ^ ^ ^ ^ T&(}]/_}:}<}T.[}v&;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%K.w%}}|}1}2}k ^ ^ ^ J+3}4}5}f^3#**@@ #y+I/k:[@=^:&n+$=f 6}7}Y#<%]#r#x%8}9}0}a}a+t u.Z%Y&J+b}c}d}($r$;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@ #x+e}f}0~s[$;p%g}h;l u.^ ^ ^ ^ [ q   + -+C;^ ^ ^ 1 4 s           .  ~^ ^ ^ ^ [ g++           - ).^ ^ ^ 1 4 M;          ",
+"        c'[ ^ a .~L', .           + >#1 ^ ^ ^ [ t_            g#4 ^ ^ ^ ^ [ )=    . =.Y~[ ^ ^ ^ ^ ^ 1 h}i}[%K.j}'!k}^<;@m@;@;@;@;@;@;@;@;@;@ #;@;@;@J#k+}}l}l)s;B .=c+^ b#R V#m}y+s+k+@@r$K#%]n}e.l J+L@T&J+y F.A>o}x+;@ #@@R-5$p}G_S.m-3*+*Y&E.x*)>q}a&k+ #m@m@;@;@;@;@;@;@;@;@;@k+;@;@t+r}s}t}u}|#U)v}F+f*l l ^ ^ ^ ^ -.U$    ;*1 ^ ^ ^ 1 ).K*          . *]^ ^ ^ ^ 4 E~            F^[ ^ ^ ^ ^ 4 D@          ",
+"        =(-.Q i;                  + }]1 ^ ^ ^ 1 i*$           y.0{^ ^ ^ ^ [ r-% .     '@1 ^ ^ ^ ^ ^ [@'!w}Q=<%x}y}f*4/N@W'n@@@;@;@;@;@;@;@;@;%;@_+<%9#}}z}%_^ ^ ^ Y;m%q@s]t]t'w%C$ #k+_+(+A}B}r,J+c+^ ^ ^ ^ ^ ^ ^ C}D}1%3#;@@@O@w%E}F}g*O.n+L@g 1 J+G}H}1%V+$;I}@@;@;@;@;@;@;@;@@@c)($[$G&J}p(K}L}A%*!M}^ ^ ^ ^ ^ ^ ^ 1 z{+   + B@1 ^ ^ ^ 1 q*+           w 5>^ ^ ^ ^ [ <]          + j [ ^ ^ ^ ^ 2 {           ",
+"        w =.. +                   + - l;^ ^ ^ 1 [ #           + p!^ ^ ^ ^ 1 8 '=.   + h+a ^ ^ ^ ^ ^ e$}=N}O}S-P}Q}5;R}S};%V@J#;@;@;@;@;@;@;@;@K.3#k+T}U}V}S ^ ^ ^ e$|{W}X}Y}n@5${*@@C$($Z}`}F+c$E.^ ^ ^ ^ ^ ^ ^ ^ F. |.|e,w%O@5$y+5$+|@|r&&@!;:*&@l ~@K,#|s+8#N@]);@;@;@;@;@;@;@r#;@{&S-$|%|G=&|M&5$*|^,^ ^ ^ ^ ^ ^ ^ C e +   { ; [ ^ ^ ^ 1 =(+           I][ ^ ^ ^ ^ d.y.          a'; 1 ^ ^ ^ ^ * .           ",
+"                                  + . *+[ 1 ^ ^ ^ L'. +       .  ~)*4 ^ ^ ^ ^ 9'$     $ B/^ ^ ^ ^ ^ :*c#k$=|Y{V@-|;|E+>|,|k+;@;@;@;@;@;@;@;@X%[$j(;>'|;{)|B ^ ^ ^ J+!|~|{|T+5&**@@n@t+}&]|Z+B=y J+c+^ ^ ^ ^ ^ ^ ^ y m-A*$|8#<%;@V+8#^|8/8</|(|t E.&+R+J+D:_|:|$;W*;@;@;@;@;@;@;@7@r$f^<|[|u@}|||x+q/1|E]^.^ ^ ^ ^ ^ 4 j $ . $ d~[ 1 ^ ^ ^ )*c.+           Y<]+^ ^ ^ ^ Q .         $ j;^ ^ ^ ^ ^ 1 &>.           ",
+"                                    . 6^[ 1 ^ ^ ^ m*{         + . r-1 ^ ^ ^ ^ P*$     + 6^[ ^ ^ ^ ^ ^ c+[.Z*2|y+F#3|;!J!4|q&k+;@m@5$k+;@;@;@5$6@G&5|o&q@k .=Y;e$~@+*n}9.|#7@@@@@n@^-%]6|#.&@1=L@T&e$:*&%1 T&R T&^.c+$=^&7|8|5&w%J#@@;%V@9|0|H-k %@!;Y&:*x*]}a|K. #W*O@m@ #;@;@;@ #**{&b|f*s]c|a&f@1@J!X ^ ^ ^ ^ ^ ^ ]+6^+ . . n*1 1 ^ ^ 1 #+. +         + : [ ^ ^ ^ 1 ;#+         . B@^ ^ ^ ^ ^ C;- +           ",
+"                                      a'z.1 ^ ^ ^ [ <@+           k*[ ^ ^ ^ ^ [ g#      + J][ ^ ^ ^ ^ ^ ^ ^ d|e|[&f|W{p=g|h|Q@t+V@i|r$@@C$_+(+}}j|T>^ ^ ^ c+m%))U#k|l|w%5&@@k+3#r+m|S^p$u.Y&c+^.g },<#[_n|`{~.~@l ^ ^ ^ ^ o|p|q|y+;@O@O@($r|i+s|F.:*L@g f J+:,t|5&k+A%u|@@;@;@;@@@_+v|w|x|y|z|v&|*A|l f ^ ^ ^ ^ ^ 1 J].   + y.r.^ ^ ^ 1 [ 3 $ +       . s-1 ^ ^ ^ [ 7{{           w : ^ ^ ^ 1 [ ~^$ +           ",
+"                                      + H+^ ^ ^ ^ 1 Z~+           n]K'^ ^ ^ ^ 1 * +       <][ ^ ^ ^ ^ ^ ^ ^ k B|H@C|m(D|O E|F|3#q& #n@[$V@@@G|H|._I|^ ^ ^ ^ B~r>J|K|$;5$[$@@C$@@L|M|J!S E.^.^.^ l p$N|O|[%P|j_k J%c+^ ^ ^ q@Q|}~|#@@J#5$r+1$k_R|C,P&Z+:*&@Y&Z+j[S|T|x@Q^B$;@;@;@]=U|V|5{W|X|1$C$Q[;][@&@^ ^ ^ ^ 1 1 {++     I 1 ^ ^ ^ 1 a Y|+ +       + C/^ ^ ^ ^ [ r             <][ ^ ^ ^ ^ [ I++ +           ",
+"                                      + # 1 ^ ^ ^ [ )*6           . q*^ ^ ^ ^ [ Y~-+.     $ |]^ ^ ^ ^ ^ ^ ^ $$Z|`|S%5&p&;!e% 1q+r#J#k+[$w%E'.1f}+12.^ ^ ^ b#!)@1#1V+C$[$@@n@r+$1%1Z+A&A&1=c+c+1 *.&1*1X%k+Q@=1-1J!b#^ ^ c+3*f _*W@2%<%;@k+c)O<;1>1i$J^G E.J^R+b#,1'18]@@W*;@;@;@/*)1}!N}!1**V+~1,^;!k Y;^ ^ ^ ^ ]+b<$ .   + L*1 ^ ^ ^ 1 A{.           .  .1 ^ ^ ^ [ Q{            = 1 ^ ^ ^ ^ 8 7               ",
+"                                      + . c'1 ^ ^ ^ 1 )=+         . b ^ ^ ^ ^ [ 1 {1+       =#l;1 ^ ^ ^ ^ ^ &@k ]1^1i>/1(1B _1:1_#[%1$;%y~<1Q![@i@[1d=i@l ;!}1+,6@^% #@@n@|111212.R+T&L@g L@x*[ 3141@@R-@@a&y+t!r%[+'.Y&^.1=D%v.]]511%n@J#@@6@a&617181[.l$!;T&m-}=91015&3#;@]){*a1b1,@e!c1k+d1|_R F.l L@^ ^ ^ 1 l;>[. +   + I^1 ^ ^ ^ 1 %>+           -+J ^ ^ ^ ^ t--+        + . h(1 ^ ^ ^ ^ #++               ",
+"                                          h#4 1 ^ ^ ^ C@. +       . y.)*^ ^ ^ ^ ^ 4(.       + '@4 ^ ^ ^ ^ ^ ^ ^.6#e1r+C$f1g1u@h1i1X#6@j1k1l1c+^ ^ ^ Z+m1^,n1o1w%[$@@[%l+C$p1q1r,E.T&^ ^.c+[++#r1s1r#;@;@;@;@_+t+t1u14 m-l ^ ^ ^ ^ v1w1x1L.;@O@O@@@y1z1A1[.G :*g n+J+*-B1y+s$Y#C1J'v;D1E1x+l+N$,@^ ^ ^ ^ ^ ^ ^ ^ 9'+       , 4 1 ^ ^ ^ 1 /&+           V$4 ^ ^ ^ ^ *+$         . I 4 [ ^ ^ ^ 1 t_.               ",
+"                                . + . . s-E~[ ^ ^ ^ ^ ]+Y|        . %>^ ^ ^ ^ 1 M*6 +       + =+i#1 1 ^ ^ ^ Y;E.R+F1G1|#1%5)']O H1I1J1(%n%k]^ ^ ^ ^ K1L1M1F<@@V@[$;@L$k+N1O1p$S A&^.^.^ 1 F.P1Q1@@@@;@;@;@V+w%C$($R1S1`%$.^ ^ ^ c+c#T1U1e,k+J#<%;%N&e|V1u W1Z+:*Y&R+Z+*-X16&Y1//B~Z1`1y+|#a- 2Q%^ ^ ^ ^ ^ ^ 1 i#{ +       U$: 1 ^ ^ ^ 1 _ . .         *+[ [ [ 1 [ V$.         . n$[ 1 ^ ^ [ [ ' .               ",
+"                              + $ n]N;{()*4 4 1 ^ ^ ^ [ *]        n]$%^ ^ ^ ^ 4 k*          + $ n!4 1 ^ ^ ^ 1=g &@A&.2+26@1%4'@2'!9=#2v#l1m%c+^ ^ ^ $2%2L^9#_+C$@@P@y+&2*22.J+E.1=g g 1 B'=2-2@@5~ #;@;@;@V@@@n@3#[%;2>2r,^ ^ ^ c+w#[@&',22%Q@;@@@o{N&q:'2)2=,:*'&;+Y&u.!2~2{2;.]2^2Y#<%/2k{l Z+^ ^ ^ ^ ^ ^ 8 0'          + F^1 ^ ^ ^ 1 ]+F^. +       I |+#+d [ .$C+.         . c'^ ^ ^ ^ [ I^$ +               ",
+"                        . . ( 6.g~.$1 1 1 1 1 ^ ^ ^ ^ [ 5>. . + . z{[ ^ ^ ^ ^ f~-+            + $ *+1 ^ ^ ^ ^.c+T&L@[@w<(29#{&_2;<Y=[.~@i@&%J+J+k (=:2[&6@5$n@<% #Q=<2[2[ c#T&^.c+n+F.`%}2L~V+m@ #W*;@;@;@;@<% #;@V@[%|212J%0+Y&b#1=&%v.*(22O-L.J#@@k+5$u]3242S.#%B=&%n+Z%N s]52C1R-r+6272v.n+T&^ ^ ^ ^ 1 [ >{.             w #+[ ^ ^ ^ 1 z.=++       + +   C+n/Y<+ +         ;,a ^ ^ ^ ^ [ %>.                 ",
+"                        6^,*t-[ 4 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 4 :@$ $ ~(j*[ ^ ^ ^ ^ ) +               + -+y&^ ^ ^ ^ ^ ^ ^ Z%h;82616@9202B~b#^ ^ c+Z%$=h}a2;>w%[$X%_+y+t+b2c2'!!;J+^ ^.c+^!+#d2]'q&;@;@;@;@;@;@;@;@;@;@;@;@_+G&e2$*f$m-&@^ ^ ^ ^.*(f2P#($;@O@@@5$g2h2]+x*1=c+c+n+R+F.i2Q$@@j2k2g ^ ^ ^ ^ ^ ^ ^ [ F~6 +           + $ i;8 1 ^ ^ ^ 1 >{+               . .             b=4 ^ ^ ^ ^ 4 _/                  ",
+"                  7 L'< ^ 1 1 ^ ^ ^ ^ ^ ^ ^ ^ 1 [ ^ ^ ^ 1 l*$ y.! ^ 1 ^ ^ 1 ..  +                   E@> 1 ^ ^ ^ ^ ^ e$T&R l2m2z=n2m%L@^ ^ ^ a@H=o2d@k+{&K.;@'+[%E}p2T#=-3*L@^.^ ^&,@q2y;V+m@;@;@;@;@;@;@;@;@;@;@;@y+w%L$@@r2s2S.N+^ ^ ^ 1=c#t2u2G&y+J#k+;%d}v2w2Q![ i@J+A&<*T&'.'|x2y2Z+c+^ ^ ^ ^ ^ ^ ^ > '=                  + >,1 ^ ^ ^ 1 J d~. . .         +           . + o!4 ^ ^ ^ ^ : .                   ",
+"                  9{4 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ a ]+^ ^ ^ ^ .$(@(>4 ^ ^ ^ ^ [ />                      + ) 4 ^ ^ ^ ^ ^ u.$=O o&B(T.%@~@g ^ ^ ^ A.z2l+1%k+_+;@;%|#A2|'F.Y;:*J+g g l B'B2C2J#Q#W*;@;@;@;@;@;@;@;@;@;@;@5$[%n@V@[%D2E25;^ ^ ^ c+w#c#Z(F2q/5$;@@@Q=1$]/G2t2c#J+f n+J+A&s_H2w;u.c+^ ^ ^ ^ ^ ^ [ I+$                   + 9{j*^ ^ ^ 1 4 )*H^z@b'.                   6 L*K'[ ^ ^ ^ ^ ,*+                   ",
+"                  . r-1 ^ ^ ^ ^ ^ 1 1 [ [ A{Q*h+K 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ >#+                       + . ! [ 1 ^ ^ ^ ^ ^.e$e$c+c+^.^ f 3*6#I2F=E2J2V@8>;$y+5&K2L2&@c#T&^.^ f 2.x&i&M2W*;@;@ #;@;@;@;@;@;@;@;@;@;@;@;@@@;@;@<%k+N2O2u@~.&@b#c+c+^.a=p_P2L.V+<%Q2R2S2P h;p=c#^.^.R+Y;1=c+c+^ ^ ^ ^ ^ ^ [ 7/                        . H+4 1 ^ ^ ^ ^ ^ ^ ^ W(z{<@( . + . $ A@Q*$%1 ^ ^ ^ ^ ^ ^ <]+                   ",
+"                    =(1 ^ ^ ^ ^ ^ 1 ; z{{+y.$ + C/^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 0'.                       + $ { W(1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ E.m-j^T2k$O U2V2W2v&l+)}E;[,B=b#^ ^ c+^!J!X2||q&;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@w%_+X#Y2Z2[.m-&@^ ^ ^ b#J,`22%[% 3.3+3;.@3#3~.T&c+^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ _ a'                      + . A@5 1 ^ ^ ^ ^ ^ ^ ^ [ [ [ M*r c_;,-(5>[ ^ ^ ^ ^ ^ ^ ^ (>a'+                   ",
+"                    -+l;4 [ [ l;c=/&{         $ o$l;[ 1 ^ ^ ^ ^ ^ ^ ^ [ i*                              + +~g+4 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ O $3%3&3*3m>F==3-3i};3>3+*J&$=b#^ e$^&0+,3Y_H@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@r+w%_+@@'3u(v;~.^ ^ ^ b#u.B')3!3~3h;p=S&{3]3E#p$x&v.^ ^ ^ ^ ^ ^ ^ ^ ^ [ g+C++                           + I+[ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ a ^ ^ ^ ^ ^ ^ ^ 4 [ [ M;                      ",
+"                    . q*)*I.s a'. $ . +       + . Z][ ^ ^ ^ ^ ^ ^ ^ ^ 1 w)                              + $ []5 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ p@^3y(H@5&/3S'a=o+(3_3F=Y&E.J+g g l /=:3<3J#<%#(;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@5$L$w%<%9#[3}36+c+^.c+b#Z+Z+N+J!(-<#&{|3[%132333*.l g ^ ^ ^ ^ ^ ^ ^ ^ -.A@. .                           + . r.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 4 h(/>.                       ",
+"                      o$+~.                       q ]+^ ^ ^ ^ 4 4 2 ,*j;$                                   + b'O*4 1 ^ ^ ^ ^ ^ ^ ^ A&6+43,]|1@@x@5363k#1 l T&^.^ l 0+#.73+} #;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@<%@@8393v~N+l b#^ ^ ^ 1 03a3p%t+l+b3c3=^^ ^ ^ ^ ^ ^ ^ ^ ^ 4 M*/..                                   s-9 -#$%[ 4 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 4 [ 4 {(0'.                           ",
+"                        . +                       . d.1 ^ ^ l;Z]g#6 . $ $                                   + $ =#; 1 ^ ^ ^ ^ ^ ^ ^ d3'&k#e3f3Q=N@3%g3B;&%g ^.^ ^ [+f*D#p-r+;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@n@_+x+h3i3`%R &@^ ^ ^ Y&h;j3q#Y{k3l3t.&@^ ^ ^ ^ ^ ^ ^ ^ ^ ; m3$ .                                   + . . 6 c 9'-.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ c'/&. . +                           ",
+"                                                  . +$]+b+)=A@                                                  . I 2 4 1 ^ ^ ^ ^ ^ E.+=j#:*n3o3p3q3r3s3v.D%^ c+B /=t3D$x-;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@_+w%[%[%u3v3d+;!^ ^ ^ L@Z+'!w3x3;&0=f g ^ ^ ^ ^ ^ ^ ^ [ z.# .                                                   y.h+L i*4 [ 4 4 4 [ [ R.E@$                                   ",
+"                                                  + =+' + . +                                     + +           + $ h+| 1 ^ ^ ^ ^ ^ g |=E.j#t.6+}.S.E.e$&%e$g [.u#y3z3[%J##(;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@5$L$w%<%[%Y}A3[@:*v.c+^.c#6+'!6#E+P&u.n+^ ^ ^ ^ ^ ^ ^ b+o$$ . +       + +   + +                                 + . + + o$n/! > [ b<{+. . +                                   ",
+"                                                                                              $ . $ - !./&$ +       . `]k;[ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ e$*.n%B3u&;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@ #;$L.C3D33}Y.&%g ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 4 J]- .     $ P+= g#(/- $ . $ +                                           + . e $                                           ",
+"                                                                              +   + + + + n]E@t_l]~ J [ 1 >,K*      + + U$H+[ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ J+~.E3F33#;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@@@s+L$<%q;G3H3E.^.^ ^ ^ ^ ^ ^ ^ ^ ^ 1 ^ 1 J $++ + .     x{4 1 1 [ J W(I.M;c_!., w + +                                   + . +                                           ",
+"                                                                              . o$b''*B{< K'4 ^ ^ ^ ^ ^ [ K $           . $ F^l;^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ g I3J3@/K3;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@;@L.y+|1L3M3N3 )w#T&^ ^ ^ ^ ^ ^ ^ ^ ^ [ 4 Y~0'            / 4 ^ ^ ^ ^ ^ ^ ^ ^ 4 [ (>C@K*+                                                                                 ",
+"                                                                              . l*1 1 1 1 [ 1 ^ ^ ^ ^ 1 > I]+           + . + ~(C@1 1 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ b#w;F.O3P3Q3;>($X%$;;@k+V+W*;@O@m@;@;@W*@@O@O@O@<%5$;@;@;@O@O@B$C$;@;@@@O@J#r+R3S3T3a#6#[+1 1=^.^ ^ ^ ^ ^ ^ ^ 1 ^ 1 i*p*+             a'8{^ 1 ^ ^ ^ ^ ^ ^ 1 1 1 1 l*. +                                                                               ",
+"                                                                              $']+^ ^ ^ ^ ^ ^ ^ ^ ^ 1 [ n^$ +                   a'S/K'[ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ n+A(U3V3W3X3Y3_+k+ #R$V@]=1%X%W*W* # # # # #V+y+W* # # #;@m@5&Z3`3 4.4U2v~}=g ^.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 l;|+y.+               . +~: [ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 ]+{1$ .                                                                             ",
+"                                                                              a'Q*l;1 1 1 ^ ^ ^ ^ ^ 1 D~y..                       + I N*4 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ e$H-^&+*:$6*+4@4#4$4%4&4d@($y+{&@@;@;@;@5&3#k+V+[%Y#]-*4=4j%-4;4}'6+Z+m%J^Z+L@1=^ ^ ^ ^ ^ ^ ^ ^ [ [ 4 J];,. +                 + + <]).1 1 1 1 ^ ^ ^ ^ ^ ^ 1 d ,{                                                                              ",
+"                                                                              . $ # K [ [ ^ ^ ^ ^ ^ 1 h++                           . . n/0{^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ J+D%g g ~@P%d$[ u ~.|,>4k/,4'4)4!4~4~4~4{4 4]4^40_/4(4)%J!/=L@J+G g Y;u.:*n+g c+^ ^ ^ ^ ^ ^ ^ 1 4 5%V$$ $ +                       . Q{q*-.K'4 ^ ^ ^ ^ ^ ^ ^ 1 i#[]                                                                            ",
+"                                                                              +   + a'z@+.1 1 ^ ^ ^ ^ h~+                             + + o$n$+.1 1 ^ ^ ^ ^ ^ ^ ^ ^ ^.c+1=b#T&g v.n+f 1 1 L@1 v.M :*L@L@L@1 L@L@l R+Y&&@u.1 R+T&^.g ^.^ c+e$T&c+^.^ ^ ^ 1 1 1 [ +.n$a'+   +                         + + + + , w)3 8{> 1 ^ ^ ^ ^ 1 C@w +                                                                         ",
+"                                                                                    + $ ;*4 1 ^ ^ ^ 1 b<+                                   . - H+l;^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 [ m*Y<- . +                                           $ . H [ ^ ^ ^ ^ ^ 1 9'.                                                                         ",
+"                                                                                        $ d.[ ^ ^ ^ 1 C;-                                       + `]x{7{[ 1 1 [ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 [ 1 1 7{3 U$      + + + .                                       + $ B{[ 1 ^ ^ ^ ^ C F^. +                                                                     ",
+"                                                                                        + & 1 ^ ^ ^ 1 [ =(                                          $ a's k;J [ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 d ! g#. . +       + a'j;-++                                     + . { W(1 ^ ^ ^ 1 4 t-@ +                                                                     ",
+"                                                                                          b'1 ^ ^ ^ ^ 1 _ $ +                       + n]j +~. .           + 9{1]r-8 [ [ [ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 [ [ 8 r-4(+~+           + . @ C@1 5 l]6^$ . . .                               + (/+.[ 1 ^ ^ ^ 1 ~ a'$ +                                                                 ",
+"                                                                                        + $ | ^ ^ ^ ^ ^ $%( +                       + R{4 ; q $             $ . $ p*k*e~m*1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 7{|]-(p*. $ . .           + s 7{1 1 ^ 1 [ b+I+n].                               + $ 0'8 1 ^ ^ ^ 1 [ *+$ +                                                                 ",
+"                                                              + . k*[]$ .                 . ) [ 1 ^ ^ ^ 1 `$+                   + $ q a ^ ^ q*$                         { b'b=Z~W(]+1 [ [ 4 [ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ [ [ [ 1 [ C ~ Z~) i;{                         z@J ^ ^ ^ ^ ^ ^ ^ ^ $%9'# . . +                           + L'1 ^ ^ ^ ^ ^ 4 />+                                                                 ",
+"                                                              + j;4 $%&>$                 $ >[4 1 ^ ^ ^ 1  ^+                   . s-2 [ ^ ^ >*.                             . . . - '=g#Q**]_@N*N*N*N*N*N*N*N*N*N*_@*]t_g#'=- . . . .                           *][ 1 ^ ^ ^ ^ ^ ^ ^ [ 4 a N*H a'                          + % J]^ ^ ^ ^ ^ 1 /.+                                                                 ",
+"                                                              . !.^ ^ [ m]{ $       + $ +   + D~[ ^ ^ ^ 1 C;a'+ + + + + + ( - - 6 * ^ ^ ^ ^ [ -                                                                                                                 I^^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ 2 5(=#. .                       A@i#1 ^ ^ ^ 1 /.+                                                                 ",
+"                                                              . ' 8 ^ [ [ : =(] ] ] b z{M;M;M;i*1 ^ ^ ^ 1 [ ~^_ ~ ~ ~ ~ ~ K@1 ^ 1 [ ^ ^ ^ ^ 4  ~                                                                                                              + A{^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 4 [ [ [ b<;*U$                    + *+1 ^ ^ ^ .$`]                                                                  ",
+"                                                                  m*1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 s                                                                                                               w ^ ^ ^ ^ 1 r.;#c'K'4 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 2 Q*[]. . $             W([ ^ ^ ^ j*. +                                                                 ",
+"                                                                  b<[ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 p!                              +               >[ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~i;Y|                                y.^ ^ ^ ^ 1 ! . . ~(9'Y~^ ^ ^ ^ ^ ^ ^ ^ ^ [ 1 > J]0'%           + m*1 ^ ^ ^ : . +                                                                 ",
+"                                                                  o][ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ R.                          + $ I]y&l;K'K'K'K'K'C ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ > ;*$                             :@[ ^ ^ ^ ^ m]        ( N; .4 4 4 ^ ^ ^ ^ ^ ^ ^ ^ 4 r.o^o$$ +   + 7{1 ^ ^ ^ _                                                                     ",
+"                                                                  t_[ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 r.. +                       + I ; [ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ [ J b                           + $'1 ^ ^ ^ ^ m]        + . +  ~m]C;1 1 ^ ^ ^ ^ ^ ^ 1 1 1 ]+-#;#$ p*8 1 ^ ^ ^ b<+                                                                   ",
+"                                                                  i;4 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ 4 1 ^ [ 4 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ { .                   + $ (/; [ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ )*n/$                       + z{1 ^ ^ ^ [ |++               . - a,G^4 4 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ W(= 4 1 ^ ^ ^ 1]$ +                                                                 ",
+"                                                                  7 K'^ ^ 1 1 5 -.-.-.-.W(Z]Z]Z]Z]B/1 ^ ^ ^ ^ ^ ~ '*=(=(=() j Z]Z]Z]7{1 1 1 ^ ^ P+.                 + + n]r-[ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ 1 J H + +                   + 5(1 ^ ^ ^ 1 ] +               . . + . 0'g~).1 1 1 ^ ^ ^ ^ ^ ^ 1 1 1 1 ^ ^ 1 Y<+ +                                                                 ",
+"                                                                  . 2 ^ ^ 4 d /..               + - d.^ ^ ^ ^ ^ K@=++               =+ ^4 4 ^ ^ I+.               + $ =+G^[ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ J h#.                   + {(1 ^ ^ ^ 1 e~%                       . % =+o^y&[ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 4 />                                                                    ",
+"                                                                  . |]^ ^ 1 L*. +                 . = 1 1 ^ ^ ^ 1 *]+               + $ =(+.1 1 !.+             + + =+W(1 1 ^ 1 1 1 K@N*N*N*N*N*N*N*N*N*V *]*]*]*]*]*]*]g+1 1 ^ ^ [ 1 ]+C/+ +               + i*1 ^ ^ ^ 1 [ L*+                     + + + + y.:@|]4 1 ^ 1 ^ ^ ^ ^ ^ ^ ^ [ {+                                                                    ",
+"                                                                  + H+^ ^ i*%                       ;,d 1 ^ ^ ^ 1 i#`]                  $ ' D~H+                . a'! [ ^ ^ ^ 1 4 Y~D + + + + + + + + + $ +           % e +.4 ^ ^ ^ ^ 4 4 ) .               + o^[ ^ ^ ^ ^ ^ [ :@                                $ >[5(; [ [ ^ ^ ^ ^ ^ 1 > h+                                                                    ",
+"                                                                  . V$[ O*s-+                         6{1 ^ ^ ^ ^ 1 3 +                 + + + +                 a'D~1 ^ ^ ^ ^ ^ a <@+                                 + + '=m*1 1 ^ ^ 1 1 [ a,              + $ k;[ ^ ^ ^ ^ [ 7{p*.                             + + . % b i*a [ 1 1 [ ~ (/+                                                                     ",
+"                                                                  $ $ `$g#                            /&]+^ ^ ^ ^ ^ W(a'+                                       m]4 ^ ^ ^ ^ ^ J V$.                                       . '=f~4 ^ ^ ^ 1 4 B/              + $ n]f~1 ^ ^ ^ [ 4 b+U$+                                   $ $ <]B@+.[ V `]. +                                                                     ",
+"                                                                    + + +                           + . >#[ ^ ^ ^ ^ 1 b                                         J]1 ^ ^ ^ 1 [ n*+                                         + + 6^d ^ ^ ^ ^ 1 b+                + + 6^)*1 1 ^ 1 ^ [ 5(+ +                                 +   + + =.<]. + +                                                                       ",
+"                                                                                                    + . D;4 1 ^ ^ ^ [ B/+                                       J]^ ^ ^ ^ 1 -#$                                               . B{^ ^ ^ ^ ^ b+                  + $ b=4 1 ^ ^ ^ [ 4 I+%                                                                                                                         ",
+"                                                                                                        . 2 1 ^ ^ ^ 1 4 P+. +                                 + J]1 ^ ^ ^ ^ =(+               + .                 . + $ +     $ m]^ ^ ^ ^ ^ b+                    + + >,[ [ 1 ^ ^ 1 )*m3. . . +                                                                                                                 ",
+"                                                                                                        + x{1 ^ ^ ^ [ [ +.=(+                                   ` 1 ^ ^ ^ 1 1].       - s-s-s-Y|b ] ] ] ] ] ] ] ] x{` `$$     $ V$^ ^ ^ ^ ^ b+                      . ( (.[ ^ ^ ^ ^ [ F~'@b b';,+                                                                                                               ",
+"                                                                                                        . []4 ^ ^ ^ ^ ^ ^ ^ s.~(. $                             L*^ ^ ^ ^ ^ Z]        = ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ & +     + c_^ ^ ^ ^ ^ b+                          Y|$%1 ^ ^ ^ ^ ^ ^ ^ ^ 1 0{b+b'.                                                                                                         ",
+"                                                                                                        + b 1 ^ ^ ^ ^ ^ ^ ^ [ .$t_$                             L*^ ^ ^ ^ ^ Z]        = ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ &         c_^ ^ ^ ^ ^ b+                          + `$]+^ ^ ^ ^ ^ ^ ^ ^ ^ 4 [ -.`]                                                                                                        ",
+"                                                                                                        + g~1 ^ ^ ^ ^ ^ ^ ^ 4 [ C (/                            L*^ ^ ^ ^ ^ Z]        = ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ B{+       c_^ ^ ^ ^ ^ b+                              9'[ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ [ *+. +                                                                                                     ",
+"                                                                                                        o$> 1 ^ ^ ^ ^ ^ ^ ^ ]+f~1]$                             L*^ ^ ^ ^ ^ Z]        = ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ .~.       c_^ ^ ^ ^ ^ i*                              . C@1 ^ ^ ^ ^ ^ ^ ^ ^ ^ [ [ L .                                                                                                     ",
+"                                                                                                    + . D;[ [ 4 1 1 ).~ ` s _/. +                               L*^ ^ ^ ^ ^ Z]        Q ^ ^ ^ ^ ^ ^ ^ 1 1 1 1 1 1 1 1 .~.       c_^ ^ ^ ^ ^ a                               + 6 Q+(@q*-.+.4 [ [ 4 [ ^ ^ J 6^                                                                                                    ",
+"                                                                                                    + . e~4 0{o!3 /&o$. . + . $ +                               L*^ ^ ^ ^ ^ Z]        @.=(=(=(=(=(=(=('*{+I]I]I]I]I]I]>[.     + c_^ ^ ^ ^ ^ a                               . . + . + + a'I]F^3 Z]m 5>^ 2 6^                                                                                                    ",
+"                                                                                                    + . `$p*.                                                   L*^ ^ ^ ^ ^ Z]                                                $ V$^ ^ ^ ^ ^ a                                                       $ s-- .                                                                                                     ",
+"                                                                                                      . . . +                                                   L*^ ^ ^ ^ ^ j   +                                         +   . m]^ ^ ^ ^ ^ a + +                                                   + + . .                                                                                                     ",
+"                                                                                                                                                                E~[ ^ ^ ^ 1 > q $ +                                       $ % n$4 ^ ^ ^ 1 [ K'$ +                                                                                                                                                               ",
+"                                                                                                                                                              + c [ 1 ^ ^ ^ [ )*;*+ +                                     + 6.1 [ ^ ^ 1 ^ 8 &>. +                                                                                                                                                               ",
+"                                                                                                                                                                U$s.4 [ ^ ^ ^ 1 )*s $ +                                   d~d ^ ^ ^ ^ 4 4 o^.                                                                                                                                                                   ",
+"                                                                                                                                                                + { b<1 1 ^ ^ ^ [ a b .       + +                 7 i; ~/&; 1 ^ ^ ^ ^ [ $+.                                                                                                                                                                     ",
+"                                                                                                                                                                  + { o!4 [ ^ ^ ^ 1 a J]k;k;k;{(.$l;K'K'K'K'K'K'K')*4 [ ]+^ ^ ^ ^ ^ ^ _ y.                                                                                                                                                                      ",
+"                                                                                                                                                                    + % >,[ [ ^ ^ 1 1 ^ ^ ^ ^ 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 1 [ ^ ^ ^ ^ ^ 1 8{a'+                                                                                                                                                                       ",
+"                                                                                                                                                                      + a'* 4 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ g+-                                                                                                                                                                           ",
+"                                                                                                                                                                        + w _@[ [ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 W(C++                                                                                                                                                                           ",
+"                                                                                                                                                                          + y.7/4 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ +.[]                                                                                                                                                                              ",
+"                                                                                                                                                                              $ o^]+^ ^ ^ ^ ^ ^ ^ ^ ^ 1 1 ^ ^ ^ ^ ^ ^ ^ ^ 1 -.i;+                                                                                                                                                                               ",
+"                                                                                                                                                                              + . =#0 0 0 0 0 0 0 0 0 w)b'+ + + + + + + + . $ $ .                                                                                                                                                                               ",
+"                                                                                                                                                                                                        +                                                                                                                                                                                                       ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                                                                                                                                                                "};
Index: xonox/branches/movie_player/src/lib/gui/gui/orxonox_gui.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/orxonox_gui.cc	(revision 4216)
+++ 	(revision )
@@ -1,139 +1,0 @@
-/* 
-   orxonox - the future of 3D-vertical-scrollers
-
-   Copyright (C) 2004 orx
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-
-   ### File Specific:
-   main-programmer: Benjamin Grauer
-
-*/
-
-#include <unistd.h>
-
-#include "orxonox_gui.h"
-#include "orxonox_gui_video.h"
-#include "orxonox_gui_audio.h"
-#include "orxonox_gui_exec.h"
-#include "orxonox_gui_flags.h"
-#include "orxonox_gui_banner.h"
-#include "orxonox_gui_keys.h"
-#include "orxonox_gui_update.h"
-
-  Window* orxonoxGUI;
-  OrxonoxGuiVideo* video;
-  OrxonoxGuiAudio* audio;
-  OrxonoxGuiExec* exec;
-  OrxonoxGuiFlags* flags;
-  OrxonoxGuiBanner* banner;
-  OrxonoxGuiKeys* keys;
-  OrxonoxGuiUpdate* update;
-int verbose = 4;
-
-int main(int argc, char *argv[])
-{
-  OrxonoxGui* orxonoxgui = new OrxonoxGui(argc, argv);
-  return 0;
-}
-
-/* ORXONOXGUI */
-
-/**
-   \brief Initializes the Gui
-*/
-OrxonoxGui::OrxonoxGui(int argc, char *argv[])
-{
-  initGUI(argc, argv);
-
-  orxonoxGUI = new Window( "grafical orxonox loader, "PACKAGE_VERSION);
-  
-  Box* windowBox = new Box ('h');
-
-  banner = new OrxonoxGuiBanner();
-  windowBox->fill (banner->getWidget());
-  
-  Box* optionBox = new Box('v');
-  
-  Box* avBox = new Box('h');
-
-  video = new OrxonoxGuiVideo();
-  avBox->fill(video->getWidget());
-  audio = new OrxonoxGuiAudio();
-  avBox->fill(audio->getWidget());
-      
-  optionBox->fill(avBox);
-
-  keys = new OrxonoxGuiKeys();
-  optionBox->fill(keys->getWidget());
-
-  exec = new OrxonoxGuiExec();
-  optionBox->fill(exec->getWidget());
-
-  flags = new OrxonoxGuiFlags();
-
-  optionBox->fill(flags->getWidget());
-  windowBox->fill(optionBox);
-
-  update = new OrxonoxGuiUpdate();
-  optionBox->fill(update->getWidget());
-  
-  orxonoxGUI->fill(windowBox);
-
-  // Reading Values from File
-  exec->setConfFile("~/.orxonox/orxonox.conf");
-  exec->readFromFile(orxonoxGUI);
-  // Merging changes to the Options from appended flags.
-  for (int optCount = 1; optCount < argc; optCount++)
-    orxonoxGUI->walkThrough(Widget::flagCheck, argv[optCount], 0);
-
-  flags->setTextFromFlags(orxonoxGUI);
-  orxonoxGUI->showall();
-
-  //// Handling special Cases. ///
-
-  // case update //
-#ifdef HAVE_CURL
-  if (static_cast<Option*>(orxonoxGUI->findWidgetByName("auto update", 0))->value == 1)
-    {
-      update->checkForUpdates();
-    }
-#endif /* HAVE_CURL */
-
-  // case start-with-gui.
-  if (!access(exec->getConfigFile(), F_OK) && static_cast<Option*>(orxonoxGUI->findWidgetByName("Always Show this Menu", 0))->value == 0)
-    OrxonoxGuiExec::startOrxonox(NULL, exec);
-  else
-    {
-      mainloopGUI();
-    }
-
-}
-
-
-/**
-   \brief Destructor.
-*/
-OrxonoxGui::~OrxonoxGui(void)
-{
-  delete video;
-  delete audio;
-  delete exec;
-  delete flags;
-  delete banner;
-  delete keys;
-  delete update;
-}
Index: xonox/branches/movie_player/src/lib/gui/gui/orxonox_gui.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/orxonox_gui.h	(revision 4216)
+++ 	(revision )
@@ -1,32 +1,0 @@
-/*!
- \file orxonox_gui.h
- \brief Creation of the Gui
-
- \todo way to start gui without GTK (textmode) AND IMPROOVE
- \todo curl interface to Download cool stuff
-
- \todo widgets save themselves
- \todo good way to step through all the Widgets
- \todo label -> protected : getlabel function
-*/
-
-#ifndef _ORXONOX_GUI_H
-#define _ORXONOX_GUI_H
-
-#include <iostream>
-using namespace std;
-
-#include "orxonox_gui_gtk.h"
-
-#include <stdlib.h>
-
-//! Class that creates the OrxonoxGui
-class OrxonoxGui
-{
- public:
-  OrxonoxGui(int argc, char *argv[]);
-  ~OrxonoxGui(void);
-
-};
-
-#endif /* _ORXONOX_GUI_H */
Index: xonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_audio.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_audio.cc	(revision 4216)
+++ 	(revision )
@@ -1,72 +1,0 @@
-/* 
-   orxonox - the future of 3D-vertical-scrollers
-
-   Copyright (C) 2004 orx
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-
-   ### File Specific:
-   main-programmer: Benjamin Grauer
-
-*/
-
-#include "orxonox_gui_audio.h"
-
-/**
-   \brief Creates an Audio-Frame
-*/
-OrxonoxGuiAudio::OrxonoxGuiAudio(void)
-{
-  this->audioFrame = new Frame("Audio-Options:");
-  this->audioBox = new Box('v');
-  this->audioFrame->setGroupName("audio");
-  
-  this->enableSound = new CheckButton("Disable Sound");
-  this->enableSound->setFlagName ("no-sound", 0);
-  this->enableSound->saveability();
-  this->audioBox->fill(this->enableSound);
-  Label* musicVolumeLabel = new Label("Music Volume");
-  this->audioBox->fill(musicVolumeLabel);
-  this->musicVolume = new Slider("Music Volume", 0, 100);
-  this->musicVolume->setFlagName("music-volume", "m", 80);
-  this->musicVolume->saveability();
-  this->audioBox->fill (this->musicVolume);
-  Label* effectsVolumeLabel = new Label ("Effects Volume");
-  this->audioBox->fill (effectsVolumeLabel);
-  this->effectsVolume = new Slider ("Effects Volume", 0, 100);
-  this->effectsVolume->setFlagName ("effects-volume", "e", 80);
-  this->effectsVolume->saveability();
-  this->audioBox->fill (this->effectsVolume);
-
-  this->audioFrame->fill (this->audioBox);
-}
-
-/** 
-    \brief Destructs the Audio-Stuff
-*/
-OrxonoxGuiAudio::~OrxonoxGuiAudio(void)
-{
-  // nothing to do here.
-}
-
-/**
-   \brief Return the Frame
-   \return Returns the Audio-frame
-*/
-Widget* OrxonoxGuiAudio::getWidget(void)
-{
-  return this->audioFrame;
-}
Index: xonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_audio.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_audio.h	(revision 4216)
+++ 	(revision )
@@ -1,26 +1,0 @@
-/*!
-  \file orxonox_gui_audio.h
-  \brief File that holds the class that creates the Audio-Options.
-*/
-
-#ifndef _ORXONOX_GUI_AUDIO_H
-#define _ORXONOX_GUI_AUDIO_H
-
-#include "orxonox_gui.h"
-
-//! Class that creates the Audio-Options.
-class OrxonoxGuiAudio
-{
- private:
-  Frame* audioFrame;        //!< The Frame that holds the audio Options.
-  Box* audioBox;            //!< The Box that holds the audio Options.
-  CheckButton* enableSound; //!< A Ckeckbutton for enabling Sound.
-  Slider* musicVolume;      //!< A Slider for music volume.
-  Slider* effectsVolume;    //!< A Slider for effects volume.
- public:
-  OrxonoxGuiAudio(void);
-  ~OrxonoxGuiAudio(void);
-  
-  Widget* getWidget(void);
-};
-#endif /* _ORXONOX_GUI_AUDIO_H */
Index: xonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_banner.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_banner.cc	(revision 4216)
+++ 	(revision )
@@ -1,81 +1,0 @@
-/* 
-   orxonox - the future of 3D-vertical-scrollers
-
-   Copyright (C) 2004 orx
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-
-   ### File Specific:
-   main-programmer: Benjamin Grauer
-
-*/
-
-#include "orxonox_gui_banner.h"
-
-/**
-   \brief Creates a new BannerEventBox and its content.
-*/
-OrxonoxGuiBanner::OrxonoxGuiBanner(void)
-{
-  // Banner Itself //
-  this->bannerEventBox = new EventBox("BannerEventBox");
-  this->bannerImage = new Image("banner.xpm");
-  this->bannerEventBox->fill(this->bannerImage);
-
-  // Banner Window //
-  this->logoWindow = new Window("Logo");
-
-#ifdef HAVE_GTK2
-  this->bannerEventBox->connectSignal("button_press_event", this->logoWindow, Window::windowOpen);
-
-  this->logoWindow->connectSignal("destroy", this->logoWindow, Window::windowClose);
-  this->logoWindow->connectSignal("delete_event", this->logoWindow, Window::windowClose);
-#endif /* HAVE_GTK2 */
-  this->logoEventBox = new EventBox();
-  this->logoBox = new Box('v');
-  this->logoLabel = new Label("OrxOnoX, Version: " PACKAGE_VERSION);
-  this->logoImage = new Image("banner.xpm");
-  this->logoEventBox->fill(this->logoImage);
-  
-  this->logoBox->fill(this->logoLabel);
-  this->logoBox->fill(this->logoEventBox);
-#ifdef HAVE_GTK2
-  this->logoEventBox->connectSignal("button_press_event", this->logoWindow, Window::windowClose);
-#endif /* HAVE_GTK2 */
-
-  this->logoWindow->fill(this->logoBox);
-  
-  Window::addWindow(this->logoWindow);
-}
-
-/**
-   \brief Destructs it.
-*/
-OrxonoxGuiBanner::~OrxonoxGuiBanner(void)
-{
-  // nothing to do here
-}
-
-/**
-   \brief Returns an EventBox
-   \return The EventBox, that holds the Banner.
-*/
-Widget* OrxonoxGuiBanner::getWidget(void)
-{
-  return this->bannerEventBox;
-}
-
-
Index: xonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_banner.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_banner.h	(revision 4216)
+++ 	(revision )
@@ -1,39 +1,0 @@
-/*!
-  \file orxonox_gui_banner.h
-  \brief  File that holds the class that creates the Banner-Image.\n
-  This is Commercial :-)
-*/
-
-#ifndef _ORXONOX_GUI_BANNER_H
-#define _ORXONOX_GUI_BANNER_H
-
-#include "orxonox_gui.h"
-
-//! Class that creates the Banner-Image
-class OrxonoxGuiBanner
-{
- private:
-  // the banner Frame
-  Frame* bannerFrame;       //!< The frame that holds the Banner.
-  Box* bannerBox;           //!< The box that holds the Banner.
-  EventBox* bannerEventBox; //!< an Image needs an EventBox to catch klicks.
-  Image* bannerImage;       //!< The Image for the Banner.
-  Label* bannerLabel;       //!< The Label of the Banner.
-
-  // the logo Window
-  Window* logoWindow;       //!< The Window that holds the Orxonox-CrewLogo.
-  EventBox* logoEventBox;   //!< The EventBox that holds the Orxonox-CrewLogo. it has to be an eventbox, because Images can not receive clicks.
-  Box* logoBox;             //!< The Box that holds the Orxonox-CrewLogo
-  Image* logoImage;         //!< The Orxonox-CrewLogo-Image
-  Label* logoLabel;         //!< The Label for the Orxonox-CrewLogo
-
- public:
-  OrxonoxGuiBanner(void);
-  ~OrxonoxGuiBanner(void);
-
-  Widget* getWidget(void);
-
-};
-
-
-#endif /* _ORXONOX_GUI_BANNER_H */
Index: xonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_exec.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_exec.cc	(revision 4216)
+++ 	(revision )
@@ -1,418 +1,0 @@
-/* 
-   orxonox - the future of 3D-vertical-scrollers
-
-   Copyright (C) 2004 orx
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-
-   ### File Specific:
-   main-programmer: Benjamin Grauer
-
-*/
-
-#include "orxonox_gui_exec.h"
-
-#include <iostream>
-#include <string>
-
-#include <sys/stat.h>
-#include <sys/types.h>
-
-
-HashTable* orxonoxFlagHash;
-
-/** 
-    \brief Creates the Exec-Frame
-*/
-OrxonoxGuiExec::OrxonoxGuiExec(void)
-{
-  configFile =(char*)malloc(512*sizeof(char));
-
-  this->execFrame = new Frame("Execute-Tags:");
-  this->execBox = new Box('v');
-  this->execFrame->setGroupName("misc");
-  
-  this->start = new Button("Start");
-#ifdef HAVE_GTK2
-  this->start->connectSignal("clicked", this, startOrxonox);
-#endif /* HAVE_GTK2 */
-  this->execBox->fill(start);
-  this->saveSettings = new CheckButton("Save Settings");
-  this->saveSettings->value = 1;
-  this->saveSettings->saveability();
-  this->execBox->fill(this->saveSettings);
-  this->verboseMode = new Menu("verbose mode", "nothing", "error", "warning", "info", "lastItem");
-  this->verboseMode->setFlagName("verbose", "v", 0);
-  this->verboseMode->saveability();
-  this->execBox->fill(this->verboseMode);
-  this->alwaysShow = new CheckButton("Always Show this Menu");
-  this->alwaysShow->setFlagName("gui", "g", 0);
-  this->alwaysShow->saveability();
-  this->execBox->fill(this->alwaysShow);
-  this->quit = new Button("Quit");
-#ifdef HAVE_GTK2
-  this->quit->connectSignal("clicked", this, OrxonoxGuiExec::quitOrxonox);
-  //  Window::mainWindow->connectSignal("remove", this, OrxonoxGuiExec::quitOrxonox);
-  Window::mainWindow->connectSignal("destroy", this, OrxonoxGuiExec::quitOrxonox);
-#endif /* HAVE_GTK2 */
-  this->execBox->fill(this->quit);
-
-  this->execFrame->fill(this->execBox);
-}
-
-/**
-   \brief Destructs the Execution-stuff
-*/
-OrxonoxGuiExec::~OrxonoxGuiExec(void)
-{
-  if(this->configFile)
-    delete []this->configFile;
-}
-
-/**
-   \brief Return the Frame
-   \return Returns the Exec-frame
-*/
-Widget* OrxonoxGuiExec::getWidget(void)
-{
-  return execFrame;
-}
-
-/* FILE HANDLING */
-
-/**
-   \brief sets the confDir and File-name out of an input-string
-*/
-void OrxonoxGuiExec::setConfFile(char* confFile)
-{
-  char splitter = 
-#ifdef __WIN32__ 
-    '\\';
-#else
-  '/';
-#endif
-  char* tmpConfFile = new char[strlen(confFile)+1];
-  strcpy(tmpConfFile, confFile);
-  char* tmp = strrchr(tmpConfFile, splitter);
-  if (tmp)
-    {
-      tmp[0] = '\0';
-      this->setConfDir(tmpConfFile);
-      this->setFileName(tmp+1);
-    }
-  else
-    {
-      this->setConfDir("~/");
-      this->setFileName(tmpConfFile);
-    }
-  delete []tmp;
-  delete []tmpConfFile;
-}
-
-/**
-   \brief sets the Directory of the configuration files
-   \param confDir the Directory for the configuration files
-*/
-void OrxonoxGuiExec::setConfDir(char* confDir)
-{
-  if (!strncmp(confDir, "~/", 2))
-    {
-      char tmp[500];
-#ifdef __WIN32__
-      strcpy(tmp, getenv("USERPROFILE"));
-#else
-      strcpy(tmp, getenv("HOME"));
-#endif
-      this->confDir = new char[strlen(tmp)+strlen(confDir)];
-      sprintf(this->confDir, "%s%s", tmp, confDir+1);
-    }
-  else
-    {
-      this->confDir = new char[strlen(confDir)+1];
-      strcpy(this->confDir, confDir);
-    }
-  PRINTF(3)("Config Directory is: %s.\n", this->confDir);
-  mkdir(this->confDir, 0755);
-}
-
-/**
-   \brief Sets the location of the configuration File.
-   \param fileName the location of the configFile
-
-   \todo: memory allocation could be better.
-
-   The name will be parsed from ~/ to /home/[username] on unix and c:/Documents and Settings/username/Settings/ on Windows
-*/
-void OrxonoxGuiExec::setFileName(char* fileName)
-{
-  if (!this->confDir)
-    this->setConfDir("~/");
-  this->configFile = new char[strlen(this->confDir)+strlen(fileName)+2];
-  sprintf(this->configFile, "%s/%s", this->confDir, fileName);
-  PRINTF(3)("ConfigurationFile is %s.\n", this->configFile);
-}
-
-/**
-   \returns The name of the Configuration-File
-*/
-char* OrxonoxGuiExec::getConfigFile(void) const
-{
-  return this->configFile;
-}
-
-/**
-   \brief checks if a option should be saved.
-   \return 1 if it should 0 if not/
-*/
-int OrxonoxGuiExec::shouldsave()
-{
-  return(static_cast<Option*>(this->saveSettings)->value);
-}
-
-/** 
-    \brief Saves the configuration-file to the Disk.\n
-    \param widget from which Widget on should be saved.
-
-    this Function only opens and closes the file, in between OrxonoxGuiExec::writeFileText(Widget* widget) will execute the real writing process.
-*/
-void OrxonoxGuiExec::writeToFile(Widget* widget)
-{
-  this->CONFIG_FILE = fopen(configFile, "w");
-  if(this->CONFIG_FILE)
-    this->writeFileText(widget, 0);
-  fclose(this->CONFIG_FILE);
-}
-
-/**
-   \brief Actually writes into the configuration file to the disk.
-   \param widget from which Widget on should be saved.
-   \param depth initially "0", and grows higher, while new Groups are bundeled.
-*/
-void OrxonoxGuiExec::writeFileText(Widget* widget, int depth)
-{
-  int counter = 0;
-  while(counter < depth &&((widget->isOption>0
-			      &&(static_cast<Option*>(widget)->isSaveable()))
-			     ||(widget->isOption<0
-				&& static_cast<Packer*>(widget)->getGroupName())))
-    {
-      fprintf(this->CONFIG_FILE, "  ", depth);
-      counter++;
-    }
-  
-  // check if it is a Packer, and if it is, check if it has a name and if there is something in it.
-  if(widget->isOption <0)
-    {
-      if(static_cast<Packer*>(widget)->getGroupName())
-	{
-	  fprintf(CONFIG_FILE, "[%s]\n", static_cast<Packer*>(widget)->getGroupName());
-	  this->writeFileText(static_cast<Packer*>(widget)->down, depth+1);
-	  fprintf(CONFIG_FILE, "\n");
-	}
-      else
-	{
-	  this->writeFileText(static_cast<Packer*>(widget)->down, depth);
-	}
-    } 
-  //  if(widget->isOption == 0)
-  //    printf("%s\n",widget->title);
-  if(widget->isOption >= 1)
-    if (static_cast<Option*>(widget)->isSaveable())
-      {
-	char Buffer[256];
-	char* space2under;
-	strcpy(Buffer, static_cast<Option*>(widget)->title);
-	if(strchr(Buffer, '_'))
-	  cout << "Warning Optionname" << Buffer << " is not Valid for Saving, because it includes an underscore" << endl;
-	while(space2under = strchr(Buffer, ' '))
-	  {
-	    space2under[0] = '_';
-	  }
-	  fprintf(CONFIG_FILE, "%s = %s\n", Buffer, static_cast<Option*>(widget)->save());
-      }
-
-  if(widget->next != NULL)
-    this->writeFileText(widget->next, depth);
-}
-
-/**
-   \brief Reads in Configuration Data.
-   \param widget from which Widget on should be saved.
-*/
-void OrxonoxGuiExec::readFromFile(Widget* widget)
-{
-  this->CONFIG_FILE = fopen(configFile, "r");
-  VarInfo varInfo;
-  if(this->CONFIG_FILE)
-    {
-      Widget* groupWidget = widget;
-      char Buffer[256] = "";
-      char Variable[256]= "";
-      char* Value;
-      while(fscanf(this->CONFIG_FILE, "%s", Buffer) != EOF)
-	{
-	  // group-search //
-	  if(!strncmp(Buffer, "[", 1))
-	    {
-	      if((groupWidget = locateGroup(widget, Buffer, 1))==NULL)
-		{
-		  cout << "!!There is no group called " << Buffer << " in this GUI.\n First best Widget will get the Infos assigned.\n Config-File will be updated in next Save\n";
-		  groupWidget = widget;
-		}
-	      else
-		PRINT(3)("Group %s located.\n", static_cast<Packer*>(groupWidget)->groupName);
-	    }
-	  // option-setting //
-	  if(!strcmp(Buffer, "="))
-	    {
-	      char* under2space;
-	      while(under2space = strchr(Variable, '_'))
-		{
-		  sprintf(under2space, " %s", under2space+1);
-		}
-	      
-	      fscanf(this->CONFIG_FILE, "%s", Buffer);
-	      varInfo.variableName = Variable;
-	      varInfo.variableValue = Buffer;
-	      groupWidget->walkThrough(this->readFileText, &varInfo, 0);
-	      sprintf(Variable, "");
-	    }
-	  sprintf(Variable, "%s", Buffer);
-	}
-      widget->walkThrough(widget->setOptions, 0);
-    }
-}
-
-/**
-   \brief Maps Confugurations to the Options.
-   \param widget which widget downwards
-   \param varInfo Information about the Variable to read
-*/
-void OrxonoxGuiExec::readFileText(Widget* widget, void* varInfo)
-{
-  VarInfo* info =(VarInfo*)varInfo;
-  if(widget->title && !strcmp(widget->title, info->variableName))
-    {
-      PRINT(3)("Located Option %s.\n", widget->title);
-      if(widget->isOption >= 1)
-	  static_cast<Option*>(widget)->load(info->variableValue);
-    }
-}
-
-/**
-   \brief Locates a Group.
-   \param widget The Widget from where to search from
-   \param groupName The GroupName for which to search.
-   \param depth The Depth of the search seen from the first widget we searched from.
-   \returns The Widget that holds the Group, or the NULL if the Group wasn't found.
-
-   \todo do this in gui-gtk.
-*/
-Widget* OrxonoxGuiExec::locateGroup(Widget* widget, char* groupName, int depth)
-{
-  Widget* tmp;
-
-  // removes the trailing and ending [ ].
-  if(!strncmp(groupName, "[", 1))
-    {
-      groupName = groupName+1;
-      groupName[strlen(groupName)-1] = '\0';
-    }
-
-  if(widget->isOption < 0)
-    {
-      if(static_cast<Packer*>(widget)->getGroupName() && !strcmp(groupName, static_cast<Packer*>(widget)->getGroupName()))
-	{
-	  return widget;
-	}
-      else
-	{
-	  if((tmp = locateGroup(static_cast<Packer*>(widget)->down, groupName, depth+1)) != NULL)
-	    return tmp;
-	}
-    } 
-  
-  if(widget->next != NULL && depth != 0)
-    {
-      if((tmp = locateGroup(widget->next, groupName, depth)) != NULL)
-	return tmp;
-    }
-  return NULL;
-}
-
-#ifdef HAVE_GTK2
-/**
-   \brief Starts ORXONOX.(not really implemented yet, but the function is there.\n
-   \param widget the widget that executed the start command
-   \param data additional data
-
-   This is a Signal and can be executed through Widget::signal_connect
-*/
-int OrxonoxGuiExec::startOrxonox(GtkWidget* widget, void* data)
-{
-  OrxonoxGuiExec* exec =(OrxonoxGuiExec*)data;
-  if(exec->shouldsave())
-    exec->writeToFile(Window::mainWindow);
-  cout << "Starting Orxonox" <<endl;
-  gtk_main_quit();
-  system("cd ..;./orxonox"); //!< \todo fix this. should execute orxonox for real(coded not over the shell)
-}
-
-/**
-   \brief Starts ORXONOX.(not really implemented yet, but the function is there.\n
-   \param widget the widget that executed the start command
-   \param data additional data
-
-   This is a Signal and can be executed through Widget::signal_connect
-*/
-int OrxonoxGuiExec::quitOrxonox(GtkWidget* widget, void* data)
-{
-  OrxonoxGuiExec* exec =(OrxonoxGuiExec*)data;
-  PRINT(3)( "Quitting Orxonox %p\n", exec);
-  if(exec->shouldsave())
-    exec->writeToFile(Window::mainWindow);
-  gtk_main_quit();
-}
-#else /* HAVE_GTK2 */
-/**
-   \brief Starts ORXONOX.(not really implemented yet, but the function is there.\n
-   \param widget the widget that executed the start command
-   \param data additional data
-*/
-int OrxonoxGuiExec::startOrxonox(void* widget, void* data)
-{
-  OrxonoxGuiExec* exec =(OrxonoxGuiExec*)data;
-  PRINT(3)("Starting Orxonox\n");
-  if(exec->shouldsave())
-    exec->writeToFile(Window::mainWindow);
-  system("cd ..;./orxonox"); //!< \todo fix this. should execute orxonox for real(coded not over the shell)
-}
-/**
-   \brief Quits ORXONOX.
-   \param widget the widget that executed the Quit command
-   \param data additional data
-
-   This is a Signal and can be executed through Widget::signal_connect
-*/
-int OrxonoxGuiExec::quitOrxonox(void* widget, void* data)
-{
-  OrxonoxGuiExec* exec =(OrxonoxGuiExec*)data;
-  PRINT(3)("Quiting Orxonox");
-  if(exec->shouldsave())
-    exec->writeToFile(Window::mainWindow);
-}
-
-#endif /* HAVE_GTK2 */
Index: xonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_exec.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_exec.h	(revision 4216)
+++ 	(revision )
@@ -1,70 +1,0 @@
-/*!
-  \file orxonox_gui_exec.h
-  \brief File that holds the class that creates the execute-Options.
-*/
-
-#ifndef _ORXONOX_GUI_EXEC_H
-#define _ORXONOX_GUI_EXEC_H
-
-#include "orxonox_gui.h"
-#include <stdio.h>
-using namespace std;
-
-//! Class that creates the execute-Options.
-class OrxonoxGuiExec
-{
- private:
-  Frame* execFrame;            //!< The Frame that holds the ExecutionOptions.
-  Box* execBox;                //!< The Box that holds the ExecutionOptions.
-  Button* start;               //!< The start Button of orxonox.
-  CheckButton* saveSettings;   //!< A CheckBox for if the Options should be saved.
-  Menu* verboseMode;           //!< A Menu for setting the verbose-Mode. \todo setting up a verbose-class.
-  CheckButton* alwaysShow;     //!< A CheckButton, for if orxonox should start with or without gui.
-  Button* quit;                //!< A Button to quit the Gui without starting orxonox.
-  char* confDir;               //!< The directory of the orxonox-configuration-files.
-  char* configFile;            //!< The name of the .orxonox.conf(ig)-file.
-  FILE* CONFIG_FILE;           //!< Filehandler for reading and writing.
-  
-  //! A struct that holds informations about variables.
-  struct VarInfo
-  {
-    char* variableName;        //!< The Name of this variable;
-    char* variableValue;       //!< The Value this variable gets.
-  };
-
- public:
-  OrxonoxGuiExec(void);
-  ~OrxonoxGuiExec(void);
-  
-  Widget* getWidget(void);
-
-  void setConfFile(char* confFile);
-  void setConfDir(char* confDir);
-  void setFileName(char* fileName);
-  char* getConfigFile(void) const;
-  int shouldsave(void);
-  void writeToFile(Widget* widget);
-  void writeFileText(Widget* widget, int depth);
-  void readFromFile(Widget* widget);
-  static void readFileText(Widget* widget, void* varInfo);
-  Widget* locateGroup(Widget* widget, char* groupName, int depth);
-
-#ifdef HAVE_GTK2
-  static int startOrxonox(GtkWidget *widget, void* data);
-  static int quitOrxonox(GtkWidget *widget, void* data);
-#else /* HAVE_GTK2 */
-  static int startOrxonox(void* widget, void* data);
-  static int quitOrxonox(void* widget, void* data);
-#endif /* HAVE_GTK2 */
-};
-
-//! A simple hashtable 
-struct HashTable
-{
-  char* name;           //!< name of the entry
-  char* value;          //!< value of the entry
-  HashTable* next;      //!< pointer to the next entry
-};
-
-
-#endif /* _ORXONOX_GUI_EXEC_H */
Index: xonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_flags.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_flags.cc	(revision 4216)
+++ 	(revision )
@@ -1,106 +1,0 @@
-/* 
-   orxonox - the future of 3D-vertical-scrollers
-
-   Copyright (C) 2004 orx
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-
-   ### File Specific:
-   main-programmer: Benjamin Grauer
-
-*/
-
-#include "orxonox_gui_flags.h"
-
-/**
-   \brief Creates the Flags-Frame
-*/
-OrxonoxGuiFlags::OrxonoxGuiFlags(void)
-{
-  this->flagsFrame = new Frame("Orxonox-Startup-Flags:");
-  this->flagsBox = new Box('v');
-
-  this->flagsLabel = new Label();
-  this->flagsLabel->setSize(260,60);
-  this->flagsBox->fill(flagsLabel);
-  this->shortFlags = new CheckButton("shortFlags");
-  this->flagsBox->fill(shortFlags);
-
-  this->flagsFrame->fill(flagsBox);
-}
-
-/**
-   \brief Destructs the Flags-stuff
-*/
-OrxonoxGuiFlags::~OrxonoxGuiFlags(void)
-{
-  // nothing to do here
-}
-
-/**
-   \brief Function to return the Frame that holds the Flagtext.
-   \returns Frame that holds the Flagtext.
-*/
-Widget* OrxonoxGuiFlags::getWidget(void)
-{
-  return this->flagsFrame;
-}
-
-/**
-   \brief Sets the Flags from widget downwards.
-   \param widget the Widget from which on to scan for deeper Options and their settings.
-*/
-void OrxonoxGuiFlags::setTextFromFlags(Widget* widget)
-{
-  FlagInfo flagInfo;
-  flagInfo.shortFlags = this->shortFlags;
-  flagInfo.flagsLabel = this->flagsLabel;
-
-  this->flagsLabel->ereaseText();
-  this->flagsLabel->appendText("orxonox");
-  widget->walkThrough(OrxonoxGuiFlags::flagsText, &flagInfo, 0);
-  //  flagsLabel->setTitle(flagText);
-}
-
-/** 
-    \brief this actually sets the flagtext, and appends it to flagText
-    \param widget like OrxonoxGuiFlags::setTextFromFlags(widget)
-    \param flagInfo Information aboout the Flag that should be updated.
-*/
-void OrxonoxGuiFlags::flagsText(Widget* widget, void* flagInfo)
-{
-  FlagInfo* info =(FlagInfo*)flagInfo;
-  if(widget->isOption >= 1)
-    if (static_cast<Option*>(widget)->value != static_cast<Option*>(widget)->defaultValue )
-      {
-	if(info->shortFlags->isActive() && static_cast<Option*>(widget)->flagNameShort)
-	  {
-	    info->flagsLabel->appendText(" -");
-	    info->flagsLabel->appendText(static_cast<Option*>(widget)->flagNameShort);
-	  }
-	else if(!info->shortFlags->isActive() && static_cast<Option*>(widget)->flagName)
-	  {
-	    info->flagsLabel->appendText(" --");
-	    info->flagsLabel->appendText(static_cast<Option*>(widget)->flagName);
-	  }
-
-	if(static_cast<Option*>(widget)->isOption == 2)
-	  {
-	    info->flagsLabel->appendText("=");
-	    info->flagsLabel->appendInt(static_cast<Option*>(widget)->value);
-	  }
-      }
-}
Index: xonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_flags.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_flags.h	(revision 4216)
+++ 	(revision )
@@ -1,35 +1,0 @@
-/*!
-  \file orxonox_gui_flags.h
-  \brief File that holds the class that creates the flags-Text.
-*/
-
-#ifndef _ORXONOX_GUI_FLAGS_H
-#define _ORXONOX_GUI_FLAGS_H
-
-#include "orxonox_gui.h"
-
-//! Class that creates the flags-Text.
-class OrxonoxGuiFlags
-{
- private:
-  Frame* flagsFrame;          //!< The Frame that holds the flagsDisplay.
-  Box* flagsBox;              //!< The Box that holds the flagsDisplay.
-  CheckButton* shortFlags;    //!< CheckButton to change the display of short and long flags \todo show long if long not availible...
-  Label* flagsLabel;          //!< The Label of the Flags
-
- public:
-  OrxonoxGuiFlags(void);
-  ~OrxonoxGuiFlags(void);
-
-  void setTextFromFlags(Widget* widget);
-  static void flagsText(Widget* widget, void* flagInfo);
-  
-  //! Struct that handles flag information.
-  struct FlagInfo
-  {
-    CheckButton* shortFlags;     //!< Button for the flag.
-    Label* flagsLabel;           //!< Label for the flag.
-  };
-  Widget* getWidget(void);
-};
-#endif /* _ORXONOX_GUI_FLAGS_H */
Index: xonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_gtk.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_gtk.cc	(revision 4216)
+++ 	(revision )
@@ -1,1813 +1,0 @@
-/* 
-   orxonox - the future of 3D-vertical-scrollers
-
-   Copyright (C) 2004 orx
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-
-   ### File Specific:
-   main-programmer: Benjamin Grauer
-
-*/
-
-
-#include "orxonox_gui_gtk.h"
-
-#include <stdarg.h>
-#include <iostream>
-
-
-using namespace std;
-
-// temporarily.
-#include "orxonox_gui_flags.h"
-extern Window* orxonoxGUI;
-extern OrxonoxGuiFlags* flags;
-
-/**
-   \brief Initializes the Guis GTK-stuff.
-   \param argc the argument count.
-   \param argv The Argument strings.
-*/
-bool initGUI(int argc, char *argv[])
-{
-#ifdef HAVE_GTK2
-#ifdef HAVE_GTHREAD
-  PRINTF(3)("Initializing the ThreadSystem of the GUI\n");
-  g_thread_init(NULL);
-  gdk_threads_init();
-#endif /* HAVE_GTHREAD */
-  gtk_init(&argc, &argv);
-  gtk_rc_parse( "rc" );
-#endif /* HAVE_GTK2 */
-}
-
-
-/**
-   \brief enters the GUI's main-loop
-*/
-bool mainloopGUI(void)
-{
-#ifdef HAVE_GTK2
-  gdk_threads_enter();
-  gtk_main();
-  gdk_threads_leave();
-  delete Window::mainWindow;
-#else /* HAVE_GTK2 */
-  char boolAns = 'y';
-  char ans[10];
-  PRINT(0)("================================\n");
-  PRINT(0)("= ORXONOX CONFIGURATION WIZARD =\n");
-  PRINT(0)("================================    - version:" PACKAGE_VERSION "\n");
-
-  while(true)
-    {
-      PRINT(0)("\n Listing all the Orxonox Options: \n");
-      PRINT(0)("  #############################\n");
-      Window::mainWindow->walkThrough(Widget::listOptionsAndGroups, 1);
-      
-      PRINT(0)("\nDo you want change any of the above values now? [Yn] ");
-      cin >>boolAns ;
-      if (boolAns =='n' || boolAns=='N')
-	break;
-      
-      PRINT(0)("\n Listing all groups\n");
-      PRINT(0)("  #################\n");
-      int groupCount = 0;
-      Window::mainWindow->walkThrough(Widget::listGroups, &groupCount, 1);
-      
-      PRINT(0)("\nIn which Group? [1-%d] ", groupCount);
-      Packer* group;
-      while(true)
-	{
-	  cin >> ans;
-	  int ansIp = atoi(ans);
-	  if (ansIp <= groupCount)
-	    {
-	      group = static_cast<Packer*>(Window::mainWindow->findGroupByNumber(&ansIp, 1));
-	      break;
-	    }
-	  else
-	    PRINT(0)("\nChoose a smaler Number please: [1-%d] ", groupCount);
-	}
-      PRINT(0)("\n\nGroup: [%s]\n\n", group->groupName);
-      int optionCount = 0;
-      group->walkThrough(Widget::listOptions, &optionCount, 0);
-      PRINT(0)("\nWhich Option? [1-%d] ", optionCount);
-      Option* option;
-      while(true)
-	{
-	  cin >> ans;
-	  int ansIp = atoi(ans);
-	  if (ansIp <= groupCount)
-	    {
-	      option = static_cast<Option*>(group->findOptionByNumber(&ansIp, 0));
-	      break;
-	    }
-	  else
-	    PRINT(0)("\nChoose a smaler Number please: [1-%d] ", optionCount);
-	}
-      PRINT(0)("\n\n:: %s ::\n", option->title);
-      option->changeOption();
-      
-      // here follows the rest.... this will be nasty.
-      //! \todo move this into the gui-gtk-file
-      //! \todo finish it.
-      //! \todo memory leek at save(); and save is a BAD word, use saveString instead, or something like it.
-    }
-#endif /* HAVE_GTK2 */
-  
-}
-
-
-//////////////////////////////
-/// DEFINING WIDGET-CLASES ///
-//////////////////////////////
-
-/* WIDGET */
-/**
-   \brief constructs a Widget
-*/
-Widget::Widget(void)
-{
-  next = NULL;
-  this->title = NULL;
-  return;
-}
-
-/**
-   \brief deletes any given Widget
-   This is still pretty crappy.
-*/
-Widget::~Widget(void)
-{
-    if (this->title)
-    {
-      delete []this->title;
-    }
-  
-  PRINTF(4)("deleting the Widget part.\n");
-
-  PRINTF(4)("deleting recursively\n");
-
-  // deleting next item if existent
-  if (this->next)
-    delete this->next;
-  this->next = NULL;
-  //!  \todo not hiding widget, deleting.
-  //  this->hide();
-  //  delete this->widget;
-}
-
-/**
-   \brief sets a new Title to a Widget
-   \param title The new Title to set to the Widget
-*/
-void Widget::setTitle(const char* title)
-{
-  if (this->title)
-    delete []this->title;
-  this->title = new char[strlen(title)+1];
-  strcpy(this->title, title);
-}
-
-/**
-   \brief makes the widget visible.
-*/
-void Widget::show(void)
-{
-#ifdef HAVE_GTK2
-  gtk_widget_show(this->widget);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief hides the widget.
-*/
-void Widget::hide(void)
-{
-#ifdef HAVE_GTK2
-  gtk_widget_hide(this->widget);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Sets the resolution of a specific widget to the given size.
-   \param width the width of the widget to set.
-   \param height the height of the widget to set.
-*/
-void Widget::setSize(int width, int height)
-{
-#ifdef HAVE_GTK2
-  gtk_widget_set_usize(this->widget, width, height);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief searches through widgets for a Name.
-*/
-Widget* Widget::findWidgetByName(char* name, unsigned int depth)
-{
-
-  if (this->title && !strcmp(this->title, name))
-    return this;
-
-  if (this->isOption < 0 && static_cast<Packer*>(this)->down)
-    {
-      Widget* tmp = static_cast<Packer*>(this)->down->findWidgetByName(name, depth+1);
-      if (tmp)
-	return tmp;
-    }
-  
-  if (depth>0 && this->next)
-    return this->next->findWidgetByName(name, depth);
-
-  return NULL;
-}
-
-/**
-   \brief Moves through all the Widgets downwards from this and executes the function on them.
-   \param function must be of type void and takes a Widget* as an Input. 
-   \param depth the current depth. if > 0 then the next Widget will also be walked through.
-*/
-void Widget::walkThrough(void(*function)(Widget*), unsigned int depth)
-{
-  function(this);
-  if (this->isOption < 0)
-    {
-      static_cast<Packer*>(this)->down->walkThrough(function, depth+1);
-    } 
-
-  if (this->next && depth != 0)
-    this->next->walkThrough(function, depth);
-}
-
-/**
-   \brief Moves through all the Widgets downwards from this and executes the function on them.
-   \param function must be of type void and takes a Widget* as an Input.
-   \param data Additional Data you want to pass to the function.
-   \param depth the current depth. if > 0 then the next Widget will also be walked through.
-*/
-void Widget::walkThrough(void(*function)(Widget*, void*), void* data, unsigned int depth)
-{
-  function(this, data);
-  if (this->isOption < 0)
-    {
-      static_cast<Packer*>(this)->down->walkThrough(function, data, depth+1);
-    }
-  if (this->next && depth != 0)
-    this->next->walkThrough(function, data, depth);
-}
-
-/** 
-    \brief This is for listing the options of "widget"
-    \param widget specifies the widget that should be listed
-*/
-void Widget::listOptionsAndGroups(Widget* widget)
-{
-  if (widget->isOption < 0 && static_cast<Packer*>(widget)->groupName)
-    PRINT(0)("[%s]\n", static_cast<Packer*>(widget)->groupName);
-  if (widget->isOption >= 1)
-    {
-      Widget::listOptions(widget);
-    }
-}
-
-/** 
-    \brief This is for listing the options of "widget"
-    \param widget specifies the widget that should be listed
-*/
-void Widget::listOptions(Widget* widget)
-{
-  if(widget->isOption >= 1)
-    PRINT(0)("  %s is %s\n", static_cast<Option*>(widget)->title, static_cast<Option*>(widget)->save());
-}
-
-/** 
-    \brief This is for listing the options of "widget"
-    \param widget specifies the widget that should be listed
-    \param data A Counter, that always knows how many Options have been found yet.
-*/
-void Widget::listOptions(Widget* widget, void* data)
-{
-  
-  if (widget->isOption >= 1)
-    {
-      int* count =(int*)data;
-      *count = *count +1;
-      PRINT(0)(" %d:%s is %s\n", *count, static_cast<Option*>(widget)->title, static_cast<Option*>(widget)->save());
-    }
-}
-
-/** 
-    \brief Finds an Option by a given number(the n'th option found away from this Widget)
-    \param number The Count of options to wait(by reference)
-    \param depth The depth of the sarch. if 0 it will not search next pointer
-    
-    \todo should return Option* would be much sexier.
-*/
-Widget* Widget::findOptionByNumber(int* number, unsigned int depth)
-{
-  if (isOption > 0)
-    {
-      --*number;
-      if (*number <= 0)
-	{
-	  return this;
-	}
-    }
-  if (this->isOption < 0 && static_cast<Packer*>(this)->down)
-    {
-      Widget* tmp = static_cast<Packer*>(this)->down->findOptionByNumber(number, depth+1);
-      if (tmp)
-	return tmp;
-    }
-  if (depth>0 && this->next)
-    return this->next->findOptionByNumber(number, depth);
-
-  return NULL;
-}
-
-/** 
-    \brief This is for listing the groups of "widget"
-    \param widget specifies the widget that should be listed
-*/
-void Widget::listGroups(Widget* widget)
-{
-  if (widget->isOption < 0 && static_cast<Packer*>(widget)->groupName)
-    cout << "[" << static_cast<Packer*>(widget)->groupName << "]\n";
-}
-
-/** 
-    \brief This is for listing the Groups of "widget". It also displays the n'th number found.
-    \param widget specifies the widget that should be listed
-    \param data the Counter, that will show the number(this function will raise it by one if a Group is fount.
-*/
-void Widget::listGroups(Widget* widget, void* data)
-{
-  if (widget->isOption < 0 && static_cast<Packer*>(widget)->groupName)
-    {
-      int* count =(int*)data;
-      *count = *count +1;
-      cout << *count <<": [" << static_cast<Packer*>(widget)->groupName << "]\n";
-    }
-}
-
-/** 
-    \brief Finds a Group by a given number(the n'th Group found away from this Widget)
-    \param number The Count of options to wait(by reference)
-    \param depth The depth of the sarch. if 0 it will not search next pointer
-*/
-Widget* Widget::findGroupByNumber(int* number, unsigned int depth)
-{
-  if (isOption < 0 && static_cast<Packer*>(this)->groupName)
-    {
-      --*number;
-      if (*number <= 0)
-	{
-	  return this;
-	}
-    }
-  if (this->isOption < 0 && static_cast<Packer*>(this)->down)
-    {
-      Widget* tmp = static_cast<Packer*>(this)->down->findGroupByNumber(number, depth+1);
-      if (tmp)
-	return tmp;
-    }
-  if (depth>0 && this->next)
-    return this->next->findGroupByNumber(number, depth);
-
-  return NULL;
-}
- 
-/** 
-    \brief This is for setting the option of "widget"
-    \param widget specifies the widget that should be set.
-*/
-void Widget::setOptions(Widget* widget)
-{
-  if (widget->isOption >= 1)
-    static_cast<Option*>(widget)->redraw();
-}
-
-/**
-   \brief Walks through all the Flags given at startuptime.
-*/
-void Widget::flagCheck(Widget* widget, void* flagName)
-{
-  if (widget->isOption>=1)
-    {      
-      Option* option =(Option*)widget;
-      char* name =(char*)flagName;
-      char* value = NULL;
-      bool found = false;
-      // check if long flag matches
-      if ((option->flagName && strlen(name)>2 && !strncmp(name+2, option->flagName, strlen(option->flagName)) &&(name[strlen(option->flagName)+2] == '\0' || name[strlen(option->flagName)+2] == '=') ))
-	{
-	  found = true;
-	  if (name[strlen(option->flagName)+2] == '=')
-	    {
-	      value = name+strlen(option->flagName)+3;
-	    }
-	}
-      else if (option->flagNameShort && strlen(name)>1 && !strncmp(name+1, option->flagNameShort, strlen(option->flagNameShort))&&(name[strlen(option->flagNameShort)+1] == '\0' || name[strlen(option->flagNameShort)+1] == '=')) // check if short flag matches
-	{
-	  found = true;
-	  if (name[strlen(option->flagNameShort)+1] == '=')
-	    {
-	      value = name+strlen(option->flagNameShort)+2;
-	    }	  
-	}
-
-      if (found)
-	{
-	  PRINT(3)("found matching Flag %s\n", name);
-	  if (value)
-	    {
-	      PRINT(3)("with Value %s\n", value);
-	      option->value = atoi(value);
-	    }
-	  else
-	    {
-	      option->value = !option->defaultValue;
-	    }
-	  option->redraw();
-	}
-
-    }
-}
-
-#ifdef HAVE_GTK2
-/** 
-    \brief Connect any signal to any given Sub-widget
-*/
-gulong Widget::connectSignal(char* event, gint(*signal)(GtkWidget*, GdkEvent*, void *))
-{
-  return g_signal_connect(G_OBJECT(this->widget), event, G_CALLBACK(signal), NULL);
-}
-
-/**
-   \brief Connect a signal with additionally passing the whole Object
-*/
-gulong Widget::connectSignal(char* event, gint(*signal)( GtkWidget*, Widget *))
-{
-  return g_signal_connect(G_OBJECT(this->widget), event, G_CALLBACK(signal), this);
-}
-
-/**
-   \brief Connect a signal with additionally passing a whole external Object
-*/
-gulong Widget::connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, GdkEvent*, void *))
-{
-  return g_signal_connect(G_OBJECT(this->widget), event, G_CALLBACK(signal), extObj);
-}
-
-/**
-   \brief Connect a signal with additionally passing a whole external Object
-*/
-gulong Widget::connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, void *))
-{
-  return g_signal_connect(G_OBJECT(this->widget), event, G_CALLBACK(signal), extObj);
-}
-
-/**
-   \brief Connect a signal with additionally passing a whole external Object
-*/
-gulong Widget::connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, GdkEventKey*, void *))
-{
-  return g_signal_connect(G_OBJECT(this->widget), event, G_CALLBACK(signal), extObj);
-}
-
-void Widget::disconnectSignal(gulong signalID)
-{
-  g_signal_handler_disconnect(G_OBJECT(this->widget), signalID);
-}
-
-/**
-   \brief Signal that does absolutely nothing
-   \param widget The widget that initiated the Signal
-   \param event The event-type.
-   \param nothing nothin.
-*/
-gint Widget::doNothingSignal(GtkWidget *widget, GdkEvent* event, void* nothing)
-{
-}
-#endif /* HAVE_GTK2 */
-
-//void deleteWidget(Widget* lastWidget)
-
-
-/* PACKERS */
-/**
-   \brief Constructs a Packer
-*/
-Packer::Packer(void)
-{
-  this->down = NULL;
-  this->groupName = NULL;
-}
-
-/**
-   \brief Destroys a Packer.
-*/
-Packer::~Packer(void)
-{ 
-  PRINTF(4)("deleting the Packer part.\n");
-  
-  if (this->groupName)
-    delete []this->groupName;
-
-  //deleting recursively.
-  if (this->down)
-    delete this->down;
-  this->down = NULL;
-}
-
-/**
-   \brief Sets the group name under which all the lower widgets of this will be saved.
-   \param name The name of the group.
-*/
-void Packer::setGroupName(char* name)
-{
-  if (this->groupName)
-    delete []this->groupName;
-  this->groupName = new char[strlen(name)+1];
-  strcpy(this->groupName, name);
-}
-
-/**
-   \brief Retrieves the group name under which all the lower widgets of this will be saved.
-   \returns name The name of the group.
-*/
-char* Packer::getGroupName(void)
-{
-  return this->groupName;
-}
-
-/* CONTAINERS */
-
-/**
-   \brief Initializes a Container.
-
-   sets the Container-Specific defaults.
-*/
-Container::Container(void)
-{
-  this->isOption = -1;
-}
-
-/**
-   \brief Destroys a Container.
-*/
-Container::~Container(void)
-{ 
-  PRINTF(4)("deleting the Container part.\n");
-}
-
-/**
-   \briefFills a Container with lowerWidget.
-   \param lowerWidget the Widget that should be filled into the Container.
-
-   It does this by filling up the down pointer only if down points to NULL.
-*/
-void Container::fill(Widget *lowerWidget)
-{
-  if (this->down == NULL)
-    {
-#ifdef HAVE_GTK2
-      gtk_container_add(GTK_CONTAINER(this->widget), lowerWidget->widget);
-#endif /* HAVE_GTK2 */
-      this->down = lowerWidget;
-    }
-  else
-    PRINTF(1)("!!error!! You try to put more than one Widget into a Container. \nNot including this item.\nThis is only possible with Boxes.\n");
-}
-
-// gtk_container_set_border_width(GTK_CONTAINER(widget), 5);
-
-/* WINDOW */
-
-Window* Window::mainWindow = NULL;
-
-/**
-   \brief Adds a new Window Windows to the List of Windows.
-   \param windowToAdd The Windows that should be added to the List
-   \todo this instead of windowToAdd(possibly)
-*/
-void Window::addWindow(Window* windowToAdd)
-{
-  if (!mainWindow)
-    {
-      mainWindow = windowToAdd;
-      return;
-    }
-
-  Widget* tmpWindow = mainWindow;
-  while(tmpWindow->next)
-    tmpWindow = tmpWindow->next;
-  tmpWindow->next = windowToAdd;
-  
-  return;
-}
-      
-
-/**
-   \brief Creating a new Window without a Name
-*/
-Window::Window(void)
-{
-  this->init();
-}
-
-/**
-   \brief Creating a Window with a name
-   \param windowName the name the window should get.
-*/
-
-Window::Window(char* windowName)
-{
-  this->init();
-  this->setTitle(windowName);
-}
-
-/**
-   \brief Destructs a Window.
-*/
-Window::~Window(void)
-{
-  if (this->title)
-    PRINTF(3)("deleting the Window: %s\n", this->title);
-  else 
-    PRINTF(3)("deleting the Window.\n");
-  //  this->hide();
-}
-
-/**
-   \brief initializes a new Window
-*/
-void Window::init(void)
-{
-  if (!mainWindow)
-    mainWindow = this;
-  
-  isOpen = false;
-
-#ifdef HAVE_GTK2
-  widget = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-  gtk_window_set_policy(GTK_WINDOW(widget), TRUE, TRUE, TRUE);
-#if !defined(__WIN32__)
-  //  gtk_window_set_decorated(GTK_WINDOW(widget), FALSE);
-#endif 
-  gtk_container_set_border_width(GTK_CONTAINER(widget), 3);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Shows all Widgets that are included within this->widget.
-*/
-void Window::showall(void)
-{
-  if (!this->isOpen)
-    {
-      //      printf("showall\n");
-#ifdef HAVE_GTK2
-      gtk_widget_show_all(this->widget);
-#endif /* HAVE_GTK2 */ 
-     this->isOpen = true;
-    }
-  else
-    {
-      //      printf("showone\n");
-#ifdef HAVE_GTK2
-      gtk_widget_show(this->widget);
-#endif /* HAVE_GTK2 */
-    }
-}
-
-/**
-   \brief Set The Window-title to title
-   \param title title the Window should get.
-*/
-void Window::setTitle(const char* title)
-{
-  if (this->title)
-    delete []this->title;
-  this->title = new char[strlen(title)+1];
-  strcpy(this->title, title);
-#ifdef HAVE_GTK2
-  gtk_window_set_title(GTK_WINDOW(widget), title);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief opens up a Window and fixes the Focus to it
-*/
-void Window::open(void)
-{
-  if (this != mainWindow)
-    {
-      isOpen = true;
-#ifdef HAVE_GTK2
-      gtk_widget_show_all(this->widget);
-      gtk_grab_add(this->widget);
-#endif /* HAVE_GTK2 */
-    }
-}
-
-/**
-   \brief closes up a Window and removes the Focus from it
-*/
-void Window::close(void)
-{
-  if (this != mainWindow)
-    {
-      this->isOpen = false;
-#ifdef HAVE_GTK2
-      gtk_grab_remove(this->widget);
-      gtk_widget_hide(this->widget);
-#endif /* HAVE_GTK2 */
-    }
-}
-
-#ifdef HAVE_GTK2
-/**
-   \brief opens up a window(not topmost Window).
-   this is the Signal that does it. !!SIGNALS ARE STATIC!!
-   \param widget the widget that did it.
-   \param event the event that did it.
-   \param window the Window that should be opened
-*/
-gint Window::windowOpen(GtkWidget *widget, GdkEvent* event, void* window)
-{
-  static_cast<Window*>(window)->open();
-}
-
-/**
-   \brief closes a window(not topmost Window).
-   this is the Signal that does it. !!SIGNALS ARE STATIC!!
-   \param widget the widget that did it!
-   \param event the event that did it!
-   \param window the Window that should be closed
-*/
-gint Window::windowClose(GtkWidget *widget, GdkEvent* event, void* window)
-{
-  static_cast<Window*>(window)->close();
-}
-
-#endif /* HAVE_GTK2 */
-
-
-/* FRAME */
-
-/** 
-    \brief Creates a new Frame without a name
-*/
-Frame::Frame(void)
-{
-  this->init();
-}
-
-/**
-   \brief Creates a new Frame with name title
-*/
-Frame::Frame(char* title)
-{
-  this->init();
-  this->setTitle(title);
-}
-
-/**
-   \brief destrcucts a Frame
-*/
-Frame::~Frame(void)
-{
-  if (this->title)
-    PRINTF(3)("deleting the Frame: %s\n", this->title);
-  else 
-    PRINTF(3)("deleting the Frame.\n");
-}
-
-/** 
-    \brief Initializes a new Frame with default settings
-*/
-void Frame::init(void)
-{
-#ifdef HAVE_GTK2
-  this->widget = gtk_frame_new("");
-  gtk_container_set_border_width(GTK_CONTAINER(this->widget), 3);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Sets the Frames name to title
-   \param title The title the Frame should get.
-*/
-void Frame::setTitle(const char* title)
-{
-  if (this->title)
-    delete []this->title;
-  this->title = new char[strlen(title)+1];
-  strcpy(this->title, title);
-#ifdef HAVE_GTK2
-  gtk_frame_set_label(GTK_FRAME(widget), title);
-#endif /* HAVE_GTK2 */
-}
-
-// EVENTBOX //
-
-/**
-   \brief Creates a new EventBox with default settings.
-*/
-EventBox::EventBox(void)
-{
-  this->init();
-}
-
-/**
-   \brief Creates a new EventBox with name title
-   \param title title the Eventbox should get(only data-structure-internal)
-*/
-EventBox::EventBox(char* title)
-{
-  this->init();
-  this->setTitle(title);
-}
-
-/**
-   \brief destructs an EventBox.
-*/
-EventBox::~EventBox(void)
-{
-  if (this->title)
-    PRINTF(3)("deleting the EventBox: %s\n", this->title);
-  else 
-    PRINTF(3)("deleting the EventBox.\n");
-}
-
-/**
-   \brief Initializes a new EventBox
-*/
-void EventBox::init(void)
-{
-  this->isOption = -1;
-
-#ifdef HAVE_GTK2
-  this->widget = gtk_event_box_new();
-  gtk_container_set_border_width(GTK_CONTAINER(this->widget), 3);
-#endif /* HAVE_GTK2 */
-}
-
-/* BOX */
-
-/**
-   \brief Creates a new horizontal Box
-*/
-Box::Box(void)
-{
-  this->init('h');
-}
-
-/**
-   \brief Creates a new Box of type boxtype
-   \param boxtype if 'v' the Box will be vertically, if 'h' the Box will be horizontally
-*/
-Box::Box(char boxtype)
-{
-  this->init(boxtype);
-}
-
-/**
-   \brief destructs a Box.
-*/
-Box::~Box(void)
-{
-  if (this->title)
-    PRINTF(3)("deleting the Box: %s\n", this->title);
-  else 
-    PRINTF(3)("deleting the Box.\n");
-
-}
-
-/**
-   \brief Initializes a new Box with type boxtype
-   \param boxtype see Box(char boxtype)
-*/
-void Box::init(char boxtype)
-{
-  this->isOption = -2;
-
-#ifdef HAVE_GTK2
-  if (boxtype == 'v')
-    {
-      this->widget = gtk_vbox_new(FALSE, 0);
-    }
-  else
-    {
-      this->widget = gtk_hbox_new(FALSE, 0);
-    }
-#endif /* HAVE_GTK2 */
-}
-
-/** 
-    \brief Fills a box with a given Widget.
-    \param lowerWidget the next Widget that should be appendet to this Box
-
-    It does this by apending the first one to its down-pointer and all its following ones to the preceding next-pointer. The last one will receive a NULL pointer as Next
-*/
-void Box::fill(Widget* lowerWidget)
-{
-#ifdef HAVE_GTK2
-  gtk_box_pack_start(GTK_BOX(this->widget), lowerWidget->widget, TRUE, TRUE, 0);
-#endif /* HAVE_GTK2 */
-  if (this->down == NULL)
-    this->down = lowerWidget;
-  else
-    {
-      Widget* tmp;
-      tmp = this->down;
-      while(tmp->next != NULL)
-	{
-	  tmp = tmp->next;
-	}
-      tmp->next = lowerWidget;
-    }
-}
-
-/* OPTION */
-
-/**
-   \brief Initializes a new Option.
-   sets all Option-Specific-Values to their defaults.
-*/
-Option::Option(void)
-{
-  this->value = 0;
-  this->flagName = NULL;
-  this->flagNameShort = NULL;
-  this->saveable = false;
-  this->defaultValue = 0;
-}
-
-/**
-   \brief Destroys an Option.
-*/
-Option::~Option(void)
-{ 
-  PRINTF(4)("deleting the Option Part.\n");
-  if (this->flagName)
-    delete []this->flagName;
-  if (this->flagNameShort)
-    delete []this->flagNameShort;
-}
-
-/**
-   \brief This sets The FlagName of an Option and defines its default Values
-   !! Options will be saved if flagname is different from NULL !!
-   \param flagname the Name that will be displayed in the output
-   \param defaultvalue the default Value for this Option(see definition of defaultvalue
-*/
-void Option::setFlagName(char* flagname, int defaultvalue)
-{
-  if (this->flagName)
-    delete this->flagName;
-  this->flagName = new char [strlen(flagname)+1];
-  strcpy(this->flagName, flagname);
-  this->defaultValue = defaultvalue;
-
-  //  cout << "Set Flagname of " << this->title << " to " << flagname << endl;
-}
-
-/** 
-    \brief see Option::setFlagName(char* flagname, int defaultvalue)
-    \param flagname the Name that will be displayed in the output
-    \param defaultvalue the default Value for this Option(see definition of defaultvalue
-    \param flagnameshort a short flagname to be displayed in the output
-*/
-void Option::setFlagName(char* flagname, char* flagnameshort,  int defaultvalue)
-{
-  if (this->flagName)
-    delete []this->flagName;
-  this->flagName = new char [strlen(flagname)+1];
-  strcpy(this->flagName, flagname);
-
-  if (this->flagNameShort)
-    delete []this->flagNameShort;
-  this->flagNameShort = new char [strlen(flagnameshort)+1];
-  strcpy(this->flagNameShort, flagnameshort);
-  this->defaultValue = defaultvalue;
-  //  cout << "Set Flagname of " << this->title << " to " << flagname << endl;
-}
-
-/**
-   \brief Sets the saveable-state of the option to true.
-*/
-void Option::saveability(void)
-{
-  this->saveable = true;
-}
-
-/**
-   \brief Sets the saveable-state of the option.
-   \param isSaveable the saveable-state to set.
-*/
-void Option::saveability(bool isSaveable)
-{
-  this->saveable = isSaveable;
-}
-
-/**
-   \brief saves an Option
-   \returns the String that should be saved.
-
-   this is a default Option save
-*/
-char* Option::save(void)
-{
-  char* value = new char [10];
-  sprintf (value, "%d", this->value);
-  return value;
-}
-
-/**
-   \brief loads an Option from of its loadString
-   \param loadString the string from which to load the data from
-*/
-void Option::load(char* loadString)
-{
-  this->value = atoi(loadString);
-  PRINT(3)("Loading %s: %s %d\n", this->title, loadString, value); 
-  this->redraw();
-}
-
-/**
-   \returns The saveable-state.
-*/
-bool Option::isSaveable(void)
-{
-  return this->saveable;
-}
-
-#ifdef HAVE_GTK2
-/** 
-    \brief Signal OptionChange writes the Value from the Slider to its Object-Database.
-    \param widget The widget(Slider) that has a changed Value
-    \param slider the Slider-Object that should receive the change.
-*/
-gint Option::OptionChange(GtkWidget *widget, Widget* option)
-{
-  static_cast<Option*>(option)->changeOption();
-  flags->setTextFromFlags(Window::mainWindow);  //// must be different !!!
-}
-#endif /* HAVE_GTK2 */
-
-
-/* BUTTON */
-
-/**
-   \brief Creates a new Button with a buttonname
-   \param buttonname sets the Name of the Button
-*/
-Button::Button(char* buttonname)
-{
-  this->init();
-  this->setTitle(buttonname);
-}
-
-/**
-   \brief destructs a Button.
-*/
-Button::~Button(void)
-{
-  if (this->title)
-    PRINTF(3)("deleting the Label: %s\n", this->title);
-  else 
-    PRINTF(3)("deleting the Label.\n");
-
-}
-
-/**
-   \brief Initializes a new Button
-*/
-void Button::init(void)
-{
-  isOption = 0;
-
-#ifdef HAVE_GTK2
-  widget = gtk_button_new_with_label("");
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Sets a new name to the Button
-   \param title The name the Button should get
-*/
-void Button::setTitle(const char *title)
-{
-  if (this->title)
-    delete []this->title;
-  this->title = new char[strlen(title)+1];
-  strcpy(this->title, title);
-#ifdef HAVE_GTK2
-  gtk_button_set_label(GTK_BUTTON(widget), title);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief redraws the Button
-   not implemented yet
-*/
-void Button::redraw(void)
-{
-}
-
-/**
-   \brief Button can not be changed, optionChange is empty)
-
-   \todo Actions for non-GTK-mode
-*/
-void Button::changeOption(void)
-{
-  // This will possibly be used for ACTIONS !
-}
-
-/* CHECKBUTTON */
-
-/**
-   \brief Creates a new CheckButton with an ame 
-   \param buttonname The name the CheckButton should display.
-*/
-CheckButton::CheckButton(char* buttonname)
-{
-  this->init();
-  this->setTitle(buttonname);
-
-#ifdef HAVE_GTK2
-  this->connectSignal("clicked", this->OptionChange);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief destructs a CheckButton.
-*/
-CheckButton::~CheckButton(void)
-{
-  if (this->title)
-    PRINTF(3)("deleting the CheckButton: %s\n", this->title);
-  else 
-    PRINTF(3)("deleting the CheckButton.\n");
-}
-
-/**
-   \brief Initialize a new CheckButton with default settings
-*/
-void CheckButton::init(void)
-{
-  this->isOption = 1;
-
-#ifdef HAVE_GTK2
-  this->widget = gtk_check_button_new_with_label("");
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Sets a new Title to a CheckButton
-   \param title The new Name the CheckButton should display.
-*/
-void CheckButton::setTitle(const char* title)
-{
-  if (this->title)
-    delete []this->title;
-  this->title = new char[strlen(title)+1];
-  strcpy(this->title, title);
-#ifdef HAVE_GTK2
-  gtk_button_set_label(GTK_BUTTON(widget), title);
-#endif /* HAVE_GTK2 */
-}
-
-bool CheckButton::isActive(void)
-{
-#ifdef HAVE_GTK2
-  return gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Changed the Option, call this Function
-*/
-void CheckButton::changeOption(void)
-{
-#ifdef HAVE_GTK2
-  this->value =(int)gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(this->widget));
-#else /* HAVE_GTK2 */
-  char tmpChar[20];
-  cout << "\nPlease give me a new value for " << this->title << " [0,1](default:" << this->defaultValue << "): ";
-  cin >> tmpChar;
-
-  if ((this->value = atoi(tmpChar))=!0)
-    this->value = 1;
-#endif /* HAVE_GTK2 */
-  cout << this->title << " set to: " << this->value << endl;
-}
-
-
-/**
-   \brief Redraws the CheckButton(if option has changed).
-   Example: if new settings are loaded the Button must be redrawn for the GUI to display that Change
-*/
-void CheckButton::redraw(void)
-{
-#ifdef HAVE_GTK2
-  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(this->widget), value);
-#endif /* HAVE_GTK2 */
-}
-
-/* SLIDER */
-
-/**
-   \brief Creates a new Slider
-   \param slidername The data-structure-name of the slider.
-   \param start The minimal Value of the slider.
-   \param end The maximal Value of the slider.
-*/
-Slider::Slider(char* slidername, int start, int end)
-{
-  this->init(start, end);
-  this->setValue(start);
-  this->setTitle(slidername);
-#ifdef HAVE_GTK2
-  this->connectSignal("value_changed", this->OptionChange);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief destructs a Slider.
-*/
-Slider::~Slider(void)
-{
-  if (this->title)
-    PRINTF(3)("deleting the Slider: %s\n", this->title);
-  else 
-    PRINTF(3)("deleting the Slider.\n");
-}
-
-/**
-   \brief Initializes a Slider with start and end Values
-   params: see Slider::Slider(char* slidername, int start, int end)
-*/
-void Slider::init(int start, int end)
-{
-  this->isOption = 2;
-
-  this->start = start;
-  this->end = end;
-#ifdef HAVE_GTK2
- widget = gtk_hscale_new_with_range(this->start, this->end, 5);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Setting a new value to the Slider.
-   Maybe you also require a Slider::redraw() for this to display
-*/
-void Slider::setValue(int value)
-{
-  this->value = value;
-}
-
-/**
-   \brief Redraws the widget
-   Example: see void CheckButton::redraw(void)
-*/
-void Slider::redraw(void)
-{
-#ifdef HAVE_GTK2
-  gtk_range_set_value(GTK_RANGE(this->widget), value);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Changed the Option, call this Function
-*/
-void Slider::changeOption(void)
-{
-#ifdef HAVE_GTK2
-  this->value =(int)gtk_range_get_value(GTK_RANGE(this->widget));
-#else /* HAVE_GTK2 */
-  char tmpChar[20];
-  cout << "\nPlease give me a new value for " << this->title << " [" <<this->start << "-" << this->end << "](default:" << this->defaultValue << "): ";
-  cin >> tmpChar;
-
-  if ((this->value = atoi(tmpChar))> this->end)
-    this->value = this->end;
-  if (this->value <= this->start)
-    this->value = this->start;
-#endif /* HAVE_GTK2 */
-  cout << this->title << " set to: " << this->value << endl;
-}
-
-/* MENU */
-
-/**
-   \brief constructs a new Menu, without adding any items to it.
-   \param menuName the Name the Menu gets.
-*/
-Menu::Menu(const char* menuName)
-{
-  this->init();
-  this->setTitle(menuName);
-}
-
-/** 
-    \brief Creates a Menu-Item-list out of multiple input.
-    !! Consider, that the last input argument has to be "lastItem" for this to work!!
-    \param menuname The Database-Name of this Menu
-    \param ... items to be added to this Menu. !! Consider, that the last input argument has to be "lastItem" for this to work!!
-*/
-Menu::Menu(char* menuname, ...)
-{
-  this->init();
-  this->setTitle(menuname);
-  va_list itemlist;                     //!< The list to readin multiple Options.
-
-  char *itemName;
-
-  va_start(itemlist, menuname);
-  while(strcmp(itemName = va_arg(itemlist, char*), "lastItem"))
-    {
-      this->addItem(itemName);
-    }
-  va_end(itemlist);
-}
-
-/**
-   \brief destructs a Menu.
-*/
-Menu::~Menu(void)
-{
-  if (this->title)
-    PRINTF(3)("deleting the Menu: %s\n", this->title);
-  else 
-    PRINTF(3)("deleting the Menu.\n");
-  //! \todo destroy menu
-  this->currItem = this->firstItem;
-  while(this->currItem)
-    {
-      delete []this->currItem->name;
-      /*
-	#ifdef HAVE_GTK2
-	free(this->currItem->item);
-	#endif /* HAVE_GTK2 */
-      MenuItem* tmpItem = this->currItem;
-      this->currItem = this->currItem->next;
-      delete tmpItem;
-    }
-}
-
-/**
-   \brief Initializes a new Menu with no items
-*/
-void Menu::init(void)
-{
-  this->isOption = 2;
-  this->firstItem = NULL;
-
-#ifdef HAVE_GTK2
-  this->widget = gtk_option_menu_new();
-  this->menu = gtk_menu_new();
-  gtk_option_menu_set_menu(GTK_OPTION_MENU(this->widget), menu);
-  this->connectSignal("changed", this->OptionChange);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief saves the Label of the Menu
-   \returns the name of the selected Menu-Item
-*/
-char* Menu::save(void)
-{
-  MenuItem* tmpItem = this->firstItem;
-  for (int i = 0; i<this->value; i++)
-    tmpItem = tmpItem->next;
-      
-  return tmpItem->name;
-}
-
-/**
-   \brief loads a Menu from of its loadString
-   \param loadString the string from which to load the data from
-*/
-void Menu::load(char* loadString)
-{
-  MenuItem* tmpItem = firstItem;
-  bool foundItem = false;
-  while (tmpItem)
-    {
-      if (!strcmp(loadString, tmpItem->name))
-	{foundItem = true; break;}
-      tmpItem = tmpItem->next;
-    }
-  if (foundItem)
-    this->value = tmpItem->itemNumber;
-  else
-    {
-      this->value = 0;
-      PRINTF(2)("Sorry, but %s has not been found in the Itemlist of %s\n", loadString, this->title);
-    }
-  PRINTF(3)( "Loading %s: setting to %d\n", this->title, this->value); 
-  this->redraw();
-}
-
-/**
-   \brief appends a new Item to the Menu-List.
-   \param itemName the itemName to be appendet.
-*/
-void Menu::addItem(char* itemName)
-{
-  if (!this->firstItem)
-    {
-      this->firstItem = this->currItem = new MenuItem;
-      this->currItem->itemNumber = 0;
-    }
-  else
-    {
-      int tmpI = this->currItem->itemNumber;
-      this->currItem = this->currItem->next = new MenuItem;
-      this->currItem->itemNumber = tmpI+1;
-    }
-
-  this->currItem->name = new char[strlen(itemName)+1];
-  strcpy(this->currItem->name, itemName);
-
-#ifdef HAVE_GTK2
-  this->currItem->item = gtk_menu_item_new_with_label(itemName);
-  gtk_menu_shell_append(GTK_MENU_SHELL(this->menu), this->currItem->item);
-#endif /* HAVE_GTK2 */
-  this->currItem->next = NULL;
-}
-
-/**
-   \brief Redraws the widget
-   Example: see void CheckButton::redraw(void)
-*/
-void Menu::redraw(void)
-{
-#ifdef HAVE_GTK2
- gtk_option_menu_set_history(GTK_OPTION_MENU(this->widget), this->value);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Changed the Option, call this Function
-*/
-void Menu::changeOption(void)
-{
-#ifdef HAVE_GTK2
-  this->value =(int)gtk_option_menu_get_history(GTK_OPTION_MENU(this->widget));
-#else /* HAVE_GTK2 */
-  char tmpChar[20];
-  cout << "\nPlease give me a new value for " << this->title << "(default:" << this->defaultValue << "): ";
-  cin >> tmpChar;
-  this->value = atoi(tmpChar);
-
-#endif /* HAVE_GTK2 */
-  cout << this->title << " set to: " << this->value << endl;
-}
-
-/* OPTION LABEL */
-
-/**
-   \brief Creates a new OptionLabel with a LabelName and a Value.
-   \param label The name of the OptionLabel.
-   \param value The Value of the OptionLabel(what will be displayed).
-*/
-OptionLabel::OptionLabel(char* label, char* value)
-{
-  this->init();
-  this->setTitle(label);
-  this->setValue(value);
-}
-
-/**
-   \brief destructs an OptionLabel.
-*/
-OptionLabel::~OptionLabel(void)
-{
-  if (this->title)
-    PRINTF(3)("deleting the OptionLabel: %s\n", this->title);
-  else 
-    PRINTF(3)("deleting the OptionLabel.\n");
-  if (this->cValue)
-    delete []this->cValue;
-}
-
-/**
-   \brief Initializes an OptionLabel
-*/
-void OptionLabel::init(void)
-{
-  this->isOption = 5;
-  cValue = NULL;
-
-#ifdef HAVE_GTK2
-  this->widget = gtk_label_new("");
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Updates the value of an OptionLabel
-   \param newValue The new Name that should be displayed.
-*/
-void OptionLabel::setValue(char* newValue)
-{
-  if (this->cValue)
-    delete []this->cValue;
-  this->cValue = new char [strlen(newValue)+1];
-  strcpy(this->cValue, newValue);
-#ifdef HAVE_GTK2
-  gtk_label_set_text(GTK_LABEL(this->widget), this->cValue);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Redraws an OptionLabel(not implemented yet, but it works).
-*/
-void OptionLabel::redraw(void)
-{
-#ifdef HAVE_GTK2
-  gtk_label_set_text(GTK_LABEL(widget), title);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Changed the Option, call this Function
-*/
-void OptionLabel::changeOption(void)
-{
-#ifdef HAVE_GTK2
-  this->cValue =(char*)gtk_label_get_text(GTK_LABEL(this->widget));
-#else /* HAVE_GTK2 */
-  cout << "\nPlease give me a new input for " << this->title << ": ";
-  cin >> this->cValue;
-#endif /* HAVE_GTK2 */
-  cout << this->title << " set to: " << this->cValue << endl;
-}
-
-
-/**
-   \brief creates the Optionlabel save-string
-   \returns the String to save.
-*/
-char* OptionLabel::save(void)
-{
-  return cValue;
-}
-
-/**
-   \brief loads an Option from of its loadString
-   \param loadString the string from which to load the data from
-*/
-void OptionLabel::load(char* loadString)
-{
-  PRINTF(3)( "Loading %s: setting to %s\n", this->title, loadString); 
-  this->setValue(loadString);
-}
-
-/**
-   \brief Creates a new default Label with no Text.
-   You migth consider adding Label::setTitle with this.
-*/
-Label::Label(void)
-{
-  this->init();
-}
-
-/**
-   \brief Creates a new Label with a Text.
-   \param text The text to be displayed.
-*/
-Label:: Label(char* text)
-{
-  this->init();
-  this->setTitle(text);
-}
-
-/**
-   \brief destructs a Label.
-*/
-Label::~Label(void)
-{
-  if (this->title)
-    PRINTF(3)("deleting the Label: %s\n", this->title);
-  else 
-    PRINTF(3)("deleting the Label.\n");
-}
-
-/**
-   \brief initializes a new Label
-*/
-void Label::init(void)
-{
-  this->isOption = 0;
-
-#ifdef HAVE_GTK2
-  this->widget = gtk_label_new("");
-  gtk_label_set_line_wrap(GTK_LABEL(this->widget), TRUE);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Sets a new Text to a Label.
-   \param text The text to be inserted into the Label.
-*/
-void Label::setTitle(char* text)
-{
-  if (this->title)
-    delete []this->title;
-  this->title = new char[strlen(text)+1];
-  strcpy(this->title, text);
-#ifdef HAVE_GTK2
-  gtk_label_set_text(GTK_LABEL(this->widget), this->title);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief ereases the Text of a Label
-*/
-void Label::ereaseText(void)
-{
-  this->setTitle("");
-}
-
-/** 
-    \brief appends some Text to a Label
-    \param textToAppend The text that will be appended to this Label
-*/
-void Label::appendText(char* textToAppend)
-{
-  if (this->title)
-    {
-      char* tmpTitle = new char[strlen(this->title)+strlen(textToAppend)+1];
-      strcpy(tmpTitle, title);  
-      strcat(tmpTitle, textToAppend);
-      delete []this->title;
-      this->title = tmpTitle;
-    }
-  else
-    {
-      this->title = new char[strlen(textToAppend)];
-    }
-  
-#ifdef HAVE_GTK2
-  gtk_label_set_text(GTK_LABEL(this->widget), title);
-#endif /* HAVE_GTK2 */
-}
-
-/** 
-    \brief Appends some integer to the Label
-    \param intToAppend The Int that will be added.
-    
-    it does this by just converting the int into a char* and send it to appendText
-*/
-void Label::appendInt(int intToAppend)
-{
-  char append [32];
-  sprintf(append, "%d", intToAppend);
-  this->appendText(append);
-}
-
-
-/**
-   \brief get the Text of a Label
-   \return The Text the Label holds.
-*/
-char* Label::getText(void)
-{
-  return this->title;
-}
-
-/**
-   \brief Creates a new ProgressBar.
-*/
-ProgressBar::ProgressBar(void)
-{
-  this->init();
-}
-
-/**
-   \brief Creates a new ProgressBar.
-   \param label The name you want to get the ProgressBar.
-*/
-ProgressBar::ProgressBar(char* label)
-{
-  this->init();
-  this->setTitle(label);
-}
-
-/**
-   \brief destructs a ProgressBar
-*/
-ProgressBar::~ProgressBar(void)
-{
-  if (this->title)
-    PRINTF(3)("deleting the ProgressBar: %s\n", this->title);
-  else 
-    PRINTF(3)("deleting the ProgressBar.\n");
-}
-
-/**
-   \brief Initializes a ProgressBar
-*/
-void ProgressBar::init(void)
-{
-  this->isOption = 0;
-  this->progress = 0.0;
-  this->totalSize = 0.0;
-
-#ifdef HAVE_GTK2
-  this->adjustment =(GtkAdjustment*)gtk_adjustment_new(0, 0, 100, 0, 0, 0);
-  this->widget = gtk_progress_bar_new_with_adjustment(this->adjustment);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief Sets the Total size of the Bar.(ex. The maximum one can download)
-*/
-void ProgressBar::setTotalSize(double totalSize)
-{
-  this->totalSize = totalSize;
-}
-
-/**
-   \brief Sets the progress maximum is this->totalSize
-*/
-void ProgressBar::setProgress(double progress)
-{
-  this->progress = progress;
-
-  if (this->progress > this->totalSize)
-    this->progress = this->totalSize;
-
-#ifdef HAVE_GTK2
-  gtk_progress_set_value(GTK_PROGRESS(widget), this->progress*100.0/this->totalSize);
-#endif /* HAVE_GTK2 */
-  PRINTF(3)("Progress: %f\n", this->progress*100.0/this->totalSize);
-}
-
-/**
-    \brief returns the Progress Status
-*/
-double ProgressBar::getProgress(void)
-{
-  return this->progress;
-}
-
-/* IMAGE */
-
-/**
-   \brief Creates a new Image
-   \param imagename the location of the Image on the Hard Disc
-*/
-Image::Image(char* imagename)
-{
-  this->init();
-  if (this->title)
-    delete []this->title;
-  this->title = new char[strlen(imagename)+1];
-  strcpy(this->title, imagename);
-
-#ifdef HAVE_GTK2
-  widget = gtk_image_new_from_file(imagename);
-#endif /* HAVE_GTK2 */
-}
-
-/**
-   \brief destructs an Image.
-*/
-Image::~Image(void)
-{
-  if (this->title)
-    PRINTF(3)("deleting the Image: %s\n", this->title);
-  else 
-    PRINTF(3)("deleting the Image.\n");
-}
-
-/** 
-    \brief Initializes a new Image
-*/
-void Image::init(void)
-{
-  isOption = 0;
-}
Index: xonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_gtk.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_gtk.h	(revision 4216)
+++ 	(revision )
@@ -1,393 +1,0 @@
-/*!
- \file orxonox_gui_gtk.h
- \brief Contains all th different Widgets.
-*/
-#ifndef _ORXONOX_GUI_GTK_H
-#define _ORXONOX_GUI_GTK_H
-
-#if HAVE_CONFIG_H 
-#include <config.h> 
-#endif
-
-#include "debug.h"
-
-#ifdef HAVE_GTK2
-#include <gtk/gtkmain.h>
-#include <gtk/gtkwindow.h>
-#include <gtk/gtkframe.h>
-#include <gtk/gtkhbox.h>
-#include <gtk/gtkvbox.h>
-#include <gtk/gtkbutton.h>
-#include <gtk/gtkcheckbutton.h>
-#include <gtk/gtkhscale.h>
-#include <gtk/gtkoptionmenu.h>
-#include <gtk/gtkmenu.h>
-#include <gtk/gtkmenuitem.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkimage.h>
-#include <gtk/gtkeventbox.h>
-#include <gtk/gtkprogressbar.h>
-#endif /* HAVE_GTK2 */
-
-bool initGUI(int argc, char* argv[]);
-bool mainloopGUI(void);
-
-//! This is the topmost object that can be displayed all others are derived from it.
-class Widget
-{
- private:
-
- public:
-  Widget(void);
-  virtual ~Widget(void);
-
-  void show(void);
-  void hide(void);
-  void setSize(int width, int height);
-  virtual void setTitle(const char* title);  //!< An abstract Function, that sets the title of Widgets.
-
-  Widget* findWidgetByName(char* name, unsigned int depth);
-  void walkThrough(void(*function)(Widget*), unsigned int depth);
-  void walkThrough(void(*function)(Widget*, void*), void* data, unsigned int depth);
-  static void listOptionsAndGroups(Widget* widget);
-  static void listOptions(Widget* widget);
-  static void listOptions(Widget* widget, void* data);
-  Widget* findOptionByNumber(int* number, unsigned int depth);
-  static void listGroups(Widget* widget);
-  static void listGroups(Widget* widget, void* data);
-  Widget* findGroupByNumber(int* number, unsigned int depth);
-  static void setOptions(Widget* widget);
-  static void flagCheck(Widget* widget, void* flagName);
-  
-#ifdef HAVE_GTK2
-  // Connection - Functions
-
-  gulong connectSignal(char* event, gint(*signal)(GtkWidget*, GdkEvent*, void* ));
-  gulong connectSignal(char* event, gint(*signal)(GtkWidget*, Widget* ));
-  gulong connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, GdkEvent*, void* ));
-  gulong connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, void* ));
-  gulong connectSignal(char* event, void* extObj, gint(*signal)(GtkWidget*, GdkEventKey*, void* ));
-  void disconnectSignal(gulong signalID);
-
-  // Signals
-  static gint doNothingSignal(GtkWidget* widget, GdkEvent* event, void* nothing);
-#endif /* HAVE_GTK2 */
-
-  Widget* next;                     //!< next always points to the next Widget in the list. Every Widget has a next one, or has NULL as next
-#ifdef HAVE_GTK2
-  GtkWidget* widget;                //!< widget is the gtk_widget that the specific Object Contains.
-#endif /* HAVE_GTK2 */
-  int isOption;                     //!< with this Paramenter one can set the option-type: -2:Container, -1: Box, 0: not an Option, 1: Bool-option, 2: int-option, 3: float option, 4:char option, 5: char* option
-
-  //! defines isOption states
-  enum option { containerType = -2, boxType = -1, nothingType = 0, boolType = 1, intType = 2}; 
-  char* title;                      //!< The name of the Widget. Some do display it, Options need it to save;
-};
-
-//! This is a Packer Object, which has the ability to Pack other Widgets into itself.
-class Packer : public Widget
-{
- public:
-  Packer(void);
-  virtual ~Packer(void);
-
-  Widget* down; //!< this points to the Widget below this.
-  char* groupName; //!< For each Packer you can specify a Groupname under which the lowerWidgets will be saved.
-
-  void setGroupName(char* name);
-  char* getGroupName(void);
-
-  virtual void fill(Widget* lowerWidget) = 0; //!< An abstract function, that fills Packers.
-};
-
-//! This is a Container Class, it can contain one sub-Widget: down.
-/**
- * A Container is a Widget that can hold a subWidget in addition to a next-Widget.
- * The Container can by itself not be displayed created or used.
- * The derived classes of Container can be displayed
-*/
-class Container : public Packer
-{
- private:
-  int borderwidth;          //!< The width of The Container Boarder.
-  int policy;               //!< The Update Policy of a Container.
-  
- public:
-  Container(void);
-  virtual ~Container(void);
-  //  void setBorderWidth(int borderwidth);
-  void fill(Widget* lowerWidget);
-};
-
-//! Window is the class that creates new Windows, and handels them
-/**
- * A Window is a class derived from Container that contains a window-widget.
- * It has the ability to hold one sub-object
- */
-class Window : public Container
-{
- private:
-  bool isOpen;                      //!< A bool Variable that checks if a Window is already open.
- public:
-  static Window* mainWindow;        //!< Pointer to the First Window that was opened. By default this should be the GUI's main-Window.
-  static void addWindow(Window* windowToAdd);
-
-  Window(void);
-  Window(char* windowName);
-  virtual ~Window(void);
-  void init(void);
-  
-  void setTitle(const char* title);
-  void showall(void);
-  void open(void);
-  void close(void);
-
-#ifdef HAVE_GTK2
-  // Signals
-  static gint windowOpen(GtkWidget* widget, GdkEvent* event, void* window);
-  static gint windowClose(GtkWidget* widget, GdkEvent* event, void* window);
-#endif /* HAVE_GTK2 */
-};
-
-//! Frame is the class that handles frames
-/**
- * A Frame is an object, that has a border and if you like a name on it.
- * It can contain a Widget, which means that you can insert anything you like inside of a frame
- */
-class Frame :public Container
-{
- public:
-  Frame(void);
-  Frame(char* frameName);
-  virtual ~Frame(void);
-  void init(void);
-
-  void setTitle(const char* title);
-};
-
-//! EventBox is a Container that can Handle all Events happening inside of it.
-/**
- * Example: if you have a picture, and you want it to catch mouse-clicks, you have to pack it inside a EventBox
- */
-class EventBox : public Container
-{
- public:
-  EventBox(void);
-  EventBox(char* eventBoxName);
-  virtual ~EventBox(void);
-  void init(void);
-};
-
-//! A Box can contain multiple Widgets
-/**
-   A Box can Contain multiple Widgets, that are ordered either horizontally or vertically
-   I defined the standartbox to be horizontally.
-   A Box is always filled left->right(horizontally) or up->down(vertically)
-*/
-class Box : public Packer
-{
- public:
-  Box(void);
-  Box(char boxtype);
-  virtual ~Box(void);
-  void init(char boxtype);
-  
-  void fill(Widget* lowerWidget);
-};
-
-//! An Option is a Widget that contains something that may change its state.
-/**
- * Options are the essence of a GUI, they: Configure, Start, Quit, Execute, and make it worth something
- */
-class Option : public Widget
-{
- protected:
-  bool saveable;  //!< Options can be Saved.
-  
- public:
-  Option(void);
-  virtual ~Option(void);
-  void init(void);
-
-  int value; //!< every option has a value either true or false(0,1) or something else like 25 for 25% of the volume
-  char* flagName; //!< options have a flag name that will be appendet if you start the Program from the GUI.
-  char* flagNameShort; //!< like flag_name but shorter
-  int defaultValue; //!< A default value is good, for hiding a option if it is not needed.(hidden if value == default_value)
-
-  void saveability(void);
-  void saveability(bool isSaveable);
-  virtual char* save(void);
-  virtual void load(char* loadString);
-
-  bool isSaveable(void);
-  void setFlagName(char* flagname, int defaultvalue);
-  void setFlagName(char* flagname, char* flagnameshort, int defaultvalue);
-  virtual void redraw(void) = 0; //!< A Option must be able to redraw itself.
-  virtual void changeOption(void) = 0; //!< What to do, if an Option is Changed. eacht option decides for itself.
-#ifdef HAVE_GTK2
-    // Signals  
-  static gint OptionChange(GtkWidget* widget, Widget* option); //!< Signal for Options that change.
-#endif /* HAVE_GTK2 */
-};
-
-//! Buttons can be pressed, and released.
-/**
- * Buttons are mainly there for executing some action like Starting the Programm, or Quiting it.
- */
-class Button : public Option 
-{
- public:
-  Button(char* buttonname);
-  virtual ~Button(void);
-  void init(void);
-
-  void setTitle(const char* title);
-  void redraw(void);
-  void changeOption(void);
-};
-
-//! CheckButtons are a key in configuring bool Variables
-/** CheckButtons can configure bool Variables like wireframe on/off, enable_sound etc.
- */
-class CheckButton : public Option
-{
- public:
-  CheckButton(char* buttonname);
-  virtual ~CheckButton(void);
-  void init(void);
-
-  void setTitle(const char* title);
-  bool isActive(void);           //!< a Bool value to see, if this CheckButton is active.
-  void redraw(void);
-  void changeOption(void);
-};
-
-//! Sliders are Options that can be modified in their value
-/**
- * good for volume, brightness, etc.
- */
-class Slider : public Option
-{
- private:
-  int start;                            //!< The beginning of the Slider-range.
-  int end;                              //!< The end of the Slider-range.
- public:
-  Slider(char* slidername, int start, int end);
-  virtual ~Slider(void);
-  void init(int start, int end);
-
-  void setValue(int value);
-  void redraw(void);
-  void changeOption(void);
-};
-
-//! A Menu is an Option that has a dropdown menu, where you can chose between different Items
-class Menu : public Option
-{
- private:
-#ifdef HAVE_GTK2
-  GtkWidget* menu;                      //!< The menu That will hold the Options.
-#endif /* HAVE_GTK2 */
-
-  //! A struct to handle the MenuItems
-  struct MenuItem
-  {
-    char* name;                         //!< The name of this entry.
-    int itemNumber;                     //!< The n'th entry of this menu;
-#ifdef HAVE_GTK2
-    GtkWidget* item;                    //!< One Item From a Menu.
-#endif /* HAVE_GTK2 */
-    MenuItem* next;                     //!< Pointer to the next MenuItem.
-  };
-  MenuItem* firstItem;                  //!< Pointer to the first Item.
-  MenuItem* currItem;                   //!< Pointer to the current Item.
-  
- public:
-  Menu(const char* menuName);
-  Menu(char* menuname, ...);
-  virtual ~Menu(void);
-  void init(void);
-
-  virtual char* save(void);
-  virtual void load(char* loadString);
-  
-  void addItem(char* itemName);
-  void redraw(void);
-  void changeOption(void);
-};
-
-//! A OptionLabel is a simple Label, that holds a char*, and will be updated, if changed.
-class OptionLabel : public Option
-{
- private:
-
- public:
-  OptionLabel(char* label, char* value);
-  virtual ~OptionLabel(void);
-  void init(void);
-  
-  void setValue(char* newValue);
-
-  virtual char* save(void);
-  virtual void load(char* loadString);
-
-  void redraw(void);
-  void changeOption(void);
-
-  char* cValue;                          //!< The Value the Label will have. \todo make private
-
-};
-
-//! A label is a Widget, that displays a text
-class Label : public Widget
-{
- public:
-  Label(void);
-  Label(char* text);
-  virtual ~Label(void);
-  void init(void);
-  
-  void setTitle(char* text);
-  void ereaseText(void);
-  void appendText(char* textToAppend);
-  void appendInt(int intToAppend);
-  char* getText(void);
-};
-
-//! A ProgressBar is a Widget, that can display a Progress
-class ProgressBar : public Widget
-{
- public:
-  ProgressBar(void);
-  ProgressBar(char* label);
-  virtual ~ProgressBar(void);
-  void init(void);
-
-  void setProgress(double progress);
-  void setTotalSize(double totalSize);
-  double getProgress(void);
-
- private:
-  double totalSize;         //!< The total Size of a download Bar
-  double progress;          //!< The progress of a Bar.
-#ifdef HAVE_GTK2
-  GtkAdjustment* adjustment;
-#endif /* HAVE_GTK2 */
-};
-
-//! Image is the keeper of one Image 
-/** 
- * Images are mighty cool.
- * Images can help you lighten up the Programming process, and will give everyone a better impression of the Software.
- */
-class Image : public Widget
-{
- public:
-  Image(char* imgaename);
-  virtual ~Image(void);
-  void init(void);
-};
-
-//gint orxonox_gui_quit(GtkWidget* widget, GdkEvent* event, gpointer data);
-
-#endif /* _ORXONOX_GUI_GTK_H */
Index: xonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_keys.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_keys.cc	(revision 4216)
+++ 	(revision )
@@ -1,276 +1,0 @@
-/* 
-   orxonox - the future of 3D-vertical-scrollers
-
-   Copyright (C) 2004 orx
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-
-   ### File Specific:
-   main-programmer: Benjamin Grauer
-
-*/
-
-#include "orxonox_gui_keys.h"
-
-/**
-   \brief Creates an Keyboard-Frame
-*/
-OrxonoxGuiKeys::OrxonoxGuiKeys(void)
-{
-  this->keysFrame = new Frame("Keyboard-Options:");
-  //  keysFrame->setGroupName("Keyboard");
-  this->keysBox = new Box('h');
-  this->player1 = new Player("player1");
-  this->player2 = new Player("player2");
-
-  this->keysBox->fill(this->player1->getOpenButton());
-  this->keysBox->fill(this->player2->getOpenButton());
-
-  this->keysFrame->fill(this->keysBox);
-}
-
-/**
-   \brief Destructs the Keys-stuff
-*/
-OrxonoxGuiKeys::~OrxonoxGuiKeys(void)
-{
-  // nothing to do here.
-}
-
-/**
-   \brief Return the Frame
-   \return Returns the Audio-frame
-*/
-Widget* OrxonoxGuiKeys::getWidget(void)
-{
-  return this->keysFrame;
-}
-
-/* PLAYER */
-
-/**
-   \brief Creates new inputs for a player
-   \param player the name of the Player
-*/
-Player::Player(char* player)
-{
-  char* windowName = new char[strlen(player)+25];
-  strcpy(windowName, "Keyboard settings of ");
-  strcat(windowName, player);
-  this->pKeyWindow = new Window(windowName);
-  this->pKeyFrame = new Frame(windowName);
-   this->pKeysBox = new Box('v');
-   this->pKeysBox->setGroupName(player);
-    this->pKeysBox->fill(addKey(UP, "up"));
-    this->pKeysBox->fill(addKey(DOWN, "down"));
-    this->pKeysBox->fill(addKey(LEFT, "left"));
-    this->pKeysBox->fill(addKey(RIGHT, "right"));
-    this->pKeysBox->fill(addKey(SHOOT, "shoot"));
-    delete windowName;
-    closeButton = new Button("close");
-#ifdef HAVE_GTK2
-    this->closeButton->connectSignal("button_press_event", this->pKeyWindow, Window::windowClose);
-#endif /* HAVE_GTK2 */
-
-    this->pKeysBox->fill(this->closeButton);
-    this->pKeyFrame->fill(this->pKeysBox);
-   this->pKeyWindow->fill(this->pKeyFrame);
-   Window::addWindow(this->pKeyWindow);
-#ifdef HAVE_GTK2
-   this->pKeyWindow->connectSignal("destroy", this->pKeyWindow, Window::windowClose);
-   this->pKeyWindow->connectSignal("delete_event", this->pKeyWindow, Window::windowClose);
-#endif /* HAVE_GTK2 */
-
-  this->openButton = new Button(player);
-#ifdef HAVE_GTK2
-  this->openButton->connectSignal("button_press_event", this->pKeyWindow, Window::windowOpen);
-#endif /* HAVE_GTK2 */
-
-  this->inputWindow = new Window("inputWindow");
-
-  this->inputButton = new Button("test");
-  this->inputWindow->fill(inputButton);
-#ifdef HAVE_GTK2
-  this->inputWindow->connectSignal("destroy",  Widget::doNothingSignal);
-  this->inputWindow->connectSignal("delete_event", Widget::doNothingSignal);
-#endif /* HAVE_GTK2 */
-
-}
-
-/**
-   \brief adds a new Key.
-   \param key the number of the Key
-   \param name The name of the new Key.
-   \returns A widget that has the Key-Box
-*/
-Widget* Player::addKey(KEYS key, char* name)
-{
-  this->inputKey[key] = new InputKey;
-  this->inputKey[key]->pKeyBox = new Box();
-  this->inputKey[key]->pKeyButton = new Button(name);
-  this->inputKey[key]->pKeyOLabel = new OptionLabel(name, name);
-  this->inputKey[key]->pKeyOLabel->saveability();
-
-#ifdef HAVE_GTK2
-  //inputKey[key]->pKeyButton->connectSignal("key_press_event", inputKey[key]->pKeyButton, key_cb);
-  this->inputKey[key]->pKeyButton->connectSignal("button_press_event", this->inputKey[key], inputWindowEvent);
-#endif /* HAVE_GTK2 */
-  this->inputKey[key]->pKeyBox->fill(this->inputKey[key]->pKeyButton);
-  this->inputKey[key]->pKeyBox->fill(this->inputKey[key]->pKeyOLabel);
-  return this->inputKey[key]->pKeyBox;
-}
-
-/**
-   \returns the OpenButton of a Player
-*/
-Button* Player::getOpenButton(void)
-{
-  return this->openButton;
-}
-
-/**
-   \brief sets a new Key(only output)
-   \param key the new Key.
-*/
-void Player::setkey(KEYS key)
-{
-  cout << "setting up Key: "<< key <<endl;
-}
-
-Window* Player::inputWindow = NULL;
-Button* Player::inputButton = NULL;
-long Player::keySignal = 0;
-
-#ifdef HAVE_GTK2
-gint Player::inputWindowEvent(GtkWidget* w, GdkEventKey* event, void* inputKey)
-{
-  inputButton->setTitle("press a Key");
-  keySignal = inputButton->connectSignal("key_press_event", inputKey, key_cb);
-  inputWindow->open();
-}
-  
-/**
-   \brief Function which gets keystrokes
-   \param w the widget that released the Function.
-   \param event The event that happened.
-   \param Widget the Widget which will be applied.
-   \returns Nothing
-*/
-gint Player::key_cb(GtkWidget* w, GdkEventKey* event, void* inputKey)
-{
-  InputKey* inputkey =(InputKey*) inputKey;
-  char title [20];
-
-  switch(event->keyval) 
-    {
-    case GDK_Up:
-      strcpy(title, "up");
-      break;
-    case GDK_Down:
-      strcpy(title, "down");
-      break;
-    case GDK_Left:
-      strcpy(title, "left");
-      break;
-    case GDK_Right:
-      strcpy(title, "right");
-      break;
-      
-    case GDK_space:
-      strcpy(title, "space");
-      break;
-      
-    case 65293:
-      strcpy(title, "enter");
-      break;
-      
-      // Special Keys //
-    case GDK_Escape:
-      strcpy(title, "esc");
-      break;
-    case GDK_Tab:
-      strcpy(title, "tab");
-      break;
-    case GDK_Shift_L:
-      strcpy(title, "l_shift");
-      break;
-    case GDK_Shift_R:
-      strcpy(title, "r_shift");
-      break;
-    case GDK_Control_L:
-      strcpy(title, "l_ctrl");
-      break;
-    case GDK_Control_R:
-      strcpy(title, "r_ctrl");
-      break;
-    case GDK_Alt_L:
-      strcpy(title, "l_alt");
-      break;
-    case GDK_Alt_R:
-      strcpy(title, "r_alt");
-      break;
-      // FXX KEYS //
-    case GDK_F1:
-      strcpy(title, "f1");
-      break;
-    case GDK_F2:
-      strcpy(title, "f2");
-      break;
-    case GDK_F3:
-      strcpy(title, "f3");
-      break;
-    case GDK_F4:
-      strcpy(title, "f4");
-      break;
-    case GDK_F5:
-      strcpy(title, "f5");
-      break;
-    case GDK_F6:
-      strcpy(title, "f6");
-      break;
-    case GDK_F7:
-      strcpy(title, "f7");
-      break;
-    case GDK_F8:
-      strcpy(title, "f8");
-      break;
-    case GDK_F9:
-      strcpy(title, "f9");
-      break;
-    case GDK_F10:
-      strcpy(title, "f10");
-      break;
-    case GDK_F11:
-      strcpy(title, "f11");
-      break;
-    case GDK_F12:
-      strcpy(title, "f12");
-      break;
-      
-      
-    default:
-      char* tmp;
-      sprintf(tmp, "%c", event->keyval);
-      printf("other key %s \n", tmp);
-      strcpy(title, tmp);
-      break;
-    }
-
-  inputkey->pKeyOLabel->setValue(title);
-  inputButton->disconnectSignal(keySignal);
-  inputWindow->close();
-}
-#endif /* HAVE_GTK2 */
Index: xonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_keys.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_keys.h	(revision 4216)
+++ 	(revision )
@@ -1,80 +1,0 @@
-/*!
-  \file orxonox_gui_keys.h
-  \brief File that holds the class that creates the Keyboard-Options.
-*/
-
-#ifndef _ORXONOX_GUI_KEYS_H
-#define _ORXONOX_GUI_KEYS_H
-
-#include "orxonox_gui.h"
-#ifdef HAVE_GTK2
-#include <gdk/gdkkeysyms.h>
-#endif /* HAVE_GTK2 */
-
-/**
-   \brief defines the Possible Player Keys
-*/
-enum KEYS {UP, DOWN, LEFT, RIGHT, SHOOT};
-
-class Player;
-//! Class that creates the Keys-Options.
-class OrxonoxGuiKeys
-{
- private:
-  Frame* keysFrame;      //!< The Frame that holds the keyOptions.
-  Box* keysBox;          //!< The Frame that holds the keyOptions.
-  Player* player1;       //!< The first Player's keys.
-  Player* player2;       //!< The seconds Player's keys.
-  Button* misc;          //!< Other keyboeard options come here. \todo include some like pause, quit and so on.
-
- public:
-  OrxonoxGuiKeys(void);
-  ~OrxonoxGuiKeys(void);
-  
-  Widget* getWidget(void);
-};
-
-//! Class to hold infos about a Player
-/**
-   \todo split into subclass and superclass ButtonConfigurator
-*/
-class Player
-{
- private:
-  Window* pKeyWindow;     //!< The Window for a new Key-setting.
-  Frame* pKeyFrame;       //!< The Frame for a new Key-setting.
-  Button* openButton;     //!< The OpenButton for this key-settings.
-  Button* closeButton;    //!< The CloseButton for this key-settings.
-  Box* pKeysBox;          //!< The Box that holds the Key-settings.
-  
-  //! One KeyOption has one InputKey
-  struct InputKey
-  {
-    Box* pKeyBox;           //!< One Box that holds the Keys
-    Button* pKeyButton;     //!< The Button for changing the Key.
-    OptionLabel* pKeyOLabel;//!< The Label for displaying the Key-setting.
-  };
-
-  InputKey* inputKey[10];     //!< Buttons-array. \todo make it dynamic.
-
-  static Window* inputWindow; //!< A Window that gets keyboard clicks. Static, because only one needed.
-  static Button* inputButton; //!< A Button that gets keyboard clicks. Static, because only one needed.
-  static long keySignal;      //!< A keySignal that handles keyboard clicks. Static, because only one needed.
- public:
-  Player(char* player);
-
-  Widget* addKey(KEYS key, char* name);
-
-  Button* getOpenButton(void);
-
-#ifdef HAVE_GTK2
-  static gint inputWindowEvent(GtkWidget* w, GdkEventKey* event, void* widget);
-  static gint key_cb(GtkWidget* w, GdkEventKey* event, void* inputKey);
-#endif /* HAVE_GTK2 */
-  void setkey(KEYS key);
-  
-};
-
-
-
-#endif /* _ORXONOX_GUI_KEYS_H */
Index: xonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_update.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_update.cc	(revision 4216)
+++ 	(revision )
@@ -1,503 +1,0 @@
-/* 
-   orxonox - the future of 3D-vertical-scrollers
-   Copyright (C) 2004 orx
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-
-   ### File Specific:
-   main-programmer: Benjamin Grauer
-
-*/
-
-#include "orxonox_gui_update.h"
-#include <iostream>
-#include <string>
-
-#include "orxonox_gui.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-using namespace std;
-
-/**
-   \brief Creates an Update-Frame
-*/
-OrxonoxGuiUpdate::OrxonoxGuiUpdate(void)
-{
-  this->getSystemInfo();
-
-  this->updateFrame = new Frame("Update-Options:");
-  this->updateFrame->setGroupName("update");
-  this->updateBox = new Box('v');
-#ifdef HAVE_CURL
-
-  // the Button for autoUpdating
-  this->autoUpdate = new CheckButton("auto update");
-  this->updateBox->fill(this->autoUpdate);
-  this->autoUpdate->setFlagName("update", "u", 0);
-  this->autoUpdate->saveability();
-
-  this->updateSourceWindowCreate();
-  this->updateBox->fill(this->updateSourceWindowGetButton());
-
-  this->updateDataWindowCreate();
-  this->updateBox->fill(this->updateDataWindowGetButton());
-
-#else /* HAVE_CURL */
-  Label* noCurlLabel = new Label("since you do not have cURL,\nthis option is not availible");
-  this->updateBox->fill(noCurlLabel);  
-#endif /* HAVE_CURL */
-  this->updateFrame->fill(this->updateBox);
-}
-
-/**
-   \brief Destructs the Update-stuff
-*/
-OrxonoxGuiUpdate::~OrxonoxGuiUpdate(void)
-{
-  if(this->tmpDir)
-    delete []this->tmpDir;
-  if(this->homeDir)
-    delete []homeDir;
-  if(this->installDataDir)
-    delete []this->installDataDir;
-  if(this->installSourceDir)
-    delete []this->installSourceDir;
-  if(this->userName)
-    delete []this->userName;
-
-
-}
-
-/**
-   \brief Return the Frame
-   \return Returns the Audio-frame
-*/
-Widget* OrxonoxGuiUpdate::getWidget(void)
-{
-  return this->updateFrame;
-}
-
-/** 
-    \brief Look what info we can get from this system
-*/
-bool OrxonoxGuiUpdate::getSystemInfo(void)
-{
-  PRINTF(3)("Grabbing system information\n");
-  this->tmpDir = getenv("TMPDIR");
-  if(!tmpDir)
-    this->tmpDir = "/tmp";
-  PRINTF(4)("Temporary directory is: %s\n", this->tmpDir);
-
-#ifdef __WIN32__
-  this->homeDir = getenv("USERPROFILE");
-#else
-  this->homeDir = getenv("HOME");
-#endif
-  PRINTF(4)("Home directory is %s\n", homeDir);
-
-  this->installDataDir = "/usr/share/games/orxonox";
-  PRINTF(4)("Installation of orxonox-data will go to this directory: %s\n", this->installDataDir);
-
-  this->installSourceDir = "/usr/games/bin";
-  PRINTF(4)("Installation of orxonox-source will go to this directory: %s\n", this->installSourceDir);
-
-  this->userName = getenv("USER");
-  PRINTF(4)("Logged in username is: %s\n", this->userName);
-}
-
-#ifdef HAVE_CURL
-bool* OrxonoxGuiUpdate::checkForUpdates(void)
-{
-  PRINTF(3)("checking for new version of orxonox\n");
-  FileInfo updateFileInfo;
-  updateFileInfo.fileName = "update_info";
-  updateFileInfo.webRoot = "http://www.orxonox.ethz.ch/files/data";
-  updateFileInfo.localRoot = this->tmpDir;
-  
-  download(&updateFileInfo);
-}
-#endif /* HAVE_CURL */
-#ifdef HAVE_CURL
-/**
-   \brief Creates a window, and all it contains for the Data-update.
-*/
-void OrxonoxGuiUpdate::updateDataWindowCreate(void)
-{
-  this->updateDataWindow = new Window("update orxonox::Data");   
-  this->updateDataBox = new Box('v');
-
-  // the close-Button of the Update Window.
-  //  updateWindowClose = new Button("close");
-#ifdef HAVE_GTK2 
-  //  updateWindowClose->connectSignal("button_press_event", updateWindow, Window::windowClose);
-#endif /* HAVE_GTK2 */
-  //  updateWindowBox->fill(updateWindowClose);
-
-  this->updateDataBar = new ProgressBar();
-  this->updateDataBox->fill(this->updateDataBar);
-
-  FileInfo* dataInfo = new FileInfo;
-  dataInfo->bar = this->updateDataBar;
-
-  this->updateDataBegin = new Button("begin.");
-  dataInfo->stateButton = this->updateDataBegin;
-#ifdef HAVE_GTK2 
-  dataInfo->buttonSignal = updateDataBegin->connectSignal("button_press_event", dataInfo, updateDataFunc);
-#endif /* HAVE_GTK2 */
-  this->updateDataBox->fill(this->updateDataBegin);
-
-  this->updateDataWindow->fill(this->updateDataBox);
-
-  this->updateDataWindowButton = new Button("update orxonox::Data");
-#ifdef HAVE_GTK2 
-  this->updateDataWindowButton->connectSignal("button_press_event", this->updateDataWindow, Window::windowOpen);
-  this->updateDataWindow->connectSignal("destroy", this->updateDataWindow, Window::windowClose);
-  this->updateDataWindow->connectSignal("delete_event", this->updateDataWindow, Window::windowClose);
-#endif /* HAVE_GTK2 */
-
-}
-
-/**
-   \returns A Pointer to the Button of the UpdaterDataWindow
-*/
-Button* OrxonoxGuiUpdate::updateDataWindowGetButton(void)
-{
-  return this->updateDataWindowButton;
-}
-
-/**
-   \brief Creates a window, and all it contains for the Source-update.
-*/
-void OrxonoxGuiUpdate::updateSourceWindowCreate(void)
-{
-  // the button, that opens this Window.
-  this->updateSourceWindowButton = new Button("update orxonox::Source");
-
-  // the Window itself
-  this->updateSourceWindow = new Window("update orxonox::Source");
-
-  this->updateSourceBox = new Box();
-
-  this->updateSourceBar = new ProgressBar();
-  this->updateSourceBox->fill(this->updateSourceBar);
-  test = new Button("increment");
-
-#ifdef HAVE_GTK2 
-  test->connectSignal("button_press_event", updateSourceBar, updateSourceFunc);
-#endif /* HAVE_GTK2 */
-
-  this->updateSourceBox->fill(test);
-  this->updateSourceWindow->fill(updateSourceBox); 
-#ifdef HAVE_GTK2 
-  this->updateSourceWindowButton->connectSignal("button_press_event", this->updateSourceWindow, Window::windowOpen);
-  this->updateSourceWindow->connectSignal("destroy", this->updateSourceWindow, Window::windowClose);
-  this->updateSourceWindow->connectSignal("delete_event", this->updateSourceWindow, Window::windowClose);
-#endif /* HAVE_GTK2 */
-
-}
-
-/**
-   \returns A Pointer to the Button of the UpdaterSourceWindow
-*/
-Button* OrxonoxGuiUpdate::updateSourceWindowGetButton(void)
-{
-  return this->updateSourceWindowButton;
-}
-
-
-#ifdef HAVE_GTK2 
-/**
-   \brief updates the Data of orxonox.
-   \param w The widget, that executed this Function.
-   \param event The event that trigered this Function.
-   \param button The Button, that triggered this event.
-*/
-gint OrxonoxGuiUpdate::updateDataFunc(GtkWidget* w, GdkEventKey* event, void* info)
-{
-  FileInfo* dataInfo =(FileInfo*)info;
-
-  dataInfo->fileName = "02%20orxonox%203.mp3";
-  dataInfo->webRoot  = "http://www.orxonox.ethz.ch/files/";
-  dataInfo->localRoot = "./";
-  PRINTF(3)("Preparing to download file %s.\n", dataInfo->fileName);
-  downloadWithStyle(dataInfo);
-}
-
-/**
-   \brief updates the source of orxonox.
-   \param w The widget, that executed this Function.
-   \param event The event that trigered this Function.
-   \param button The Button, that triggered this event.
-*/
-gint OrxonoxGuiUpdate::updateSourceFunc(GtkWidget* w, GdkEventKey* event, void* bar)
-{
-  ProgressBar* tmpBar = static_cast<ProgressBar*>(bar);
-  tmpBar->setTotalSize(20);
-  tmpBar->setProgress(tmpBar->getProgress()+1);
-}
-#endif /* HAVE_GTK2 */
-
-/**
-   \brief The Function Curl calls to write out the File.
-   \param ptr A Pointer to the date to write.
-   \param size The size in bytes of one nmemb to write.
-   \param nmemb The Count of size to write.
-   \param stream Filehandler to write to.
-*/
-size_t OrxonoxGuiUpdate::curlWriteFunc(void* ptr, size_t size, size_t nmemb, FILE* stream)
-{
-  return fwrite(ptr, size, nmemb, stream);
-}
-
-/**
-   \brief The Function Curl calls to write out the File.
-   \param ptr A Pointer to the date to write to.
-   \param size The size in bytes of one nmemb to write.
-   \param nmemb The Count of size to write.
-   \param stream Filehandler to get data from.
-*/
-size_t OrxonoxGuiUpdate::curlReadFunc(void* ptr, size_t size, size_t nmemb, FILE* stream)
-{
-  return fread(ptr, size, nmemb, stream);
-}
-
-
-/**
-   \brief An update Function for the GUI, to show the progress.
-   \param Bar th ProgressBar to update
-   \param totalSize The total size of the download in bytes.
-   \param progress The current Progress of the download in bytes.
-   \param upTotal not needed
-   \param upProgress not needed
-*/
-int OrxonoxGuiUpdate::curlProgressFunc(ProgressBar* bar, double totalSize, double progress, double upTotal, double upProgress)
-{
-  bar->setProgress(progress);
-  bar->setTotalSize(totalSize);
-#ifdef HAVE_GTK2
-#ifndef HAVE_PTHREAD_H
-  while(gtk_events_pending()) gtk_main_iteration();
-#endif
-#endif
-  return 0;
-}
-
-/**
-   \brief The Curl handle for only one CURL(static).
-*/
-CURL* OrxonoxGuiUpdate::curlHandle = NULL;
-
-#ifdef HAVE_PTHREAD_H
-/** \brief The download Thread ID */
-pthread_t* OrxonoxGuiUpdate::downloadThreadID = new pthread_t;
-/**   \brief The download Thread ID*/
-pthread_t* OrxonoxGuiUpdate::downloadThreadFinishID = new pthread_t;
-#endif /* HAVE_PTHREAD_H */
-/**
-   \brief A bool parameter that shows if we are downloading.
-*/
-bool OrxonoxGuiUpdate::isDownloading = false;
-
-
-/**
-   \brief Initializes a Download without displaying it.
-   \param fileInfo the FileInfo.
-
-   !! BE AWARE THIS WILL NOT BE THREADED. !!
-*/
-bool OrxonoxGuiUpdate::download(void* fileInfo)
-{
-  if(isDownloading)
-    {
-      PRINTF(2)("unable to Download. already getting some file\n");
-      return false;
-    }
-  PRINTF(3)("Downloading.\n");
-  FileInfo* info =(FileInfo*)fileInfo;
-  CURLcode res;
-  CURL* localCurl;
-  localCurl = curl_easy_init();
-  char* fileOnNet = new char [strlen(info->webRoot)+strlen(info->fileName)+2];
-  strcpy(fileOnNet, info->webRoot);
-  if(fileOnNet[strlen(fileOnNet)] != '/') //!< \todo windows-shit
-    strcat(fileOnNet, "/");
-  strcat(fileOnNet, info->fileName);
-  char* fileOnDisk = new char [strlen(info->localRoot)+strlen(info->fileName)+2];
-  strcpy(fileOnDisk, info->localRoot);
-  if(fileOnDisk[strlen(fileOnDisk)] != '/') //!< \todo windows-shit
-    strcat(fileOnDisk, "/");
-  strcat(fileOnDisk, info->fileName);
-  
-  if(localCurl)
-    {
-      
-      info->fileHandle = fopen(fileOnDisk, "w");
-      
-      curl_easy_setopt(localCurl, CURLOPT_URL, fileOnNet);
-      curl_easy_setopt(localCurl, CURLOPT_WRITEDATA, info->fileHandle);
-      curl_easy_setopt(localCurl, CURLOPT_WRITEFUNCTION, curlWriteFunc);
-      curl_easy_setopt(localCurl, CURLOPT_READFUNCTION, curlReadFunc);
-      curl_easy_setopt(localCurl, CURLOPT_NOPROGRESS, true);
-      
-      curl_easy_perform(localCurl);
-
-      curl_easy_cleanup(localCurl);
-      fclose(info->fileHandle);
-    }
-}
-
-/**
-   \brief Initializes a Download with some style.
-   \param fileInfo the FileInfo.
-   \todo release thread-lock.
-
-   Downloading with a Button that gets a different Name while downloading, and a Bar, that gets to be updated. More to be followed
-*/
-bool OrxonoxGuiUpdate::downloadWithStyle(void* fileInfo)
-{
-  if(isDownloading)
-    {
-      PRINTF(2)("unable to Download. already getting some file\n");
-      return false;
-    }
-  PRINTF(3)("Downloading.\n");
-  FileInfo* info =(FileInfo*)fileInfo;
-  CURLcode res;
-  curlHandle = curl_easy_init();
-  char* fileOnNet = new char [strlen(info->webRoot)+strlen(info->fileName)+1];
-  strcpy(fileOnNet, info->webRoot);
-  strcat(fileOnNet, info->fileName);
-  char* fileOnDisk = new char [strlen(info->localRoot)+strlen(info->fileName)+1];
-  strcpy(fileOnDisk, info->localRoot);
-  strcat(fileOnDisk, info->fileName);
-
-  if(curlHandle)
-    {
-      
-      info->fileHandle = fopen(fileOnDisk, "w");
-      
-      curl_easy_setopt(curlHandle, CURLOPT_URL, fileOnNet);
-      curl_easy_setopt(curlHandle, CURLOPT_WRITEDATA, info->fileHandle);
-      curl_easy_setopt(curlHandle, CURLOPT_WRITEFUNCTION, curlWriteFunc);
-      curl_easy_setopt(curlHandle, CURLOPT_READFUNCTION, curlReadFunc);
-      curl_easy_setopt(curlHandle, CURLOPT_NOPROGRESS, false);
-      curl_easy_setopt(curlHandle, CURLOPT_PROGRESSFUNCTION, curlProgressFunc);
-      curl_easy_setopt(curlHandle, CURLOPT_PROGRESSDATA, info->bar);
-
-      if(!isDownloading)
-	{
-#ifdef HAVE_PTHREAD_H	  
-	  pthread_join(*downloadThreadFinishID, NULL);
-#endif /* HAVE_PTHREAD_H */
-#ifdef HAVE_GTK2 
-	  info->stateButton->disconnectSignal(info->buttonSignal);
-	  info->buttonSignal = info->stateButton->connectSignal("button_press_event", info, cancelDownload);
-#endif /* HAVE_GTK2 */
-#ifdef HAVE_PTHREAD_H
-	  info->stateButton->setTitle("cancel");
-#else /* HAVE_PTHREAD_H */
-	  info->stateButton->setTitle("please wait");
-#endif /* HAVE_PTHREAD_H */
-	  
-	  //! \todo check if threads really were created.
-#ifdef HAVE_PTHREAD_H
-	  pthread_create(downloadThreadID, NULL, downloadThread, info);
-	  pthread_create(downloadThreadFinishID, NULL, downloadThreadFinished, info);  
-#else
-	  downloadThread(info);
-	  downloadThreadFinished(info);
-#endif /* HAVE_PTHREAD_H */
-	 
-	  //      res = curl_easy_perform(curlHandle);
-	  
-	  //      fclose(outfile);
-	}
-      else 
-	PRINTF(1)("thread already in use\n");
-
-    }
-  return true;
-}
-
-/**
-   \brief The downloading process(either threaded or not).
-   \param fileInfo the FileInfo.
-
-   \todo Threads get locked, if the cancel button is pressed in to small intervals.
-*/
-void* OrxonoxGuiUpdate::downloadThread(void* fileInfo)
-{
-  isDownloading = true;
-  curl_easy_perform(curlHandle);
-}
-
-/**
-   \brief Finishes a downloading process. 
-   \param fileInfo the FileInfo.
-*/
-void* OrxonoxGuiUpdate::downloadThreadFinished(void* fileInfo)
-{ 
-  FileInfo* info =(FileInfo*)fileInfo;
-#ifdef HAVE_PTHREAD_H
-  pthread_join(*downloadThreadID, NULL);
-#ifdef HAVE_GTK2 
-  gdk_threads_enter();
-#endif /* HAVE_GTK2 */
-#endif /* HAVE_PTHREAD_H */
-  if(curlHandle)
-    curl_easy_cleanup(curlHandle);
- 
-  PRINTF(3)("Closing the downloaded file.\n");
-  fclose(info->fileHandle);
-
-  if(isDownloading)
-    info->stateButton->setTitle("go on");
-  //  else
-  //    info->stateButton->setTitle("done");
-#ifdef HAVE_GTK2 
-  info->stateButton->disconnectSignal(info->buttonSignal);
-  info->buttonSignal = info->stateButton->connectSignal("button_press_event", info, updateDataFunc);
-#endif /* HAVE_GTK2 */
-  isDownloading = false;
-#ifdef HAVE_PTHREAD_H
-#ifdef HAVE_GTK2 
-  gdk_threads_leave();
-#endif /* HAVE_GTK2 */
-#endif /* HAVE_PTHREAD_H */
-
-}
-
-#ifdef HAVE_GTK2
-/**
-   \brief canceles a downloading session.
-   \param w The widget, that executed this Function.
-   \param event The event that trigered this Function.
-   \param bar The Bar, that triggered this event.
-
-   \todo canceling a session in non-threaded mode.
-*/
-gint OrxonoxGuiUpdate::cancelDownload(GtkWidget* w, GdkEventKey* event, void* bar)
-{
-#ifdef HAVE_PTHREAD_H
-  pthread_cancel(*downloadThreadID);
-#else
-  PRINTF(2)("Cannot cancle the Downloading process until after this File, because no threading was enabled");
-#endif /* HAVE_PTHREAD_H*/
-}
-#endif /* HAVE_GTK2 */
-
-#endif /* HAVE_CURL */
Index: xonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_update.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_update.h	(revision 4216)
+++ 	(revision )
@@ -1,113 +1,0 @@
-/*!
-  \file orxonox_gui_update.h
-  \brief File that holds the class that creates the update-menu.
-*/
-
-#ifndef _ORXONOX_GUI_UPDATE_H
-#define _ORXONOX_GUI_UPDATE_H
-
-#include "orxonox_gui.h"
-#include <stdio.h>
-#ifdef HAVE_CURL
-#include <curl/curl.h>
-#include <curl/types.h>
-#include <curl/easy.h>
-#endif /* HAVE_CURL */
-#ifdef HAVE_PTHREAD_H
-#define _MULTI_THREADED
-#include <pthread.h>
-#endif /* HAVE_PTHREAD_H */
-using namespace std;
-
-//! Class that creates the execute-Options.
-class OrxonoxGuiUpdate
-{
- private:
-  // Defining Variables
-  char* tmpDir;                         //!< The Temporary directory.
-  char* homeDir;                        //!< The Home directory.
-  char* installDataDir;                 //!< Where to install the Data to.
-  char* installSourceDir;               //!< Where to install the Source to.
-  char* userName;                       //!< The user logged in.
-
-  bool getSystemInfo(void);
- 
-  // Window creation.
-  Frame* updateFrame;                   //!< The Frame that holds the updateOptions.
-  Box* updateBox;                       //!< The Box that holds the updateOptions.
-  CheckButton* autoUpdate;              //!< A Checkbutton to enable the automatic Updating.
-
-  
-  Button* updateDataWindowButton;       //!< A Button to update the Data of orxonox.
-  Window* updateDataWindow;             //!< A Window for the data-update.
-  Box* updateDataBox;                   //!< A Box for the Window for the Data-update.
-  ProgressBar* updateDataBar;           //!< A Bar to display the progress of the download.
-  Button* updateDataBegin;              //!< A Button to start the process.
-
-  Button* updateSourceWindowButton;     //!< A Button to update the Source of orxonox. \todo tricky
-  Window* updateSourceWindow;           //!< A Window for the Source-update.
-  Box* updateSourceBox;                 //!< A Box for the Window for the Source-update.
-  ProgressBar* updateSourceBar;         //!< A Bar to display the progress of the download.
-
-  Button* test;                         //!< will be deleted soon.
-
-#ifdef HAVE_GTK2
-  static gint updateDataFunc(GtkWidget* w, GdkEventKey* event, void* info);
-  static gint updateSourceFunc(GtkWidget* w, GdkEventKey* event, void* info);
-#endif /* HAVE_GTK2 */
-
-#ifdef HAVE_CURL
-  //! A Struct to hold information about one File to download.
-  struct FileInfo
-  {
-    char* fileName;                     //!< The Name of the file we want to get.
-    char* webRoot;                      //!< The Root of the File on The Web
-    char* localRoot;                    //!< The Root directory to put the files on the local disk.
-    FILE* fileHandle;                   //!< A fileHandler.
-
-    Button* stateButton;                //!< A button that shows either start or cancel;
-    long int buttonSignal;              //!< The Signal of the stateButton.
-    ProgressBar* bar;                   //!< The ProgressBar, that sould be updated.
-  };
-
-  static size_t curlWriteFunc(void* ptr, size_t size, size_t nmemb, FILE* stream);
-  static size_t curlReadFunc(void* ptr, size_t size, size_t nmemb, FILE* stream);
-  static int curlProgressFunc(ProgressBar* bar, double totalSize, double progress, double upTotal, double upProgress);
-
-  static CURL* curlHandle;
-#ifdef HAVE_GTK2 
-  static gint cancelDownload(GtkWidget* w, GdkEventKey* event, void* bar);
-#endif /* HAVE_GTK2 */  
-#ifdef HAVE_PTHREAD_H
-  static pthread_t* downloadThreadID;
-  static pthread_t* downloadThreadFinishID;
-#endif /* HAVE_PTHREAD_H */
-  static bool isDownloading;
-
-  static bool download(void* fileInfo);
-  static bool downloadWithStyle(void* fileInfo);
-  static void* downloadThread(void* fileInfo);
-  static void* downloadThreadFinished(void* fileInfo);
-
-  
-#endif /* HAVE_CURL */
-
- public:
-  OrxonoxGuiUpdate(void);
-  ~OrxonoxGuiUpdate(void);
-  
-  Widget* getWidget(void);
-#ifdef HAVE_CURL   
-  void updateDataWindowCreate(void);
-  Button* updateDataWindowGetButton(void);
-
-  void updateSourceWindowCreate(void);
-  Button* updateSourceWindowGetButton(void);
-
-  bool* checkForUpdates(void);
- 
-#endif /* HAVE_CURL */
-
-};
-
-#endif /* _ORXONOX_GUI_UPDATE_H */
Index: xonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_video.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_video.cc	(revision 4216)
+++ 	(revision )
@@ -1,187 +1,0 @@
-/* 
-   orxonox - the future of 3D-vertical-scrollers
-
-   Copyright (C) 2004 orx
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
-
-
-   ### File Specific:
-   main-programmer: Benjamin Grauer
-
-*/
-
-
-#include "orxonox_gui_video.h"
-
-#include "glincl.h"
-
-/**
-   \brief Creates the Video-Option-Frame
-*/
-OrxonoxGuiVideo::OrxonoxGuiVideo(void)
-{
-  this->videoFrame = new Frame("Video-Options:");
-  this->videoBox = new Box('v');
-  this->videoFrame->setGroupName("video");
-  
-  this->fullscreen = new CheckButton("Fullscreen-mode");
-  this->fullscreen->setFlagName("windowed", "q", 1);
-  this->fullscreen->saveability();
-  this->videoBox->fill(this->fullscreen);
-  this->resolution = new Menu("Resolution");
-  this->getResolutions(this->resolution);
-  this->resolution->saveability();
-  this->videoBox->fill(this->resolution);
-  this->wireframe = new CheckButton("WireFrame-mode");
-  this->wireframe->setFlagName("wireframe", "w", 0);
-  this->wireframe->saveability();
-  this->videoBox->fill(this->wireframe);
-
-  this->advancedWindowCreate();
-  this->videoBox->fill(this->advancedWindowGetButton());
-
-  this->videoFrame->fill(videoBox);
-}
-
-/**
-   \brief Destructs the Video-stuff
-*/
-OrxonoxGuiVideo::~OrxonoxGuiVideo(void)
-{
-  // nothing to do here.
-}
-
-/**
-   \return Returns the Video-frame
-*/
-Widget* OrxonoxGuiVideo::getWidget(void)
-{
-  return this->videoFrame;
-}
-
-
-/**
-   \brief Creates a window, and all it contains for the Source-update.
-*/
-void OrxonoxGuiVideo::advancedWindowCreate(void)
-{
-  // the button, that opens this Window.
-  this->advancedButton = new Button("advanced");
-
-  // the Window itself
-  this->advancedWindow = new Window("Advanced Video Options");
-  this->advancedWindow->setGroupName("advancedVideoOptions");
-
-  this->advancedBox = new Box('v');
-
-  // Advanced Performance Options
-  this->shadows = new CheckButton("Shadows");
-  this->shadows->saveability();
-  this->advancedBox->fill(this->shadows);
-
-  this->fog = new CheckButton("Fog");
-  this->fog->saveability();
-  this->advancedBox->fill(this->fog);
-
-  this->reflections = new CheckButton("Reflections");
-  this->reflections->saveability();
-  this->advancedBox->fill(this->reflections);
-
-  this->textures = new CheckButton("Textures");
-  this->textures->saveability();
-  this->advancedBox->fill(this->textures);
-
-  this->textureDetail = new Menu("Texture Detail", "low", "medium", "high", "lastItem");
-  this->textureDetail->saveability();
-  this->advancedBox->fill(this->textureDetail);
-
-  this->modelDetailLabel = new Label("Model Detail");
-  this->advancedBox->fill(this->modelDetailLabel);
-  this->modelDetail = new Menu("Model Detail", "low", "medium", "high", "lastItem");
-  this->modelDetail->saveability();
-  this->advancedBox->fill(this->modelDetail);
-
-  this->antiAliasingLabel = new Label("Anti-Aliasing-depth:");
-  this->advancedBox->fill(this->antiAliasingLabel);
-  this->antiAliasing = new Menu("Anti Aliasing", "0", "1", "2", "4", "8",  "lastItem");
-  this->antiAliasing->saveability();
-  this->advancedBox->fill(this->antiAliasing);
-
-  this->filterMethodLabel = new Label("Filtering Method:");
-  this->advancedBox->fill(this->filterMethodLabel);
-  this->filterMethod = new Menu("Filtering Method", "none", "linear", "bilinear", "trilinear", "anisortopic", "lastItem");
-  this->filterMethod->saveability();
-  this->advancedBox->fill(this->filterMethod);
-  
-  this->closeButton = new Button("close");
-  this->advancedBox->fill(this->closeButton);
-
-  this->advancedWindow->fill(advancedBox);
-#ifdef HAVE_GTK2 
-  this->advancedButton->connectSignal("button_press_event", this->advancedWindow, Window::windowOpen);
-  this->closeButton->connectSignal("button_press_event", this->advancedWindow, Window::windowClose);
-  this->advancedWindow->connectSignal("destroy", this->advancedWindow, Window::windowClose);
-  this->advancedWindow->connectSignal("delete_event", this->advancedWindow, Window::windowClose);
-#endif /* HAVE_GTK2 */
-   Window::addWindow(this->advancedWindow);
-
-}
-
-/**
-   \returns A Pointer to the Button of the UpdaterSourceWindow
-*/
-Button* OrxonoxGuiVideo::advancedWindowGetButton(void)
-{
-  return this->advancedButton;
-}
-
-void OrxonoxGuiVideo::getResolutions(Menu* menu)
-{
-  SDL_Init(SDL_INIT_VIDEO);
-  SDL_Rect **modes;
-  int i;
-  int x = 0,y =0; // check for difference
-  char tmpChar[100];
-  
-  /* Get available fullscreen/hardware modes */
-  modes=SDL_ListModes(NULL, SDL_FULLSCREEN|SDL_HWSURFACE);
-  
-  /* Check is there are any modes available */
-  if(modes == (SDL_Rect **)0){
-    PRINTF(2)("No video-modes available!\n");
-    exit(-1);
-  }
-  
-  /* Check if our resolution is restricted */
-  if(modes == (SDL_Rect **)-1){
-    PRINTF(2)("All resolutions available.\n");
-  }
-  else{
-    /* Print valid modes */
-    PRINT(4)("Available Modes\n");
-    for(i = 0; modes[i] ;++i)
-      {
-	if (x != modes[i]->w || y != modes[i]->h)
-	  { 
-	    PRINT(4)("  %d x %d\n", modes[i]->w, modes[i]->h);
-	    sprintf(tmpChar, "%dx%d", modes[i]->w, modes[i]->h);
-	    menu->addItem(tmpChar);
-	    x = modes[i]->w; y = modes[i]->h;
-	  }
-      }
-  }
-  SDL_Quit();
-}
Index: xonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_video.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/orxonox_gui_video.h	(revision 4216)
+++ 	(revision )
@@ -1,54 +1,0 @@
-/*!
-  \file orxonox_gui_video.h
-  \brief File that holds the class that creates the Video-Options.
-*/
-#ifndef _ORXONOX_GUI_VIDEO_H
-#define _ORXONOX_GUI_VIDEO_H
-
-#include "orxonox_gui.h"
-
-//! Class that creates the Video-Options.
-class OrxonoxGuiVideo
-{
- private:
-  Frame* videoFrame;        //!< The Frame that holds the video options.
-  Box* videoBox;            //!< The Box that holds the video options.
-  CheckButton* fullscreen;  //!< CheckButton for fullscreen-mode
-  Menu* resolution;         //!< Menu for the resolution
-  CheckButton* wireframe;   //!< CheckButton for wireframe Mode.
-
-  // advanced-Performance-Options
-  Window* advancedWindow;   //!< A Window to display advanced options.
-  Button* advancedButton;   //!< A Button to open the Advanced Video Performance Window.
-  Box* advancedBox;         //!< A Box to pack the options into.
-  CheckButton* shadows;     //!< CheckButton for shadows
-  CheckButton* fog;         //!< CheckButton for fog.
-  CheckButton* reflections; //!< CheckButton for reflections
-  CheckButton* textures;    //!< CheckButton for textures
-  Menu* textureDetail;      //!< Menu for the Texture-Detail.
-  
-  Label* modelDetailLabel;  //!< Label for model-detail.
-  Menu* modelDetail;        //!< model-detail.
-  
-  Label* antiAliasingLabel; //!< Label for the anti-aliasing mode.
-  Menu* antiAliasing;       //!< Menu for the Antialiasing-mode.
-
-  Label* filterMethodLabel; //!< Label for filtering-Method.
-  Menu* filterMethod;       //!< Menu for filtering Method.
-
-  Button* closeButton;      //!< A Button to close the Advanced-settingsWindow.
-
-  Button* advancedWindowGetButton(void);
-  void advancedWindowCreate(void);
-  
- public:
-  OrxonoxGuiVideo(void);
-  ~OrxonoxGuiVideo(void);
-
-  Widget* getWidget(void);
-
-  void getResolutions(Menu* menu);
-  
-
-};
-#endif /* _ORXONOX_GUI_VIDEO_H */
Index: /orxonox/branches/movie_player/src/lib/gui/gui/rc
===================================================================
--- /orxonox/branches/movie_player/src/lib/gui/gui/rc	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/gui/gui/rc	(revision 4217)
@@ -1,139 +1,139 @@
-# pixmap_path "<dir 1>:<dir 2>:<dir 3>:..."
-#
-pixmap_path "/usr/include/X11R6/pixmaps:/home/imain/pixmaps"
-#
-# style <name> [= <name>]
-# {
-#   <option>
-# }
-#
-# widget <widget_set> style <style_name>
-# widget_class <widget_class_set> style <style_name>
-
-# Here is a list of all the possible states.  Note that some do not apply to
-# certain widgets.
-#
-# NORMAL - The normal state of a widget, without the mouse over top of
-# it, and not being pressed, etc.
-#
-# PRELIGHT - When the mouse is over top of the widget, colors defined
-# using this state will be in effect.
-#
-# ACTIVE - When the widget is pressed or clicked it will be active, and
-# the attributes assigned by this tag will be in effect.
-#
-# INSENSITIVE - When a widget is set insensitive, and cannot be
-# activated, it will take these attributes.
-#
-# SELECTED - When an object is selected, it takes these attributes.
-#
-# Given these states, we can set the attributes of the widgets in each of
-# these states using the following directives.
-#
-# fg - Sets the foreground color of a widget.
-# bg - Sets the background color of a widget.
-# bg_pixmap - Sets the background of a widget to a tiled pixmap.
-# font - Sets the font to be used with the given widget.
-#
-
-# This sets a style called "button".  The name is not really important, as
-# it is assigned to the actual widgets at the bottom of the file.
-
-style "window"
-{
-  #This sets the padding around the window to the pixmap specified.
-  #bg_pixmap[<STATE>] = "<pixmap filename>"
-  #bg_pixmap[NORMAL] = "warning.xpm"
-  bg[NORMAL] = { 0, 0, 0 }
-  fg[NORMAL] = { 0, 1.0, 0 }
-  base[NORMAL] = { 0, 0, 0 }
-  base[INSENSITIVE] = { 0, 0, 0 }
-}
-
-style "scale"
-{
-  #Sets the foreground color (font color) to red when in the "NORMAL"
-  #state.
-  
-  fg[NORMAL] = { 0, 1.0, 0 }
-  bg[NORMAL] = { 0, 1.0, 0 }
-  bg[INSENSITIVE] = { 0, 1.0, 0 }
-  bg[PRELIGHT] = { 0, 1.0, 0 }
-  bg[ACTIVE] =   {0.2, 0.2, 0.2 }
-  
-  #Sets the background pixmap of this widget to that of its parent.
-  bg_pixmap[NORMAL] = "<parent>"
-}
-
-style "button"
-{
-  # This shows all the possible states for a button.  The only one that
-  # doesn't apply is the SELECTED state.
-  
-  fg[PRELIGHT] = { 0, 0, 0 }
-  bg[PRELIGHT] = { 0, 1.0, 0 }
-  bg[ACTIVE] = { 0, 1.0, 0 }
-  fg[ACTIVE] = { 0, 1.0, 0 }
-  bg[NORMAL] = { 0, 0, 0 }
-  fg[NORMAL] = { 0, 1.0, 0 }
-  bg[INSENSITIVE] = { 1.0, 0, 1.0 }
-  fg[INSENSITIVE] = { 1.0, 0, 1.0 }
-  base[NORMAL] = { 0, 1.0, 0 }
-  base[PRELIGHT] = { 0, 1.0, 0 }
-}
-
-# In this example, we inherit the attributes of the "button" style and then
-# override the font and background color when prelit to create a new
-# "main_button" style.
-
-style "main_button" = "button"
-{
-  font = "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
-  bg[PRELIGHT] = { 0, 0.75, 0 }
-}
-
-style "toggle_button" = "button"
-{
-  fg[NORMAL] = { 0, 1.0, 0 }
-  fg[ACTIVE] = { 0, 1.0, 0 }
-  text[NORMAL] = { 0, 0, 0}
-  # This sets the background pixmap of the toggle_button to that of its
-  # parent widget (as defined in the application).
-  #bg_pixmap[NORMAL] = "<parent>"
-}
-
-style "text"
-{
-  #bg_pixmap[NORMAL] = "marble.xpm"
-  fg[NORMAL] = { 0, 1.0, 0 }
-}
-
-style "ruler"
-{
-  font = "-adobe-helvetica-medium-r-normal--*-20-*-*-*-*-*-*"
-}
-
-# pixmap_path "~/.pixmaps"
-
-# These set the widget types to use the styles defined above.
-# The widget types are listed in the class hierarchy, but could probably be
-# just listed in this document for the users reference.
-
-widget_class "GtkWindow"           style "window"
-widget_class "GtkFrame"            style "window"
-widget_class "Gtk*EventBox"        style "window"
-widget_class "GtkDialog"           style "window"
-widget_class "GtkFileSelection"    style "window"
-widget_class "*Gtk*Scale"          style "scale"
-widget_class "*GtkCheckButton*"    style "toggle_button"
-widget_class "*Gtk*Menu*"          style "toggle_button"
-widget_class "*GtkRadioButton*"    style "toggle_button"
-widget_class "*GtkButton*"         style "button"
-widget_class "*Ruler"              style "ruler"
-widget_class "*GtkText"            style "text"
-widget_class "*GtkLabel"           style "text"
+/*
+ * style <name> [= <name>]
+ * {
+ *   <option>
+ * }
+ *
+ * widget <widget_set> style <style_name>
+ * widget_class <widget_class_set> style <style_name>
+ *
+ * Here is a list of all the possible states.  Note that some do not apply to
+ * certain widgets.
+ *
+ * NORMAL - The normal state of a widget, without the mouse over top of
+ * it, and not being pressed, etc.
+ *
+ * PRELIGHT - When the mouse is over top of the widget, colors defined
+ * using this state will be in effect.
+ *
+ * ACTIVE - When the widget is pressed or clicked it will be active, and
+ * the attributes assigned by this tag will be in effect.
+ *
+ * INSENSITIVE - When a widget is set insensitive, and cannot be
+ * activated, it will take these attributes.
+ *
+ * SELECTED - When an object is selected, it takes these attributes.
+ *
+ * Given these states, we can set the attributes of the widgets in each of
+ * these states using the following directives.
+ *
+ * fg - Sets the foreground color of a widget.
+ * bg - Sets the background color of a widget.
+ * bg_pixmap - Sets the background of a widget to a tiled pixmap.
+ * base - Sets the base of Widgets
+ * font - Sets the font to be used with the given widget.
+*/
 
 
-# This sets all the buttons that are children of the "main window" to
-# the main_button style.  These must be documented to be taken advantage of.
-widget "main window.*GtkButton*" style "main_button"
+
+static const gchar* rc_string =
+(
+"style'orxonox'"
+"{"
+"fg[NORMAL]      = { 0.0, 1.0, 0.0 }"
+"fg[PRELIGHT]    = { 0.0, 1.0, 0.0 }"
+"fg[ACTIVE]      = { 0.0, 1.0, 0.0 }"
+"fg[INSENSITIVE] = { 0.0, 0.8, 0.0 }"
+"fg[SELECTED]    = { 0.0, 1.0, 0.0 }"
+
+"bg[NORMAL]      = { 0.0, 0.0, 0.0 }"
+"bg[PRELIGHT]    = { 0.0, 1.0, 0.0 }"
+"bg[ACTIVE]      = { 0.0, 0.3, 0.0 }"
+"bg[INSENSITIVE] = { 0.0, 0.1, 0.0 }"
+"bg[SELECTED]    = { 0.0, 0.1, 0.0 }"
+
+"base[NORMAL]      = { 0.0, 1.0, 0.0 }"
+"base[PRELIGHT]    = { 0.0, 1.0, 0.0 }"
+"base[ACTIVE]      = { 0.0, 1.0, 0.0 }"
+"base[INSENSITIVE] = { 0.0, 1.0, 0.0 }"
+"base[SELECTED]    = { 0.0, 1.0, 0.0 }"
+
+"font              = '-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*'"
+"}"
+
+"style'window'"
+"{"			
+"bg[NORMAL] = { 0, 0, 0 }"
+"fg[NORMAL] = { 0, 1.0, 0 }"
+"base[NORMAL] = { 0, 0, 0 }"
+"base[INSENSITIVE] = { 0, 0, 0 }"
+"}"
+
+"style'frame'"
+"{"
+"bg[NORMAL]  = { 0.0, 0.4, 0.0 }"
+"}"
+
+"style'scale'"
+"{"
+"fg[NORMAL] = { 0, 1.0, 0 }"
+"bg[NORMAL] = { 0, 1.0, 0 }"
+"bg[INSENSITIVE] = { 0, 1.0, 0 }"
+"bg[PRELIGHT] = { 0, 1.0, 0 }"
+"bg[ACTIVE] =   {0.2, 0.2, 0.2 }"
+"}"
+
+"style'button'"
+"{"
+"fg[PRELIGHT] = { 0, 0, 0 }"
+"bg[PRELIGHT] = { 0, 1.0, 0 }"
+"bg[ACTIVE] = { 0, 1.0, 0 }"
+"fg[ACTIVE] = { 0, 1.0, 0 }"
+"bg[NORMAL] = { 0, 0, 0 }"
+"fg[NORMAL] = { 0, 1.0, 0 }"
+"bg[INSENSITIVE] = { 0.0, 0.2, 0.0 }"
+"fg[INSENSITIVE] = { 0.0, 0.8, 0.0 }"
+"base[NORMAL] = { 0, 1.0, 0 }"
+"base[PRELIGHT] = { 0, 1.0, 0 }"
+"}"
+
+"style'main_button' = 'button'"
+"{"
+"font = '-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*'"
+"bg[PRELIGHT] = { 0, 0.75, 0 }"
+"}"
+
+"style'toggle_button' = 'button'"
+"{"
+"fg[NORMAL] = { 0, 1.0, 0 }"
+"fg[ACTIVE] = { 0, 1.0, 0 }"
+"text[NORMAL] = { 0, 0, 0}"
+"}"
+
+"style'text'"
+"{"
+"fg[NORMAL] = { 0, 1.0, 0 }"
+"}"
+
+"style'ruler'"
+"{"
+"font = '-adobe-helvetica-medium-r-normal--*-20-*-*-*-*-*-*'"
+"}"
+
+"widget'Gtk*'			style'orxonox'"
+"widget'*Gtk*Frame*'              style'frame'"
+"widget'GtkWindow'		style'window'"
+"widget'GtkFileSelection'	style'window'"
+"widget'*Gtk*Scale'		style'scale'"
+"widget'*GtkCheckButton*'	style'toggle_button'"
+"widget'*Gtk*Menu*'		style'toggle_button'"
+"widget'*GtkRadioButton*'	style'toggle_button'"
+"widget'*GtkButton*'		style'button'"
+"widget'*Ruler'			style'ruler'"
+"widget'*GtkText'		style'text'"
+"widget'*GtkLabel'		style'text'"
+
+"widget'main window.*GtkButton*' style 'main_button'"
+
+
+);
Index: /orxonox/branches/movie_player/src/lib/util/ini_parser.cc
===================================================================
--- /orxonox/branches/movie_player/src/lib/util/ini_parser.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/util/ini_parser.cc	(revision 4217)
@@ -16,20 +16,21 @@
 
 #include "ini_parser.h"
+#include "resource_manager.h"
 
 using namespace std;
 
 /**
-	\brief constructs an IniParser using a file
-	\param filename: the path and name of the file to parse
+   \brief constructs an IniParser using a file
+   \param filename: the path and name of the file to parse
 */
-IniParser::IniParser (char* filename)
+IniParser::IniParser (const char* filename)
 {
   stream = NULL;
   bInSection = false;
-  openFile(filename);
+  this->openFile(filename);
 }
 
 /**
-	\brief removes the IniParser from memory
+   \brief removes the IniParser from memory
 */
 IniParser::~IniParser ()
@@ -43,14 +44,17 @@
    \return zero on success or -1 if an error occured;
 */
-int IniParser::openFile( char* filename)
+int IniParser::openFile(const char* filename)
 {
+  char* tmpName = ResourceManager::homeDirCheck(filename);
   if( filename == NULL) return -1;
   if( stream != NULL)	fclose (stream);
-  if( (stream = fopen (filename, "r")) == NULL)
+  if( (stream = fopen (tmpName, "r")) == NULL)
     {
-      printf("IniParser could not open %s\n", filename);
+      PRINTF(1)("IniParser could not open %s\n", filename);
+      delete tmpName;
       return -1;
     }
   bInSection = false;
+  delete tmpName;
   return 0;
 }
@@ -123,11 +127,16 @@
 	  return -1;
 	}
-      if( (ptr = strchr( linebuffer, '=')) != NULL)
+      sscanf(linebuffer, "%s = %s", name, value);
+      return 0;
+      /*
+	if( (ptr = strchr( tmpBuffer, '=')) != NULL)
 	{
-	  if( ptr == linebuffer) continue;
-	  strcpy (value, &ptr[1]);
-	  strncpy (name, linebuffer, strlen (linebuffer) - strlen (value) - 1);
-	  return 0;
+	if( ptr == linebuffer) continue;
+	strcpy (value, &ptr[1]);
+	strncpy (name, linebuffer, strlen (linebuffer) - strlen (value) - 1);
+	printf ("%s, %s\n", value, name);
+	return 0;
 	}
+      */
     }
   return -1;	
@@ -144,5 +153,5 @@
    lead to unwanted behaviour.
 */
-char* IniParser::getVar( char* name, char* section, char* defvalue = "")
+char* IniParser::getVar(const char* name, char* section, char* defvalue = "")
 {
   strcpy (internbuf, defvalue);
Index: /orxonox/branches/movie_player/src/lib/util/ini_parser.h
===================================================================
--- /orxonox/branches/movie_player/src/lib/util/ini_parser.h	(revision 4216)
+++ /orxonox/branches/movie_player/src/lib/util/ini_parser.h	(revision 4217)
@@ -26,9 +26,9 @@
 	
  public:
-  IniParser (char* filename);
+  IniParser (const char* filename);
   ~IniParser ();
   
-  char* getVar( char* name, char* section, char* defvalue);
-	int openFile( char* name);
+  char* getVar(const char* name, char* section, char* defvalue);
+  int openFile(const char* name);
   int getSection( char* section);
   int nextVar( char* name, char* value);
Index: /orxonox/branches/movie_player/src/orxonox.cc
===================================================================
--- /orxonox/branches/movie_player/src/orxonox.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/orxonox.cc	(revision 4217)
@@ -22,12 +22,15 @@
    main-programmer: Patrick Boenzli
    co-programmer: Christian Meyer
-   co-programmer: Benjamin Grauer: injected ResourceManager/GraphicsEngine
+   co-programmer: Benjamin Grauer: injected ResourceManager/GraphicsEngine/GUI
 */
 
 #include "orxonox.h"
+
+#include "gui.h"
 
 #include "world.h"
 #include "data_tank.h"
 #include "command_node.h"
+#include "ini_parser.h"
 #include "game_loader.h"
 #include "graphics_engine.h"
@@ -35,6 +38,8 @@
 #include "text_engine.h"
 #include "factory.h"
+#include "benchmark.h"
 
 #include <string.h>
+
 int verbose = 4;
 
@@ -43,8 +48,17 @@
 /**
    \brief create a new Orxonox
+
+   In this funcitons only global values are set. The game will not be started here.
 */
 Orxonox::Orxonox ()
 {
-  pause = false;
+  this->pause = false;
+
+  this->world = NULL;
+  this->resources = NULL;
+  this->localinput = NULL;
+
+  this->argc = 0;
+  this->argv = NULL;
 }
 
@@ -54,7 +68,8 @@
 Orxonox::~Orxonox () 
 {
+  int i =0;
   Orxonox::singletonRef = NULL;
   if( world != NULL) delete world;
-  if( localinput != NULL) delete world;
+  if( localinput != NULL) delete localinput;
   if( resources != NULL) delete resources;
   delete GraphicsEngine::getInstance(); // deleting the Graphics
@@ -85,5 +100,5 @@
 void Orxonox::getConfigFile (int argc, char** argv)
 {
-  strcpy (configfilename, "orxonox.conf");
+  strcpy (configfilename, "~/.orxonox/orxonox.conf");
 }
 
@@ -93,4 +108,6 @@
 int Orxonox::init (int argc, char** argv)
 {
+  this->argc = argc;
+  this->argv = argv;
   // parse command line
   // config file
@@ -99,4 +116,7 @@
   SDL_Init (SDL_INIT_TIMER);
   // initialize everything
+  printf("> Initializing resources\n");
+  if( initResources () == -1) return -1;
+
   if( initVideo() == -1) return -1;
   if( initSound() == -1) return -1;
@@ -105,6 +125,4 @@
   printf("> Initializing networking\n");
   if( initNetworking () == -1) return -1;
-  printf("> Initializing resources\n");
-  if( initResources () == -1) return -1;
   //printf("> Initializing world\n");
   //if( init_world () == -1) return -1; PB: world will be initialized when started
@@ -121,5 +139,5 @@
   
   GraphicsEngine::getInstance();
-  
+    
   return 0;
 }
@@ -144,5 +162,5 @@
 {
   // create localinput
-  localinput = new CommandNode( configfilename);
+  localinput = new CommandNode(configfilename);
   
   return 0;
@@ -165,11 +183,50 @@
 int Orxonox::initResources() 
 {
-  //  printf("Not yet implemented\n");
   PRINT(3)("initializing ResourceManager\n");
   resourceManager = ResourceManager::getInstance();
-  !resourceManager->setDataDir("../data/");
+
+  // create parser
+  IniParser parser (DEFAULT_CONFIG_FILE);
+  if( parser.getSection (CONFIG_SECTION_DATA) == -1)
+    {
+      PRINTF(1)("Could not find Section %s in %s\n", CONFIG_SECTION_DATA, DEFAULT_CONFIG_FILE);
+      return -1;
+    }
+  char namebuf[256];
+  char valuebuf[256];
+  memset (namebuf, 0, 256);
+  memset (valuebuf, 0, 256);
+  
+  while( parser.nextVar (namebuf, valuebuf) != -1)
+    {
+      if (!strcmp(namebuf, CONFIG_NAME_DATADIR))
+	{
+	  //  printf("Not yet implemented\n");
+	  if (!resourceManager->setDataDir(valuebuf))
+	    {
+	      PRINTF(1)("Data Could not be located\n");
+	      exit(-1);
+	    }
+	}
+      
+      memset (namebuf, 0, 256);
+      memset (valuebuf, 0, 256);
+    }
+  
+  if (!resourceManager->checkDataDir(DEFAULT_DATA_DIR_CHECKFILE))
+    {
+      PRINTF(1)("The DataDirectory %s could not be verified\nPlease Change in File %s Section %s Entry %s to a suitable value\n",
+		resourceManager->getDataDir(),
+		DEFAULT_CONFIG_FILE,
+		CONFIG_SECTION_DATA,
+		CONFIG_NAME_DATADIR);
+      exit(-1);
+    }
+
 
   PRINT(3)("initializing TextEngine\n");
   TextEngine::getInstance();
+
+  return 0;
 }
 
@@ -201,5 +258,5 @@
   
   this->gameLoader = GameLoader::getInstance();
-  this->gameLoader->loadCampaign("../data/worlds/DefaultCampaign.oxc");
+  this->gameLoader->loadCampaign("worlds/DefaultCampaign.oxc");
   //  this->gameLoader->loadDebugCampaign(DEBUG_CAMPAIGN_0);
   this->gameLoader->init();
@@ -281,4 +338,5 @@
 
 
+bool showGui = false;
 
 /**
@@ -288,25 +346,16 @@
 */
 int main(int argc, char** argv) 
-{  
-  
-  /* reading arguments 
-     
-     currently supported arguments are:
-     <no args>                   ::    just starts orxonox
-     --benchmark                 ::    start the benchmark without starting orxonox
-     
-     this is a preselection: it matches to one of the start* functions, the
-     finetuning is made in those functions.
-  */
-
-
+{ 
+
+  // here the pre-arguments are loaded, these are needed to go either to orxonx itself, Help, or Benchmark.
   int i;
-  for(i = 0; i < argc; ++i)
-    {
-      if(! strcmp( "--help", argv[i])) return startHelp();
-      else if(! strcmp( "--benchmark", argv[i])) return startBenchmarks();
-    }
-
-  PRINTF(2)("Orxonox does not understand the arguments");
+  for(i = 1; i < argc; ++i)
+    {
+      if(! strcmp( "--help", argv[i]) || !strcmp("-h", argv[i])) return startHelp(argc, argv);
+      else if(!strcmp( "--benchmark", argv[i]) || !strcmp("-b", argv[i])) return startBenchmarks();
+      else if(!strcmp( "--gui", argv[i]) || !strcmp("-g", argv[i])) showGui = true;
+      //      else PRINTF(2)("Orxonox does not understand the arguments %s\n", argv[i]);
+    }
+
   return startOrxonox(argc, argv);
 }
@@ -314,11 +363,16 @@
 
 
-int startHelp()
-{
-  printf("orxonox: starts the orxonox game - rules\n");
-  printf("usage: orxonox [arg]\n\n");
-  printf("valid options:\n");
-  printf(" --benchmark\tstarts the orxonox benchmark\n");
-  printf(" --help \tshows this menu\n");
+int startHelp(int argc, char** argv)
+{
+  PRINT(0)("orxonox: starts the orxonox game - rules\n");
+  PRINT(0)("usage: orxonox [arg [arg...]]\n\n");
+  PRINT(0)("valid options:\n");
+  {
+    Gui* gui = new Gui(argc, argv);
+    gui->printHelp();
+    delete gui;
+  }
+  PRINT(0)(" -b|--benchmark:\t\tstarts the orxonox benchmark\n");
+  PRINT(0)(" -h|--help:\t\t\tshows this help\n");
 }
 
@@ -326,10 +380,31 @@
 int startOrxonox(int argc, char** argv)
 {
-  printf(">>> Starting Orxonox <<<\n");
+  // checking for existence of the configuration-files
+  if (showGui ||
+      !ResourceManager::isFile("~/.orxonox/orxonox.conf") ||
+      ResourceManager::isFile("~/.orxonox/orxonox.lock"))
+    {
+      if (ResourceManager::isFile("~/.orxonox/orxonox.lock"))
+	ResourceManager::deleteFile("~/.orxonox/orxonox.lock");
+      
+      // starting the GUI
+      Gui* gui = new Gui(argc, argv);
+      gui->startGui();
+
+      if (! gui->startOrxonox)
+	return 0;
+      
+      delete gui;
+    }
+  
+  PRINT(0)(">>> Starting Orxonox <<<\n");
+
+  ResourceManager::touchFile("~/.orxonox/orxonox.lock");
+
   Orxonox *orx = Orxonox::getInstance();
   
   if((*orx).init(argc, argv) == -1)
     {
-      printf("! Orxonox initialization failed\n");
+      PRINTF(1)("! Orxonox initialization failed\n");
       return -1;
     }
@@ -338,448 +413,5 @@
   
   delete orx;
-  
-}
-
-#if defined __linux__ 
-
-#include "list.h"
-#include "world_entity.h"
-#include "vector.h"
-#include "player.h"
-#include "base_object.h"
-
-#include <asm/msr.h>
-#include <linux/timex.h>
-
-
-#define LIST_MAX 1000
-#define VECTOR_MAX 1000000
-#define ITERATIONS 10000
-
-
-int startBenchmarks()
-{
-
-  printf("===========================================================\n");
-  printf("=                      BENCHMARKS                         =\n");
-  printf("===========================================================\n");
-  printf(" the author is not paying any attention to cacheing effects\n");
-  printf(" of the CPU.\n\n");
-  printf("[title]\t\t\t\t\t     [cycles]\t[loops]\n\n");
-  //  printf("------------------------------------------------------------\n\n");
-
-  // first measure the time overhead:
-  unsigned long ini, end, dt, tmp;
-  rdtscl(ini); rdtscl(end);
-  dt = end - ini;
-
-  int type = -1; 
-  /* type   -1 == all 
-     type    0 == framework
-     type    1 == vector
-     type    2 == quaternion
-     type    3 == lists
-  */
-  if(type == 0 || type == -1)
-    {
-      /* framework test*/
-      
-      printf("Generating Objects:\t\t\t\t\t%i\n", ITERATIONS);
-      /* ************WorldEntity class test************** */
-      WorldEntity* w = NULL;
-      int i = 0;
-      unsigned long mittel = 0;
-      
-      for(i = 0; i < ITERATIONS; ++i)
-	{
-	  rdtscl(ini);
-	  
-	  WorldEntity* w = new WorldEntity();
-	  
-	  rdtscl(end);
-	  delete w;
-	  mittel += (end - ini - dt);
-	}
-      float mi = mittel / (float)ITERATIONS;
-      printf(" Generate a WorldEntity object:\t\t%11.2f\n", mi);
-      
-      /*
-	mittel = 0;
-	for(i = 0; i < ITERATIONS; ++i)
-	{
-	rdtscl(ini);
-	
-	WorldEntity* w = new Primitive(P_SPHERE);
-	
-	rdtscl(end);
-	delete w;
-	mittel += (end - ini - dt);
-	}
-	mi = mittel / (float)ITERATIONS;
-	printf(" Generate a Primitive  object:\t\t%11.2f\n", mi);
-      */
-
-      mittel = 0;
-      for(i = 0; i < ITERATIONS; ++i)
-	{
-	  rdtscl(ini);
-	  
-	  Vector* v = new Vector();
-	  
-	  rdtscl(end);
-	  delete v;
-	  mittel += (end - ini - dt);
-	}
-      mi = mittel / (float)ITERATIONS;
-      printf(" Generate a Vector object:\t\t%11.2f\n", mi);
-
-
-     mittel = 0;
-      for(i = 0; i < ITERATIONS; ++i)
-	{
-	  rdtscl(ini);
-	  
-	  Quaternion* q = new Quaternion();
-	  
-	  rdtscl(end);
-	  delete q;
-	  mittel += (end - ini - dt);
-	}
-      mi = mittel / (float)ITERATIONS;
-      printf(" Generate a Quaternion object:\t\t%11.2f\n", mi);
-
-
-
-
-      printf("\nCalling function inline &| virtual, \t\t\t%i\n", ITERATIONS);
-      mittel = 0;
-      w = new WorldEntity();
-      for(i = 0; i < ITERATIONS; ++i)
-	{
-	  rdtscl(ini);
-	  
-	  w->tick(0.0f);
-
-	  rdtscl(end);
-	  mittel += (end - ini - dt);
-	  }
-      //delete w;
-      mi = mittel / (float)ITERATIONS;
-      printf(" Virt funct tick() of WE: \t\t%11.2f\n", mi);
-
-
-      mittel = 0;
-      WorldEntity wo;
-      for(i = 0; i < ITERATIONS; ++i)
-	{
-	  rdtscl(ini);
-	  
-	  wo.tick(0.0f);
-	   
-	  rdtscl(end);
-	  mittel += (end - ini - dt);
-	  }
-      //delete w;
-      mi = mittel / (float)ITERATIONS;
-      printf(" Inl virt funct tick() of WE v2: \t%11.2f\n", mi);
-
-      
-      mittel = 0;
-      BaseObject* bo = new BaseObject();
-      for(i = 0; i < ITERATIONS; ++i)
-	{
-	  rdtscl(ini);
-	  
-	  bo->isFinalized();
-	   
-	  rdtscl(end);
-	  mittel += (end - ini - dt);
-	  }
-      //delete w;
-      mi = mittel / (float)ITERATIONS;
-      printf(" Inl funct BaseObject::isFinazlized(): \t%11.2f\n", mi);
-
-      
-      tList<WorldEntity>* list = new tList<WorldEntity>();
-
-      
-      /* ************Primitvie class test************** */
-      list = new tList<WorldEntity>();
- 
-      
-      /*
-	mittel = 0;
-	w = new Primitive(P_SPHERE);
-	for(i = 0; i < ITERATIONS; ++i)
-	{
-	rdtscl(ini);
-	
-	w->tick(0.0f);
-	
-	rdtscl(end);
-	mittel += (end - ini - dt);
-	}
-	mi = mittel / (float)ITERATIONS;
-	printf(" Call function tick() of Prim:\t\t%11.2f\n", mi);
-      */
-      
-    }
-  
-  if(type == 1 || type == -1)
-    {
-      printf("\nDoing some simple vector operations: \t\t\t%i\n", VECTOR_MAX);
-      /* vector test */
-      Vector* a = new Vector(1.3, 5.3, 4.1);
-      Vector* b = new Vector(0.4, 2.5, 6.2);
-      Vector* c = new Vector();
-      
-      unsigned long mittel, ini, end;
-      float mi;
-      int i = 0;
-      // addition
-      mittel = 0;
-      for(i = 0; i < VECTOR_MAX; ++i)
-	{
-	  rdtscl(ini);
-	  
-	  *c = *a + *b;
-	   
-	  rdtscl(end);
-	  mittel += (end - ini - dt);
-	}
-      mi = mittel / (float)VECTOR_MAX;
-      printf(" Addition of two vectors:\t\t%11.2f\n", mi);
-      
-      // multiplikation
-
-      mittel = 0;
-      for(i = 0; i < VECTOR_MAX; ++i)
-	{
-	  rdtscl(ini);
-	  
-	  *c = a->cross( *b);
-	   
-	  rdtscl(end);
-	  mittel += (end - ini - dt);
-	}
-      mi = mittel / (float)VECTOR_MAX;
-      printf(" CrossMult of two vectors:\t\t%11.2f\n", mi);
-
-    }
-  if( type == 2 || type == -1)
-    {
-      /* quaternion test */
-      printf("\nDoing some simple quaternion operations: \t\t%i\n", VECTOR_MAX);
-      /* vector test */
-      Quaternion* a = new Quaternion();
-      Quaternion* b = new Quaternion();
-      Quaternion* c = new Quaternion();
-      
-      unsigned long mittel, ini, end;
-      float mi;
-      int i = 0;
-      // quaternion generieren mit spez konstruktor
-      mittel = 0;
-      Vector* qa = new Vector(4.6, 9.3, 0.4);
-      Vector* qb = new Vector(3.5, 6.1, 4.3);
-      for(i = 0; i < VECTOR_MAX; ++i)
-	{
-	  rdtscl(ini);
-	  
-	  Quaternion* qu = new Quaternion(*qa, *qb);
-	  
-	  rdtscl(end);
-	  delete qu;
-	  mittel += (end - ini - dt);
-	}
-      delete a;
-      delete b;
-      mi = mittel / (float)VECTOR_MAX;
-      printf(" Gen. quatern. betw. two vectors:\t%11.2f\n", mi);
-      
-      
-      // multiplication
-      mittel = 0;
-      for(i = 0; i < VECTOR_MAX; ++i)
-	{
-	  rdtscl(ini);
-	  
-	  *c = *a * *b;
-	  
-	  rdtscl(end);
-	  mittel += (end - ini - dt);
-	}
-      mi = mittel / (float)VECTOR_MAX;
-      printf(" Multiplying two quat.(=rot): a * b\t%11.2f\n", mi);
-      
-      
-      
-      // rotating a vector by a quaternion
-      mittel = 0;
-      for(i = 0; i < VECTOR_MAX; ++i)
-	{
-	  rdtscl(ini);
-	  
-	  *qa = a->apply(*qb);
-	  
-	  rdtscl(end);
-	  mittel += (end - ini - dt);
-	}
-      mi = mittel / (float)VECTOR_MAX;
-      printf(" Rot a vec by a quat: q->apply(v)\t%11.2f\n", mi);
-      
-      
-      
-      // generate rotation matrix
-      mittel = 0;
-      float matrix[4][4];
-      for(i = 0; i < VECTOR_MAX; ++i)
-	{
-	  rdtscl(ini);
-	  
-	  a->matrix(matrix);
-	  
-	  rdtscl(end);
-	  mittel += (end - ini - dt);
-	}
-      mi = mittel / (float)VECTOR_MAX;
-      printf(" Generate rot matrix: q->matrix(m)\t%11.2f\n", mi);
-    }
-  if( type == 3 || type == -1)
-    {
-      /* list tests*/
-      printf("\nList operations tests: \t\t\t\t\t%i\n", LIST_MAX);
-      tList<char>* list = new tList<char>();
-      char* name;
-      
-      printf(" Adding[1..10] elements to list, found:\n");
-      list->add("1");
-      list->add("2");
-      list->add("3");
-      list->add("4");
-      list->add("5");
-      list->add("6");
-      list->add("7");
-      list->add("8");
-      list->add("9");
-      list->add("10");
-      
-      /*give list out */
-      tIterator<char>* iterator = list->getIterator();
-      name = iterator->nextElement();
-      printf("  List Elements: \t\t");
-      while( name != NULL)
-	{
-	  printf("%s,", name);
-	  name = iterator->nextElement();
-	}
-      delete iterator;
-      printf("\n");
-      
-      
-      /*removing some elements from the list*/
-      printf(" Removing elements [2,3,6,8,10], adding [11] now found:\n");
-      list->remove("2");
-      list->remove("3");
-      list->remove("6");
-      list->remove("8");
-      list->remove("10");
-      list->add("11");
-      /*give list out */
-      iterator = list->getIterator();
-      name = iterator->nextElement();
-      printf("  List Elements: \t\t");
-      while( name != NULL)
-	{
-	  printf("%s,", name);
-	  name = iterator->nextElement();
-	}
-      delete iterator;
-      printf("\n");
-      
-      delete list;
-      printf("\nChecking list performance:\t\t\t\t%i\n", LIST_MAX);
-      
-      tList<int>* plist = new tList<int>();
-      unsigned long mittel, ini, end;
-      float mi;
-      int i = 0;
-      mittel = 0;
-      for(i = 0; i < LIST_MAX; ++i)
-	{
-	  rdtscl(ini);
-	  
-	  plist->add(&i);
-	  
-	  rdtscl(end);
-	  mittel += (end - ini - dt);
-	}
-      mi = mittel / (float)LIST_MAX;
-      printf(" Adding reference to list:\t\t%11.2f\n", mi);
-      
-      mittel = 0;
-      for(i = 0; i < LIST_MAX; ++i)
-	{
-	  rdtscl(ini);
-	  
-	  plist->remove(&i);
-	  
-	  rdtscl(end);
-	  mittel += (end - ini - dt);
-	}
-      mi = mittel / (float)LIST_MAX;
-      printf(" Removing 1st reference from list:\t%11.2f\n", mi);
-      
-
-      printf("\nList operations tests: \t\t\t\t\t%i\n", LIST_MAX);
-      list = new tList<char>();
-      printf(" Adding[1..10] elements to list, found:\n");
-      list->add("1");
-      list->add("2");
-      list->add("3");
-      list->add("4");
-      list->add("5");
-      list->add("6");
-      list->add("7");
-      list->add("8");
-      list->add("9");
-      list->add("10");
-      
-      /*give list out */
-      iterator = list->getIterator();
-      name = iterator->nextElement();
-      printf("  List Elements: \t\t");
-      while( name != NULL)
-	{
-	  printf("%s,", name);
-	  name = iterator->nextElement();
-	}
-      delete iterator;
-      printf("\n");
-      
-      
-      int c = 0;
-      printf(" Going trough list with nextElement(el) func: ");
-      name = list->firstElement();
-      while(c < 20)
-	{
-	  printf("%s,", name);
-	  name = list->nextElement(name);
-	  c++;
-	}
-      printf("\n");
-      
-
-      
-    }
-  
-}
-
-#else
-
-int startBenchmarks()
-{
-  PRINTF(1)("Benchmark is not implemented in this system\n");
-}
-
-#endif
+  ResourceManager::deleteFile("~/.orxonox/orxonox.lock");
+  
+}
Index: xonox/branches/movie_player/src/orxonox.conf
===================================================================
--- /orxonox/branches/movie_player/src/orxonox.conf	(revision 4216)
+++ 	(revision )
@@ -1,20 +1,0 @@
-[Bindings]
-UP=up
-DOWN=down
-LEFT=left
-RIGHT=right
-SPACE=fire
-m=mode
-ESCAPE=quit
-p=pause
-q=quit
-BUTTON_LEFT=fire
-BUTTON_RIGHT=altfire
-x=up_world
-z=down_world
-1=view0
-2=view1
-3=view2
-4=view3
-5=view4
-6=view5
Index: /orxonox/branches/movie_player/src/orxonox.h
===================================================================
--- /orxonox/branches/movie_player/src/orxonox.h	(revision 4216)
+++ /orxonox/branches/movie_player/src/orxonox.h	(revision 4217)
@@ -39,14 +39,10 @@
   Uint32 lastframe;           //!< Time of the last Frame
   
+  unsigned int argc;          //!< Count of Arguments of orxonox
+  char** argv;                //!< Values of th Arguments of orxonox.
+  
   void getConfigFile (int argc, char** argv);
   
-  // main loop functions
-  //  void synchronize ();
-  //void handle_input ();
-  //void time_slice ();
-  //void collision ();
-  //void display ();
-  
-  	// subsystem initialization
+  // subsystem initialization
   int initVideo ();
   int initSound ();
@@ -75,7 +71,6 @@
 };
 
-int startHelp(void);
+int startHelp(int argc, char** argv);
 int startOrxonox(int argc, char** argv);
-int startBenchmarks(void);
 
 #endif /* _ORXONOX_H */
Index: /orxonox/branches/movie_player/src/story_entities/campaign.cc
===================================================================
--- /orxonox/branches/movie_player/src/story_entities/campaign.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/story_entities/campaign.cc	(revision 4217)
@@ -41,5 +41,5 @@
   int id;
   
-  PRINTF0("Loading Campaign...\n");
+  PRINTF(3)("Loading Campaign...\n");
   
   assert( root != NULL);
@@ -53,5 +53,5 @@
   if( string == NULL || sscanf(string, "%d", &id) != 1)
     {
-      PRINTF0("Campaign is missing a proper 'identifier'\n");
+      PRINTF(2)("Campaign is missing a proper 'identifier'\n");
       this->setStoryID( -1);
     }
@@ -62,5 +62,5 @@
   if( element == NULL)
     {
-      PRINTF0("Campaign is missing a proper 'WorldList'\n");
+      PRINTF(2)("Campaign is missing a proper 'WorldList'\n");
     }
   else
Index: /orxonox/branches/movie_player/src/story_entities/world.cc
===================================================================
--- /orxonox/branches/movie_player/src/story_entities/world.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/story_entities/world.cc	(revision 4217)
@@ -40,4 +40,5 @@
 #include "garbage_collector.h"
 #include "animation_player.h"
+#include "particle_engine.h"
 
 #include "command_node.h"
@@ -121,5 +122,5 @@
 {
   this->constuctorInit("", -1);
-
+  this->path = NULL;
   const char *string;
   char *name;
@@ -169,4 +170,5 @@
 World::World (char* name)
 {
+  this->path = NULL;
   this->constuctorInit(name, -1);
   //NullParent* np = NullParent::getInstance();
@@ -179,4 +181,5 @@
 World::World (int worldID)
 {
+  this->path = NULL;
   this->constuctorInit(NULL, worldID);
 }
@@ -195,8 +198,4 @@
   cn->reset();
 
-  ResourceManager::getInstance()->debug();
-  ResourceManager::getInstance()->unloadAllByPriority(RP_LEVEL);
-  ResourceManager::getInstance()->debug();
-
   delete WorldInterface::getInstance();
 
@@ -205,12 +204,12 @@
   delete this->lightMan;
   delete this->trackManager;
+  delete this->particleEngine;
   TextEngine::getInstance()->flush();
 
-  AnimationPlayer::getInstance()->debug();
   delete AnimationPlayer::getInstance(); // this should be at the end of the unloading sequence.
   //delete garbagecollecor
   //delete animator
 
-
+  ResourceManager::getInstance()->unloadAllByPriority(RP_LEVEL);
 }
 
@@ -249,4 +248,5 @@
   this->garbageCollector = GarbageCollector::getInstance();
 
+  this->particleEngine = ParticleEngine::getInstance();
   this->trackManager = TrackManager::getInstance();
   this->lightMan = LightManager::getInstance();
@@ -256,4 +256,6 @@
   AnimationPlayer::getInstance(); // initializes the animationPlayer
 
+  this->localCamera = new Camera();
+  this->localCamera->setName ("camera");
 }
 
@@ -264,11 +266,11 @@
 ErrorMessage World::load()
 {	
-  PRINTF0("> Loading world: '%s'\n", getPath());
-  
+  PRINTF(3)("> Loading world: '%s'\n", getPath());
+  TiXmlElement* element;
   GameLoader* loader = GameLoader::getInstance();
   
   if( getPath() == NULL)
     {
-      PRINTF0("World has no path specified for loading");
+      PRINTF(1)("World has no path specified for loading");
       return (ErrorMessage){213,"Path not specified","World::load()"};
     }
@@ -276,10 +278,8 @@
   TiXmlDocument* XMLDoc = new TiXmlDocument( path);
   // load the campaign document
-  if( !XMLDoc->LoadFile())
-    //this->glmis->step();
-  
+  if( !XMLDoc->LoadFile())  
   {
     // report an error
-    PRINTF0("Error loading XML File: %s @ %d:%d\n", XMLDoc->ErrorDesc(), XMLDoc->ErrorRow(), XMLDoc->ErrorCol());
+    PRINTF(1)("loading XML File: %s @ %d:%d\n", XMLDoc->ErrorDesc(), XMLDoc->ErrorRow(), XMLDoc->ErrorCol());
     delete XMLDoc;
     return (ErrorMessage){213,"XML File parsing error","World::load()"};
@@ -293,5 +293,5 @@
     {
       // report an error
-      PRINTF0("Specified XML File is not an orxonox world data file (WorldDataFile element missing)\n");
+      PRINTF(1)("Specified XML File is not an orxonox world data file (WorldDataFile element missing)\n");
       delete XMLDoc;
       return (ErrorMessage){213,"Path not a WorldDataFile","World::load()"};
@@ -304,5 +304,5 @@
   if( string == NULL)
     {
-      PRINTF0("World is missing a proper 'name'\n");
+      PRINTF(2)("World is missing a proper 'name'\n");
       string = "Unknown";
       temp = new char[strlen(string + 2)];
@@ -316,12 +316,28 @@
       this->worldName = temp;
     }
-  
-  
+  ////////////////
+  // LOADSCREEN //
+  ////////////////
+  element = root->FirstChildElement("LoadScreen");
+  if (element == NULL)
+    {
+      PRINTF(2)("no LoadScreen specified, loading default\n");
+
+      glmis->setBackgroundImage("pictures/load_screen.jpg");
+      this->glmis->setMaximum(8);
+      this->glmis->draw();
+    }
+  else
+    {
+      this->glmis->load(element);
+      this->glmis->draw();
+    }
+  this->glmis->draw();
   // find WorldEntities
-  TiXmlElement* element = root->FirstChildElement( "WorldEntities");
+  element = root->FirstChildElement("WorldEntities");
   
   if( element == NULL)
     {
-      PRINTF0("World is missing 'WorldEntities'\n");
+      PRINTF(1)("World is missing 'WorldEntities'\n");
     }
   else
@@ -329,5 +345,5 @@
       element = element->FirstChildElement();
       // load Players/Objects/Whatever
-      PRINTF0("Loading WorldEntities\n");
+      PRINTF(4)("Loading WorldEntities\n");
       while( element != NULL)
 	{
@@ -337,8 +353,9 @@
 	  //todo do this more elegant 
 	  if( element->Value() != NULL && !strcmp( element->Value(), "Player")) localPlayer = (Player*) created;
-	  if( element->Value() != NULL && !strcmp( element->Value(), "SkyBox")) skyBox = (SkyBox*) created;
+	  if( element->Value() != NULL && !strcmp( element->Value(), "SkyBox")) sky = (SkyBox*) created;
 	  element = element->NextSiblingElement();
+	  glmis->step(); //! \todo temporary
 	}
-      PRINTF0("Done loading WorldEntities\n");
+      PRINTF(4)("Done loading WorldEntities\n");
     }
   
@@ -360,21 +377,7 @@
   
   // free the XML data
+
   delete XMLDoc;
-  
-  // finalize world
-  // initialize Font
-//  testFont = new FontSet();
-//  testFont->buildFont("../data/pictures/font.tga");
-  
-  // create null parent
-  this->nullParent = NullParent::getInstance ();
-  this->nullParent->setName ("NullParent");
-  
-  // finalize myPlayer
-  if( localPlayer == NULL)
-    {
-      PRINTF0("No Player specified in World '%s'\n", this->worldName);
-      return (ErrorMessage){213,"No Player defined","World::load()"};
-    }
+  /* GENERIC LOADING PROCESS FINISHED */
   
   // bind input
@@ -383,6 +386,4 @@
   
   // bind camera
-  this->localCamera = new Camera();
-  this->localCamera->setName ("camera");
   //this->localCamera->bind (localPlayer);
   this->localPlayer->addChild (this->localCamera);
@@ -450,6 +451,4 @@
 
       
-  // LIGHT initialisation
-  lightMan = LightManager::getInstance();
   lightMan->setAmbientColor(.1,.1,.1);
   lightMan->addLight();
@@ -469,8 +468,10 @@
   tn->addChild(this->localCamera);
   localCamera->lookAt(tn);
+  localCamera->setMode(PNODE_MOVEMENT);
   this->localPlayer->setMode(PNODE_ALL);
   Vector* cameraOffset = new Vector (0, 5, -10);
   trackManager->condition(2, LEFTRIGHT, this->localPlayer);
   
+  this->sky->setParent(this->localCamera);
 
   // initialize debug coord system
@@ -482,8 +483,18 @@
   glEndList();
 
-  terrain = new Terrain("../data/worlds/newGround.obj");
+  terrain = new Terrain("worlds/newGround.obj");
   terrain->setRelCoor(Vector(0,-10,0));
   this->spawn(terrain);
 
+
+  ParticleSystem* system = new ParticleSystem(1000, PARTICLE_SPRITE);
+  system->setLifeSpan(.5);
+  system->setConserve(.99);
+  system->setRadius(2, 0, 2, 0);
+
+  ParticleEmitter* emitter = new ParticleEmitter(Vector(-1, 0, 0), M_PI_4, 100, .05);
+  emitter->setParent(this->localPlayer);
+  
+  particleEngine->addConnection(emitter, system);
 }
 
@@ -541,13 +552,8 @@
 	this->glmis->step();
 
-	// Create SkySphere
-	//	    this->skySphere = new Skysphere("../data/pictures/sky-replace.jpg");
-	//	    this->skySphere->setName("SkySphere");
-	//	    this->localCamera->addChild(this->skySphere);
-	//	    this->spawn(this->skySphere);
-	skyBox = new SkyBox();
-	skyBox->setTexture("pictures/sky/skybox", "jpg");
-	skyBox->setParent(localCamera);
-	this->spawn(skyBox);
+	sky = new SkyBox();
+	//	(SkyBox*)(sky)->setTexture("pictures/sky/skybox", "jpg");
+	sky->setParent(localCamera);
+	this->spawn(sky);
 
 	/*monitor progress*/
@@ -610,7 +616,7 @@
 
 	// Create SkySphere
-	skySphere = new Skysphere("../data/pictures/sky-replace.jpg");
-	this->localPlayer->addChild(this->skySphere);
-	this->spawn(this->skySphere);
+	sky = new Skysphere("pictures/sky-replace.jpg");
+	this->localPlayer->addChild(this->sky);
+	this->spawn(this->sky);
 	Vector* es = new Vector (20, 0, 0);
 	Quaternion* qs = new Quaternion ();
@@ -655,9 +661,9 @@
 
 	// Create SkySphere
-	this->skySphere = new Skysphere("../data/pictures/sky-replace.jpg");
-	this->skySphere->setName("SkySphere");
-	this->spawn(this->skySphere);
-	this->localCamera->addChild(this->skySphere);
-	this->skySphere->setMode(PNODE_MOVEMENT);
+	this->sky = new Skysphere("pictures/sky-replace.jpg");
+	this->sky->setName("SkySphere");
+	this->spawn(this->sky);
+	this->localCamera->addChild(this->sky);
+	this->sky->setMode(PNODE_MOVEMENT);
 	/*monitor progress*/
 	this->glmis->step();
@@ -844,8 +850,8 @@
   
   //GLMenuImageScreen* 
-  this->glmis = GLMenuImageScreen::getInstance();
+  this->glmis = new GLMenuImageScreen();
   this->glmis->init();
   this->glmis->setMaximum(8);
-  this->glmis->draw();
+  //  this->glmis->draw();
  
   PRINTF(3)("World::displayLoadScreen - end\n"); 
@@ -861,6 +867,6 @@
   PRINTF(3)("World::releaseLoadScreen - start\n"); 
   this->glmis->setValue(this->glmis->getMaximum());
-  //SDL_Delay(500);
   PRINTF(3)("World::releaseLoadScreen - end\n"); 
+  delete this->glmis;
 }
 
@@ -952,4 +958,6 @@
 
   TextEngine::getInstance()->draw();
+  particleEngine->draw(this->dtS); //!< \todo should be dts like in the Trunk;
+
   lightMan->draw(); // must be at the end of the drawing procedure, otherwise Light cannot be handled as PNodes //
 }
@@ -1119,6 +1127,6 @@
       
       /* function to let all entities tick (iterate through list) */
-      float seconds = this->dt / 1000.0;      
-      this->gameTime += seconds;
+      this->dtS = (float)this->dt / 1000.0;      
+      this->gameTime += this->dtS;
       //entity = entities->enumerate(); 
       tIterator<WorldEntity>* iterator = this->entities->getIterator();
@@ -1126,5 +1134,5 @@
       while( entity != NULL) 
 	{ 
-	  entity->tick (seconds);
+	  entity->tick (this->dtS);
 	  entity = iterator->nextElement();
 	}
@@ -1134,7 +1142,8 @@
       this->trackManager->tick(this->dt);
       this->localCamera->tick(this->dt);
-      this->garbageCollector->tick(seconds);
-
-      AnimationPlayer::getInstance()->tick(seconds);
+      this->garbageCollector->tick(this->dtS);
+
+      AnimationPlayer::getInstance()->tick(this->dtS);
+      particleEngine->tick(this->dtS);
     }
   this->lastFrame = currentFrame;
@@ -1151,5 +1160,5 @@
 {
   this->garbageCollector->update();
-  this->nullParent->update (dt);
+  this->nullParent->update (this->dtS);
 }
 
@@ -1239,10 +1248,10 @@
 bool World::command(Command* cmd)
 {
-  if( !strcmp( cmd->cmd, "view0")) this->localCamera->setViewMode(VIEW_NORMAL);
-  else if( !strcmp( cmd->cmd, "view1")) this->localCamera->setViewMode(VIEW_BEHIND);
-  else if( !strcmp( cmd->cmd, "view2")) this->localCamera->setViewMode(VIEW_FRONT);
-  else if( !strcmp( cmd->cmd, "view3")) this->localCamera->setViewMode(VIEW_LEFT);
-  else if( !strcmp( cmd->cmd, "view4")) this->localCamera->setViewMode(VIEW_RIGHT);
-  else if( !strcmp( cmd->cmd, "view5")) this->localCamera->setViewMode(VIEW_TOP);
+  if( !strcmp( cmd->cmd, CONFIG_NAME_VIEW0)) this->localCamera->setViewMode(VIEW_NORMAL);
+  else if( !strcmp( cmd->cmd, CONFIG_NAME_VIEW1)) this->localCamera->setViewMode(VIEW_BEHIND);
+  else if( !strcmp( cmd->cmd, CONFIG_NAME_VIEW2)) this->localCamera->setViewMode(VIEW_FRONT);
+  else if( !strcmp( cmd->cmd, CONFIG_NAME_VIEW3)) this->localCamera->setViewMode(VIEW_LEFT);
+  else if( !strcmp( cmd->cmd, CONFIG_NAME_VIEW4)) this->localCamera->setViewMode(VIEW_RIGHT);
+  else if( !strcmp( cmd->cmd, CONFIG_NAME_VIEW5)) this->localCamera->setViewMode(VIEW_TOP);
 
   return false;
@@ -1251,6 +1260,16 @@
 void World::setPath( const char* name)
 {
-  this->path = new char[strlen(name)+1];
-  strcpy(this->path, name);
+  if (this->path)
+    delete this->path;
+  if (ResourceManager::isFile(name))
+  {
+    this->path = new char[strlen(name)+1];
+    strcpy(this->path, name);
+  }
+  else
+    {
+      this->path = new char[strlen(ResourceManager::getInstance()->getDataDir()) + strlen(name) +1];
+      sprintf(this->path, "%s%s", ResourceManager::getInstance()->getDataDir(), name);
+    }
 }
 
Index: /orxonox/branches/movie_player/src/story_entities/world.h
===================================================================
--- /orxonox/branches/movie_player/src/story_entities/world.h	(revision 4216)
+++ /orxonox/branches/movie_player/src/story_entities/world.h	(revision 4217)
@@ -19,7 +19,6 @@
 class PNode;
 class GLMenuImageScreen;
-class Skysphere;
-class SkyBox;
 class LightManager;
+class ParticleEngine;
 class Terrain;
 class GarbageCollector;
@@ -96,4 +95,5 @@
   Uint32 lastFrame;                   //!< last time of frame
   Uint32 dt;                          //!< time needed to calculate this frame
+  float dtS;                          //!< The time needed for caluculations in seconds
   double gameTime;                    //!< this is where the game time is saved
   bool bQuitOrxonox;                  //!< quit this application
@@ -109,7 +109,7 @@
   PNode* nullParent;                  //!< The zero-point, that everything has as its parent.
   TrackManager* trackManager;         //!< The reference of the TrackManager that handles the course through the Level.
+  ParticleEngine* particleEngine;     //!< The ParticleEngine of the World.
   Camera* localCamera;                //!< The current Camera
-  Skysphere* skySphere;               //!< The Environmental Heaven of orxonox \todo insert this to environment insted
-  SkyBox* skyBox;
+  WorldEntity* sky;                   //!< The Environmental Heaven of orxonox \todo insert this to environment insted
   LightManager* lightMan;             //!< The Lights of the Level
   Terrain* terrain;                   //!< The Terrain of the World.
Index: /orxonox/branches/movie_player/src/subprojects/Makefile.in
===================================================================
--- /orxonox/branches/movie_player/src/subprojects/Makefile.in	(revision 4216)
+++ /orxonox/branches/movie_player/src/subprojects/Makefile.in	(revision 4217)
@@ -89,12 +89,8 @@
 EXEEXT = @EXEEXT@
 GPROF = @GPROF@
-GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
-GTHREAD_LIBS = @GTHREAD_LIBS@
 GTK2_CFLAGS = @GTK2_CFLAGS@
 GTK2_LIBS = @GTK2_LIBS@
 HAVE_CURL_FALSE = @HAVE_CURL_FALSE@
 HAVE_CURL_TRUE = @HAVE_CURL_TRUE@
-HAVE_GTHREAD_FALSE = @HAVE_GTHREAD_FALSE@
-HAVE_GTHREAD_TRUE = @HAVE_GTHREAD_TRUE@
 HAVE_GTK2_FALSE = @HAVE_GTK2_FALSE@
 HAVE_GTK2_TRUE = @HAVE_GTK2_TRUE@
@@ -117,4 +113,6 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+RANLIB = @RANLIB@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -125,4 +123,5 @@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
Index: /orxonox/branches/movie_player/src/subprojects/benchmark.cc
===================================================================
--- /orxonox/branches/movie_player/src/subprojects/benchmark.cc	(revision 4217)
+++ /orxonox/branches/movie_player/src/subprojects/benchmark.cc	(revision 4217)
@@ -0,0 +1,472 @@
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+
+   ### File Specific:
+   main-programmer: Patrick Boenzli
+   co-programmer: ...
+
+*/
+
+
+#if defined __linux__ 
+
+#include "list.h"
+#include "world_entity.h"
+#include "vector.h"
+#include "player.h"
+#include "base_object.h"
+
+#include <asm/msr.h>
+#include <linux/timex.h>
+
+
+#define LIST_MAX 1000
+#define VECTOR_MAX 1000000
+#define ITERATIONS 10000
+
+
+int startBenchmarks()
+{
+
+  printf("===========================================================\n");
+  printf("=                      BENCHMARKS                         =\n");
+  printf("===========================================================\n");
+  printf(" the author is not paying any attention to cacheing effects\n");
+  printf(" of the CPU.\n\n");
+  printf("[title]\t\t\t\t\t     [cycles]\t[loops]\n\n");
+  //  printf("------------------------------------------------------------\n\n");
+
+  // first measure the time overhead:
+  unsigned long ini, end, dt, tmp;
+  rdtscl(ini); rdtscl(end);
+  dt = end - ini;
+
+  int type = -1; 
+  /* type   -1 == all 
+     type    0 == framework
+     type    1 == vector
+     type    2 == quaternion
+     type    3 == lists
+  */
+  if(type == 0 || type == -1)
+    {
+      /* framework test*/
+      
+      printf("Generating Objects:\t\t\t\t\t%i\n", ITERATIONS);
+      /* ************WorldEntity class test************** */
+      WorldEntity* w = NULL;
+      int i = 0;
+      unsigned long mittel = 0;
+      
+      for(i = 0; i < ITERATIONS; ++i)
+	{
+	  rdtscl(ini);
+	  
+	  WorldEntity* w = new WorldEntity();
+	  
+	  rdtscl(end);
+	  delete w;
+	  mittel += (end - ini - dt);
+	}
+      float mi = mittel / (float)ITERATIONS;
+      printf(" Generate a WorldEntity object:\t\t%11.2f\n", mi);
+      
+      /*
+	mittel = 0;
+	for(i = 0; i < ITERATIONS; ++i)
+	{
+	rdtscl(ini);
+	
+	WorldEntity* w = new Primitive(P_SPHERE);
+	
+	rdtscl(end);
+	delete w;
+	mittel += (end - ini - dt);
+	}
+	mi = mittel / (float)ITERATIONS;
+	printf(" Generate a Primitive  object:\t\t%11.2f\n", mi);
+      */
+
+      mittel = 0;
+      for(i = 0; i < ITERATIONS; ++i)
+	{
+	  rdtscl(ini);
+	  
+	  Vector* v = new Vector();
+	  
+	  rdtscl(end);
+	  delete v;
+	  mittel += (end - ini - dt);
+	}
+      mi = mittel / (float)ITERATIONS;
+      printf(" Generate a Vector object:\t\t%11.2f\n", mi);
+
+
+     mittel = 0;
+      for(i = 0; i < ITERATIONS; ++i)
+	{
+	  rdtscl(ini);
+	  
+	  Quaternion* q = new Quaternion();
+	  
+	  rdtscl(end);
+	  delete q;
+	  mittel += (end - ini - dt);
+	}
+      mi = mittel / (float)ITERATIONS;
+      printf(" Generate a Quaternion object:\t\t%11.2f\n", mi);
+
+
+
+
+      printf("\nCalling function inline &| virtual, \t\t\t%i\n", ITERATIONS);
+      mittel = 0;
+      w = new WorldEntity();
+      for(i = 0; i < ITERATIONS; ++i)
+	{
+	  rdtscl(ini);
+	  
+	  w->tick(0.0f);
+
+	  rdtscl(end);
+	  mittel += (end - ini - dt);
+	  }
+      //delete w;
+      mi = mittel / (float)ITERATIONS;
+      printf(" Virt funct tick() of WE: \t\t%11.2f\n", mi);
+
+
+      mittel = 0;
+      WorldEntity wo;
+      for(i = 0; i < ITERATIONS; ++i)
+	{
+	  rdtscl(ini);
+	  
+	  wo.tick(0.0f);
+	   
+	  rdtscl(end);
+	  mittel += (end - ini - dt);
+	  }
+      //delete w;
+      mi = mittel / (float)ITERATIONS;
+      printf(" Inl virt funct tick() of WE v2: \t%11.2f\n", mi);
+
+      
+      mittel = 0;
+      BaseObject* bo = new BaseObject();
+      for(i = 0; i < ITERATIONS; ++i)
+	{
+	  rdtscl(ini);
+	  
+	  bo->isFinalized();
+	   
+	  rdtscl(end);
+	  mittel += (end - ini - dt);
+	  }
+      //delete w;
+      mi = mittel / (float)ITERATIONS;
+      printf(" Inl funct BaseObject::isFinazlized(): \t%11.2f\n", mi);
+
+      
+      tList<WorldEntity>* list = new tList<WorldEntity>();
+
+      
+      /* ************Primitvie class test************** */
+      list = new tList<WorldEntity>();
+ 
+      
+      /*
+	mittel = 0;
+	w = new Primitive(P_SPHERE);
+	for(i = 0; i < ITERATIONS; ++i)
+	{
+	rdtscl(ini);
+	
+	w->tick(0.0f);
+	
+	rdtscl(end);
+	mittel += (end - ini - dt);
+	}
+	mi = mittel / (float)ITERATIONS;
+	printf(" Call function tick() of Prim:\t\t%11.2f\n", mi);
+      */
+      
+    }
+  
+  if(type == 1 || type == -1)
+    {
+      printf("\nDoing some simple vector operations: \t\t\t%i\n", VECTOR_MAX);
+      /* vector test */
+      Vector* a = new Vector(1.3, 5.3, 4.1);
+      Vector* b = new Vector(0.4, 2.5, 6.2);
+      Vector* c = new Vector();
+      
+      unsigned long mittel, ini, end;
+      float mi;
+      int i = 0;
+      // addition
+      mittel = 0;
+      for(i = 0; i < VECTOR_MAX; ++i)
+	{
+	  rdtscl(ini);
+	  
+	  *c = *a + *b;
+	   
+	  rdtscl(end);
+	  mittel += (end - ini - dt);
+	}
+      mi = mittel / (float)VECTOR_MAX;
+      printf(" Addition of two vectors:\t\t%11.2f\n", mi);
+      
+      // multiplikation
+
+      mittel = 0;
+      for(i = 0; i < VECTOR_MAX; ++i)
+	{
+	  rdtscl(ini);
+	  
+	  *c = a->cross( *b);
+	   
+	  rdtscl(end);
+	  mittel += (end - ini - dt);
+	}
+      mi = mittel / (float)VECTOR_MAX;
+      printf(" CrossMult of two vectors:\t\t%11.2f\n", mi);
+
+    }
+  if( type == 2 || type == -1)
+    {
+      /* quaternion test */
+      printf("\nDoing some simple quaternion operations: \t\t%i\n", VECTOR_MAX);
+      /* vector test */
+      Quaternion* a = new Quaternion();
+      Quaternion* b = new Quaternion();
+      Quaternion* c = new Quaternion();
+      
+      unsigned long mittel, ini, end;
+      float mi;
+      int i = 0;
+      // quaternion generieren mit spez konstruktor
+      mittel = 0;
+      Vector* qa = new Vector(4.6, 9.3, 0.4);
+      Vector* qb = new Vector(3.5, 6.1, 4.3);
+      for(i = 0; i < VECTOR_MAX; ++i)
+	{
+	  rdtscl(ini);
+	  
+	  Quaternion* qu = new Quaternion(*qa, *qb);
+	  
+	  rdtscl(end);
+	  delete qu;
+	  mittel += (end - ini - dt);
+	}
+      delete a;
+      delete b;
+      mi = mittel / (float)VECTOR_MAX;
+      printf(" Gen. quatern. betw. two vectors:\t%11.2f\n", mi);
+      
+      
+      // multiplication
+      mittel = 0;
+      for(i = 0; i < VECTOR_MAX; ++i)
+	{
+	  rdtscl(ini);
+	  
+	  *c = *a * *b;
+	  
+	  rdtscl(end);
+	  mittel += (end - ini - dt);
+	}
+      mi = mittel / (float)VECTOR_MAX;
+      printf(" Multiplying two quat.(=rot): a * b\t%11.2f\n", mi);
+      
+      
+      
+      // rotating a vector by a quaternion
+      mittel = 0;
+      for(i = 0; i < VECTOR_MAX; ++i)
+	{
+	  rdtscl(ini);
+	  
+	  *qa = a->apply(*qb);
+	  
+	  rdtscl(end);
+	  mittel += (end - ini - dt);
+	}
+      mi = mittel / (float)VECTOR_MAX;
+      printf(" Rot a vec by a quat: q->apply(v)\t%11.2f\n", mi);
+      
+      
+      
+      // generate rotation matrix
+      mittel = 0;
+      float matrix[4][4];
+      for(i = 0; i < VECTOR_MAX; ++i)
+	{
+	  rdtscl(ini);
+	  
+	  a->matrix(matrix);
+	  
+	  rdtscl(end);
+	  mittel += (end - ini - dt);
+	}
+      mi = mittel / (float)VECTOR_MAX;
+      printf(" Generate rot matrix: q->matrix(m)\t%11.2f\n", mi);
+    }
+  if( type == 3 || type == -1)
+    {
+      /* list tests*/
+      printf("\nList operations tests: \t\t\t\t\t%i\n", LIST_MAX);
+      tList<char>* list = new tList<char>();
+      char* name;
+      
+      printf(" Adding[1..10] elements to list, found:\n");
+      list->add("1");
+      list->add("2");
+      list->add("3");
+      list->add("4");
+      list->add("5");
+      list->add("6");
+      list->add("7");
+      list->add("8");
+      list->add("9");
+      list->add("10");
+      
+      /*give list out */
+      tIterator<char>* iterator = list->getIterator();
+      name = iterator->nextElement();
+      printf("  List Elements: \t\t");
+      while( name != NULL)
+	{
+	  printf("%s,", name);
+	  name = iterator->nextElement();
+	}
+      delete iterator;
+      printf("\n");
+      
+      
+      /*removing some elements from the list*/
+      printf(" Removing elements [2,3,6,8,10], adding [11] now found:\n");
+      list->remove("2");
+      list->remove("3");
+      list->remove("6");
+      list->remove("8");
+      list->remove("10");
+      list->add("11");
+      /*give list out */
+      iterator = list->getIterator();
+      name = iterator->nextElement();
+      printf("  List Elements: \t\t");
+      while( name != NULL)
+	{
+	  printf("%s,", name);
+	  name = iterator->nextElement();
+	}
+      delete iterator;
+      printf("\n");
+      
+      delete list;
+      printf("\nChecking list performance:\t\t\t\t%i\n", LIST_MAX);
+      
+      tList<int>* plist = new tList<int>();
+      unsigned long mittel, ini, end;
+      float mi;
+      int i = 0;
+      mittel = 0;
+      for(i = 0; i < LIST_MAX; ++i)
+	{
+	  rdtscl(ini);
+	  
+	  plist->add(&i);
+	  
+	  rdtscl(end);
+	  mittel += (end - ini - dt);
+	}
+      mi = mittel / (float)LIST_MAX;
+      printf(" Adding reference to list:\t\t%11.2f\n", mi);
+      
+      mittel = 0;
+      for(i = 0; i < LIST_MAX; ++i)
+	{
+	  rdtscl(ini);
+	  
+	  plist->remove(&i);
+	  
+	  rdtscl(end);
+	  mittel += (end - ini - dt);
+	}
+      mi = mittel / (float)LIST_MAX;
+      printf(" Removing 1st reference from list:\t%11.2f\n", mi);
+      
+
+      printf("\nList operations tests: \t\t\t\t\t%i\n", LIST_MAX);
+      list = new tList<char>();
+      printf(" Adding[1..10] elements to list, found:\n");
+      list->add("1");
+      list->add("2");
+      list->add("3");
+      list->add("4");
+      list->add("5");
+      list->add("6");
+      list->add("7");
+      list->add("8");
+      list->add("9");
+      list->add("10");
+      
+      /*give list out */
+      iterator = list->getIterator();
+      name = iterator->nextElement();
+      printf("  List Elements: \t\t");
+      while( name != NULL)
+	{
+	  printf("%s,", name);
+	  name = iterator->nextElement();
+	}
+      delete iterator;
+      printf("\n");
+      
+      
+      int c = 0;
+      printf(" Going trough list with nextElement(el) func: ");
+      name = list->firstElement();
+      while(c < 20)
+	{
+	  printf("%s,", name);
+	  name = list->nextElement(name);
+	  c++;
+	}
+      printf("\n");
+      
+
+      
+    }
+  
+}
+
+#else
+
+#include "debug.h"
+
+int startBenchmarks()
+{
+  PRINTF(1)("Benchmark is not implemented in this system\n");
+}
+
+#endif
Index: /orxonox/branches/movie_player/src/subprojects/benchmark.h
===================================================================
--- /orxonox/branches/movie_player/src/subprojects/benchmark.h	(revision 4217)
+++ /orxonox/branches/movie_player/src/subprojects/benchmark.h	(revision 4217)
@@ -0,0 +1,13 @@
+/*! 
+    \file benchmark.h
+    \brief benchmark functions
+*/ 
+
+
+#ifndef _BENCHMARK_H
+#define _BENCHMARK_H
+
+int startBenchmarks(void);
+
+
+#endif /* _BENCHMARK_H */
Index: /orxonox/branches/movie_player/src/subprojects/testmain/Makefile.in
===================================================================
--- /orxonox/branches/movie_player/src/subprojects/testmain/Makefile.in	(revision 4216)
+++ /orxonox/branches/movie_player/src/subprojects/testmain/Makefile.in	(revision 4217)
@@ -104,12 +104,8 @@
 EXEEXT = @EXEEXT@
 GPROF = @GPROF@
-GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
-GTHREAD_LIBS = @GTHREAD_LIBS@
 GTK2_CFLAGS = @GTK2_CFLAGS@
 GTK2_LIBS = @GTK2_LIBS@
 HAVE_CURL_FALSE = @HAVE_CURL_FALSE@
 HAVE_CURL_TRUE = @HAVE_CURL_TRUE@
-HAVE_GTHREAD_FALSE = @HAVE_GTHREAD_FALSE@
-HAVE_GTHREAD_TRUE = @HAVE_GTHREAD_TRUE@
 HAVE_GTK2_FALSE = @HAVE_GTK2_FALSE@
 HAVE_GTK2_TRUE = @HAVE_GTK2_TRUE@
@@ -132,4 +128,6 @@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+RANLIB = @RANLIB@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -140,4 +138,5 @@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
+ac_ct_RANLIB = @ac_ct_RANLIB@
 ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
Index: /orxonox/branches/movie_player/src/track_manager.cc
===================================================================
--- /orxonox/branches/movie_player/src/track_manager.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/track_manager.cc	(revision 4217)
@@ -396,4 +396,17 @@
   this->textAnimation->setInfinity(ANIM_INF_CONSTANT);
 }
+
+
+/**
+   \brief loads a trackElement from a TiXmlElement
+   \param root the TiXmlElement to load the Data from
+
+*/
+bool TrackManager::load( TiXmlElement* root)
+{
+
+}
+
+
 
 /**
Index: /orxonox/branches/movie_player/src/track_manager.h
===================================================================
--- /orxonox/branches/movie_player/src/track_manager.h	(revision 4216)
+++ /orxonox/branches/movie_player/src/track_manager.h	(revision 4217)
@@ -153,4 +153,6 @@
   static TrackManager* getInstance(void);
 
+  bool load(TiXmlElement* root);
+
   // Methods to change the Path (initialisation)
   void workOn(unsigned int trackID);
Index: /orxonox/branches/movie_player/src/util/resource_manager.cc
===================================================================
--- /orxonox/branches/movie_player/src/util/resource_manager.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/util/resource_manager.cc	(revision 4217)
@@ -99,4 +99,24 @@
       return false;
     }
+}
+
+/**
+   \brief checks for the DataDirectory, by looking if 
+   \param fileInside is inisde??
+*/
+bool ResourceManager::checkDataDir(const char* fileInside)
+{
+  bool retVal;
+  if (!isDir(this->dataDir))
+    {
+      PRINTF(1)("%s is not a directory\n", this->dataDir);
+      return false;
+    }
+  
+  char* testFile = new char[strlen(this->dataDir)+strlen(fileInside)+1];
+  sprintf(testFile, "%s%s", this->dataDir, fileInside);
+  retVal = isFile(testFile);
+  delete testFile;
+  return retVal;
 }
 
@@ -182,5 +202,5 @@
   // searching if the resource was loaded before.
   Resource* tmpResource = this->locateResourceByInfo(fileName, type, param1, param2,param3);
-  if (tmpResource) // if the resource was not loaded before.
+  if (tmpResource) // if the resource was loaded before.
     {
       PRINTF(4)("not loading cached resource %s\n", tmpResource->name);
@@ -201,7 +221,6 @@
 
       // creating the full name. (directoryName + FileName)
-      char* fullName = new char[strlen(dataDir)+strlen(fileName)+1];
-      sprintf(fullName, "%s%s", this->dataDir, fileName);
-      
+      char* fullName = new char[strlen(this->getDataDir())+strlen(fileName)+1];
+      sprintf(fullName, "%s%s", this->getDataDir(), fileName);
       // Checking for the type of resource \see ResourceType
       switch(type)
@@ -213,5 +232,5 @@
 	    tmpResource->modelSize = 1.0;
 
-	  if(isFile(fullName))
+	  if(ResourceManager::isFile(fullName))
 	    tmpResource->pointer = new OBJModel(fullName, tmpResource->modelSize);
 	  else
@@ -510,19 +529,23 @@
     }
 
-  stat(tmpDirName, &status);
-  if (status.st_mode & (S_IFDIR
+  if(!stat(tmpDirName, &status))
+    {
+      if (status.st_mode & (S_IFDIR
 #ifndef __WIN32__
-			| S_IFLNK
+			    | S_IFLNK
 #endif
-			))
-    {
-      delete tmpDirName;
-      return true;
-    }
-  else
-    {
-      delete tmpDirName;
-      return false;
-    }
+			    ))
+	{
+	  delete tmpDirName;
+	  return true;
+	}
+      else
+	{
+	  delete tmpDirName;
+	  return false;
+	}
+    }
+  else
+    return false;
 }
 
@@ -534,15 +557,107 @@
 bool ResourceManager::isFile(const char* fileName)
 {
+  char* tmpFileName = ResourceManager::homeDirCheck(fileName);
+  // actually checks the File
   struct stat status;
-  stat(fileName, &status);
-  if (status.st_mode & (S_IFREG 
+  if (!stat(tmpFileName, &status))
+    {
+      if (status.st_mode & (S_IFREG 
 #ifndef __WIN32__
-			| S_IFLNK
+			    | S_IFLNK
 #endif
-			))
-    return true;
-  else
-    return false;
-}
+			    ))
+	{
+	  delete tmpFileName;
+	  return true;
+	}
+      else
+	{
+	  delete tmpFileName;
+	  return false;
+	}
+    }
+  else 
+    {
+      delete tmpFileName;
+      return false;
+    }
+}
+
+/**
+   \brief touches a File on the disk (thereby creating it)
+   \param fileName The file to touch
+*/
+bool ResourceManager::touchFile(const char* fileName)
+{
+  char* tmpName = ResourceManager::homeDirCheck(fileName);
+
+  FILE* stream;
+  if( (stream = fopen (tmpName, "w")) == NULL)
+    {
+      PRINTF(1)("could not open %s fro writing\n", fileName);
+      return false;
+    }
+  fclose(stream);
+    
+  delete tmpName; 
+}
+
+/**
+   \brief deletes a File from disk
+   \param fileName the File to delete
+*/
+bool ResourceManager::deleteFile(const char* fileName)
+{
+  char* tmpName = ResourceManager::homeDirCheck(fileName);
+  unlink(tmpName);
+  delete tmpName;
+}
+
+/** 
+    \param fileName the Name of the file to check
+    \returns The name of the file, including the HomeDir
+    IMPORTANT: this has to be deleted from the outside
+*/
+char* ResourceManager::homeDirCheck(const char* name)
+{
+  char* retName;
+  if (!strncmp(name, "~/", 2))
+    {
+      char tmpFileName[500];
+#ifdef __WIN32__
+      strcpy(tmpFileName, getenv("USERPROFILE"));
+#else
+      strcpy(tmpFileName, getenv("HOME"));
+#endif
+      retName = new char[strlen(tmpFileName)+strlen(name)];
+      sprintf(retName, "%s%s", tmpFileName, name+1);
+    }
+  else
+    {
+      retName = new char[strlen(name)+1];
+      strcpy(retName, name);
+    }
+  return retName;
+}
+
+/** 
+    \param fileName the Name of the File to check
+    \returns The full name of the file, including the DataDir, and NULL if the file does not exist
+    IMPORTANT: this has to be deleted from the outside
+*/
+char* ResourceManager::getFullName(const char* fileName)
+{
+  char* retName = new char[strlen(ResourceManager::getInstance()->getDataDir())
+			   + strlen(fileName) + 1];
+  sprintf(retName, "%s%s", ResourceManager::getInstance()->getDataDir(), fileName);
+  if (ResourceManager::isFile(retName))
+    return retName;
+  else
+    {
+      delete retName;
+      return NULL;
+    }
+}
+
 
 /**
Index: /orxonox/branches/movie_player/src/util/resource_manager.h
===================================================================
--- /orxonox/branches/movie_player/src/util/resource_manager.h	(revision 4216)
+++ /orxonox/branches/movie_player/src/util/resource_manager.h	(revision 4217)
@@ -18,5 +18,11 @@
 
 //! An eumerator for different fileTypes the resourceManager supports \todo WAV, MP3, OGG support
-enum ResourceType {OBJ, PRIM, WAV, MP3, OGG, TTF, IMAGE};
+enum ResourceType {OBJ,
+		   PRIM,
+		   WAV,
+		   MP3,
+		   OGG,
+		   TTF,
+		   IMAGE};
 //! An enumerator for different UNLOAD-types. 
 /**
@@ -26,5 +32,8 @@
    RP_GAME: will be unloaded at the end of the whole Game (when closing orxonox)
 */
-enum ResourcePriority {RP_NO = 0, RP_LEVEL = 1, RP_CAMPAIGN = 2, RP_GAME = 3};
+enum ResourcePriority {RP_NO = 0,
+		       RP_LEVEL = 1,
+		       RP_CAMPAIGN = 2,
+		       RP_GAME = 3};
 
 //! A Struct that keeps track about A resource its name its Type, and so on
@@ -65,4 +74,8 @@
 
   bool setDataDir(const char* dataDir);
+  /** \returns the Name of the data directory */
+  inline const char* getDataDir(void) const {return this->dataDir;}
+
+  bool checkDataDir(const char* fileInside);
   bool addImageDir(char* imageDir);
   void* load(const char* fileName, ResourcePriority prio = RP_NO,
@@ -78,5 +91,9 @@
   // utility functions of this class
   static bool isDir(const char* directory);
-  static bool isFile(const char* directory);
+  static bool isFile(const char* fileName);
+  static bool touchFile(const char* fileName);
+  static bool deleteFile(const char* fileName);
+  static char* homeDirCheck(const char* fileName);
+  static char* getFullName(const char* fileName);
 
  private:
Index: /orxonox/branches/movie_player/src/world_entities/environment.cc
===================================================================
--- /orxonox/branches/movie_player/src/world_entities/environment.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/world_entities/environment.cc	(revision 4217)
@@ -30,5 +30,4 @@
 {
   this->model = (Model*) ResourceManager::getInstance()->load("cube", RP_LEVEL);
-  //  this->model = new OBJModel("../data/models/fighter.obj");
 }
 
Index: /orxonox/branches/movie_player/src/world_entities/player.cc
===================================================================
--- /orxonox/branches/movie_player/src/world_entities/player.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/world_entities/player.cc	(revision 4217)
@@ -82,37 +82,4 @@
 Player::Player(TiXmlElement* root) : WorldEntity(root)
 {
-  /*
-    char* temp;
-    const char* string;
-    string = grabParameter( root, "name");
-    if( string == NULL)
-    {
-    PRINTF0("Player is missing a proper 'name'\n");
-    string = "Unknown";
-    temp = new char[strlen(string + 2)];
-    strcpy( temp, string);
-    this->setName( temp);
-    }
-    else
-    {
-    temp = new char[strlen(string + 2)];
-    strcpy( temp, string);
-    this->setName( temp);
-    }
-    
-    this->model = NULL;
-    string = grabParameter( root, "model");
-    if( string != NULL)
-    this->model = (Model*)ResourceManager::getInstance()->load(string, OBJ, RP_CAMPAIGN);
-    else
-    {
-    PRINTF0("Player is missing a proper 'model'\n");
-    this->model = (Model*)ResourceManager::getInstance()->load("models/reaplow.obj", OBJ, RP_CAMPAIGN);
-    }
-    if( this->model == NULL)
-    {
-    PRINTF0("Player model '%s' could not be loaded\n", string);
-    }
-  */
   this->weapons = new tList<Weapon>();
   this->activeWeapon = NULL;
@@ -294,9 +261,9 @@
 {
   PRINTF(3)("recieved command [%s]\n", cmd->cmd);
-  if( !strcmp( cmd->cmd, "up")) this->bUp = !cmd->bUp;
-  if( !strcmp( cmd->cmd, "down")) this->bDown = !cmd->bUp;
-  if( !strcmp( cmd->cmd, "left")) this->bLeft = !cmd->bUp;
-  if( !strcmp( cmd->cmd, "right")) this->bRight = !cmd->bUp;
-  if( !strcmp( cmd->cmd, "fire")) this->bFire = !cmd->bUp;
-  if( !strcmp( cmd->cmd, "mode")) if(cmd->bUp) this->bWeaponChange = !this->bWeaponChange;
-}
+  if( !strcmp( cmd->cmd, CONFIG_NAME_PLAYER_UP)) this->bUp = !cmd->bUp;
+  if( !strcmp( cmd->cmd, CONFIG_NAME_PLAYER_DOWN)) this->bDown = !cmd->bUp;
+  if( !strcmp( cmd->cmd, CONFIG_NAME_PLAYER_LEFT)) this->bLeft = !cmd->bUp;
+  if( !strcmp( cmd->cmd, CONFIG_NAME_PLAYER_RIGHT)) this->bRight = !cmd->bUp;
+  if( !strcmp( cmd->cmd, CONFIG_NAME_PLAYER_FIRE)) this->bFire = !cmd->bUp;
+  if( !strcmp( cmd->cmd, CONFIG_NAME_PLAYER_NEXT_WEAPON)) if(cmd->bUp) this->bWeaponChange = !this->bWeaponChange;
+}
Index: /orxonox/branches/movie_player/src/world_entities/skybox.cc
===================================================================
--- /orxonox/branches/movie_player/src/world_entities/skybox.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/world_entities/skybox.cc	(revision 4217)
@@ -66,5 +66,5 @@
       PRINTF(0)("SkyBox is missing a proper 'MaterialSet'\n");
     }
-  if( this->model == NULL)
+  if( this->skyModel == NULL)
     {
       PRINTF(0)("SkyBox model '%s' could not be loaded\n", string);
@@ -76,6 +76,7 @@
 {
   this->setClassName("SkyBox");
+  this->skyModel = NULL;
   this->material = new Material*[6];
-  for (int i = 0; i <6; i++) 
+  for (int i = 0; i < 6; i++) 
     {
       this->material[i] = new Material();
@@ -100,5 +101,5 @@
 SkyBox::~SkyBox()
 {
-  PRINTF(5)("Deleting the SkyBox\n");
+  PRINTF(5)("Deleting SkyBox\n");
   for (int i = 0; i < 6; i++)
     delete this->material[i];
@@ -179,5 +180,5 @@
   glTranslatef(r.x, r.y, r.z);
 
-  this->model->draw();
+  this->skyModel->draw();
 
   glPopMatrix();
@@ -192,42 +193,42 @@
 void SkyBox::rebuild()
 {
-  if (this->model)
-    delete model;
-  model = new Model();
-
-  model->addVertex (-0.5*size, -0.5*size, 0.5*size);  
-  model->addVertex (0.5*size, -0.5*size, 0.5*size);
-  model->addVertex (-0.5*size, 0.5*size, 0.5*size);
-  model->addVertex (0.5*size, 0.5*size, 0.5*size);
-  model->addVertex (-0.5*size, 0.5*size, -0.5*size);
-  model->addVertex (0.5*size, 0.5*size, -0.5*size);
-  model->addVertex (-0.5*size, -0.5*size, -0.5*size);
-  model->addVertex (0.5*size, -0.5*size, -0.5*size);
-
-  model->addVertexTexture (0.0, 0.0);
-  model->addVertexTexture (1.0, 0.0);
-  model->addVertexTexture (1.0, 1.0);
-  model->addVertexTexture (0.0, 1.0);
-
-  model->addVertexNormal (0.0, 0.0, 1.0);
-  model->addVertexNormal (0.0, 1.0, 0.0);
-  model->addVertexNormal (0.0, 0.0, -1.0);
-  model->addVertexNormal (0.0, -1.0, 0.0);
-  model->addVertexNormal (1.0, 0.0, 0.0);
-  model->addVertexNormal (-1.0, 0.0, 0.0);
-
-  model->setMaterial(material[0]);
-  model->addFace (4, VERTEX_TEXCOORD_NORMAL, 3,2,4, 4,3,4, 6,4,4, 5,1,4); // top
-  model->setMaterial(material[1]);
-  model->addFace (4, VERTEX_TEXCOORD_NORMAL, 7,4,2, 8,1,2, 2,2,2, 1,3,2); // bottom
-  model->setMaterial(material[2]);
-  model->addFace (4, VERTEX_TEXCOORD_NORMAL, 1,1,3, 2,2,3, 4,3,3, 3,4,3); // left
-  model->setMaterial(material[3]);
-  model->addFace (4, VERTEX_TEXCOORD_NORMAL, 5,3,1, 6,4,1, 8,1,1, 7,2,1); // right
-  model->setMaterial(material[4]);
-  model->addFace (4, VERTEX_TEXCOORD_NORMAL, 2,1,6, 8,2,6, 6,3,6, 4,4,6); // front
-  model->setMaterial(material[5]);
-  model->addFace (4, VERTEX_TEXCOORD_NORMAL, 7,1,5, 1,2,5, 3,3,5, 5,4,5); // back
+  if (this->skyModel)
+    delete skyModel;
+  skyModel = new Model();
+
+  this->skyModel->addVertex (-0.5*size, -0.5*size, 0.5*size);  
+  this->skyModel->addVertex (0.5*size, -0.5*size, 0.5*size);
+  this->skyModel->addVertex (-0.5*size, 0.5*size, 0.5*size);
+  this->skyModel->addVertex (0.5*size, 0.5*size, 0.5*size);
+  this->skyModel->addVertex (-0.5*size, 0.5*size, -0.5*size);
+  this->skyModel->addVertex (0.5*size, 0.5*size, -0.5*size);
+  this->skyModel->addVertex (-0.5*size, -0.5*size, -0.5*size);
+  this->skyModel->addVertex (0.5*size, -0.5*size, -0.5*size);
+
+  this->skyModel->addVertexTexture (0.0, 0.0);
+  this->skyModel->addVertexTexture (1.0, 0.0);
+  this->skyModel->addVertexTexture (1.0, 1.0);
+  this->skyModel->addVertexTexture (0.0, 1.0);
+
+  this->skyModel->addVertexNormal (0.0, 0.0, 1.0);
+  this->skyModel->addVertexNormal (0.0, 1.0, 0.0);
+  this->skyModel->addVertexNormal (0.0, 0.0, -1.0);
+  this->skyModel->addVertexNormal (0.0, -1.0, 0.0);
+  this->skyModel->addVertexNormal (1.0, 0.0, 0.0);
+  this->skyModel->addVertexNormal (-1.0, 0.0, 0.0);
+
+  this->skyModel->setMaterial(material[0]);
+  this->skyModel->addFace (4, VERTEX_TEXCOORD_NORMAL, 2,1,3, 3,2,3, 5,3,3, 4,0,3); // top
+  this->skyModel->setMaterial(material[1]);
+  this->skyModel->addFace (4, VERTEX_TEXCOORD_NORMAL, 6,3,1, 7,0,1, 1,1,1, 0,2,1); // bottom
+  this->skyModel->setMaterial(material[2]);
+  this->skyModel->addFace (4, VERTEX_TEXCOORD_NORMAL, 0,0,2, 1,1,2, 3,2,2, 2,3,2); // left
+  this->skyModel->setMaterial(material[3]);
+  this->skyModel->addFace (4, VERTEX_TEXCOORD_NORMAL, 4,2,0, 5,3,0, 7,0,0, 6,1,0); // right
+  this->skyModel->setMaterial(material[4]);
+  this->skyModel->addFace (4, VERTEX_TEXCOORD_NORMAL, 1,0,5, 7,1,5, 5,2,5, 3,3,6); // front
+  this->skyModel->setMaterial(material[5]);
+  this->skyModel->addFace (4, VERTEX_TEXCOORD_NORMAL, 6,0,4, 0,1,4, 2,2,4, 4,3,4); // back
   
-  model->finalize();
-}
+  this->skyModel->finalize();
+}
Index: /orxonox/branches/movie_player/src/world_entities/skybox.h
===================================================================
--- /orxonox/branches/movie_player/src/world_entities/skybox.h	(revision 4216)
+++ /orxonox/branches/movie_player/src/world_entities/skybox.h	(revision 4217)
@@ -39,4 +39,5 @@
   void rebuild();
 
+  Model* skyModel;        //!< A Model for the Sky. This must not be the same as the Model from WorldEntity, because it is not alocated through the ResourceManager.
   Material **material;    //!< Materials for the SkyBox. sorted by number (0-5) top, bottom, left, right, front, back
   float size;             //!< Size of the SkyBox. This should match the frustum maximum range.
Index: /orxonox/branches/movie_player/src/world_entities/skysphere.cc
===================================================================
--- /orxonox/branches/movie_player/src/world_entities/skysphere.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/world_entities/skysphere.cc	(revision 4217)
@@ -44,5 +44,5 @@
 {
   if (fileName == NULL)
-    this->initialize("../data/pictures/sky-replace.jpg");
+    this->initialize("pictures/sky-replace.jpg");
   else
     this->initialize(fileName);
Index: /orxonox/branches/movie_player/src/world_entities/terrain.cc
===================================================================
--- /orxonox/branches/movie_player/src/world_entities/terrain.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/world_entities/terrain.cc	(revision 4217)
@@ -77,7 +77,7 @@
 void Terrain::init(void)
 {
-   this->setClassName ("Terrain");
-
-   this->objectList = 0;
+  this->setClassName ("Terrain");
+  
+  this->objectList = 0;
 }
 
@@ -98,9 +98,8 @@
   glMultMatrixf((float*)matrix);
 
-  if (objectList)
-    glCallList(objectList);
-  else if (model)
-    model->draw();
-  //  this->model->draw();
+  if (this->objectList)
+    glCallList(this->objectList);
+  else if (this->model)
+    this->model->draw();
   glPopMatrix();
 }
Index: /orxonox/branches/movie_player/src/world_entities/world_entity.cc
===================================================================
--- /orxonox/branches/movie_player/src/world_entities/world_entity.cc	(revision 4216)
+++ /orxonox/branches/movie_player/src/world_entities/world_entity.cc	(revision 4217)
@@ -30,11 +30,4 @@
 /**
    \brief standard constructor
-   
-   Every derived contructor HAS to call the previous one supplying the isFree parameter. This is necessary to distunguish
-   between free and bound entities. The difference between them is simply the fact that the movement of a free entity is
-   not bound to the track of a world. Use this to implement projectile or effect classes that do not have to travel along the track.
-   To specify an entity to be free or bound set the default parameter in the declaration of the constructor.
-   Theoretically you should never have to call the constructor of an Entity directly, for it is called by the spawn() function of the World
-   class. So if you want to create a new entity at any time, call World::spawn(). It will handle everything that is necessary.
 */
 WorldEntity::WorldEntity ()
@@ -46,4 +39,7 @@
 }
 
+/**
+   \brief Loads the WordEntity-specific Part of any derived Class
+*/
 WorldEntity::WorldEntity(TiXmlElement* root)
 {
@@ -54,5 +50,5 @@
   if( string == NULL)
     {
-      PRINTF(0)("WorldEntity is missing a proper 'name'\n");
+      PRINTF(2)("WorldEntity is missing a proper 'name'\n");
       string = "Unknown";
       temp = new char[strlen(string + 2)];
@@ -73,12 +69,11 @@
   else
     {
-      PRINTF(0)("WorldEntity is missing a proper 'model'\n");
+      PRINTF(2)("WorldEntity is missing a proper 'model'\n");
       this->model = NULL;
     }
   if( this->model == NULL)
     {
-      PRINTF(0)("WorldEntity model '%s' could not be loaded\n", string);
-    }
-
+      PRINTF(2)("WorldEntity model '%s' could not be loaded\n", string);
+    }
   this->bDraw = true;
 }
