commit 69fb83dd74426cbd336b6800886ec106e864ce91 Author: schrom01 Date: Tue Nov 15 10:20:07 2022 +0100 initial commit diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..2430006 --- /dev/null +++ b/build.gradle @@ -0,0 +1,26 @@ +plugins { + id 'application' +} + +repositories { + mavenCentral() +} + +dependencies { + implementation 'org.junit.jupiter:junit-jupiter:5.9.0' + implementation 'org.junit.platform:junit-platform-engine:1.9.0' + implementation 'org.junit.platform:junit-platform-launcher:1.9.0' +} + +application { + mainClass = 'ch.zhaw.ads.ExBox' +} + +sourceSets { + main.java.srcDirs = ['src'] + test.java.srcDirs = ['src'] +} + +tasks.named('test') { + useJUnitPlatform() +} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..41d9927 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..aa991fc --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..1b6c787 --- /dev/null +++ b/gradlew @@ -0,0 +1,234 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..725faf6 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,10 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * + * Detailed information about configuring a multi-project build in Gradle can be found + * in the user manual at https://docs.gradle.org/7.4.2/userguide/multi_project_builds.html + */ + +rootProject.name = 'ADS Praktikum 9' diff --git a/src/ch/zhaw/ads/ADS9_2_test.java b/src/ch/zhaw/ads/ADS9_2_test.java new file mode 100644 index 0000000..6764df3 --- /dev/null +++ b/src/ch/zhaw/ads/ADS9_2_test.java @@ -0,0 +1,35 @@ +package ch.zhaw.ads; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; + +/** + * @author K Rege + * @version 1.00 2018/3/17 + * @version 1.01 2021/8/1 + */ +public class ADS9_2_test { + MyCompetitor c1 = new MyCompetitor(1, "Kiptum Daniel", "02:11:31"); + MyCompetitor c2 = new MyCompetitor(1, "Kiptum Daniel", "02:11:31"); + MyCompetitor c3 = new MyCompetitor(2, "Ancay Tarcis", "02:20:02"); + + @Test + public void testEquals() { + assertEquals(c1, c2); + assertNotEquals(c1, c3); + } + + @Test + public void testCompareTo() { + assertEquals(0, c1.compareTo(c2)); + assertNotEquals(0, c1.compareTo(c3)); + } + + @Test + public void testHashcode() { + assertEquals(c1.hashCode(), c2.hashCode()); + assertNotEquals(c1.hashCode(), c3.hashCode()); + } +} diff --git a/src/ch/zhaw/ads/ADS9_3_test.java b/src/ch/zhaw/ads/ADS9_3_test.java new file mode 100644 index 0000000..6951258 --- /dev/null +++ b/src/ch/zhaw/ads/ADS9_3_test.java @@ -0,0 +1,144 @@ +package ch.zhaw.ads; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class Town { + int hashCode; + String name; + String nb; + Town (int hashCode, String name, String nb) { + this.name = name; this.hashCode = hashCode; this.nb = nb; + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof Town)) return false; + return ((Town)o).name.equals(this.name); + } + + @Override + public int hashCode() { + return hashCode; + } + + @Override + public String toString() { + return name + " " + hashCode; + } +} + +public class ADS9_3_test { + Map hashmap; + List towns; + + @BeforeEach + public void setUp() { + towns = List.of( + new Town(5, "Bari", "BA"), + new Town(8, "Bologna", "BO"), + new Town(3, "Catania", "CA"), + new Town(9, "Firenze", "FI"), + new Town(0, "Genova", "GV"), + new Town(12, "Milano", "MI"), + new Town(7, "Napoli", "NA"), + new Town(7, "Palermo", "PA"), + new Town(7, "Roma", "RM"), + new Town(5, "Torino", "TO") + ); + + hashmap = new MyHashtable<>(100); + } + + @Test + public void testAdd() { + hashmap.clear(); + Town t0 = towns.get(0); + hashmap.put(t0, t0); + Town t1 = hashmap.get(t0); + assertEquals(t0, t1); + } + + @Test + public void testAdd2() { + hashmap.clear(); + Town t0 = towns.get(0); + Town t1 = towns.get(1); + hashmap.put(t0, t0); + hashmap.put(t1, t1); + Town t2 = hashmap.get(t0); + assertEquals(t0, t2); + t2 = hashmap.get(t1); + assertEquals(t1, t2); + } + + @Test + public void testAdd3() { + hashmap.clear(); + Town t0 = towns.get(0); + hashmap.remove(t0); + hashmap.put(t0, t0); + hashmap.put(t0, t0); + assertEquals(1, hashmap.size()); + Town t1 = hashmap.get(t0); + assertEquals(t0, t1); + } + + @Test + public void testAdd4() { + hashmap.clear(); + Town t0 = towns.get(0); + hashmap.put(t0, t0); + hashmap.put(t0, t0); + assertEquals(1, hashmap.size()); + } + + @Test + public void testSize() { + hashmap.clear(); + assertEquals(0, hashmap.size()); + testAdd2(); + assertEquals(2, hashmap.size()); + } + + @Test + public void testRemove() { + hashmap.clear(); + Town t0 = towns.get(0); + Town t1 = towns.get(1); + hashmap.put(t0, t0); + hashmap.remove(t0); + assertEquals(0, hashmap.size()); + hashmap.put(t0, t0); + hashmap.remove(t1); + assertEquals(1, hashmap.size()); + hashmap.remove(t0); + assertEquals(0, hashmap.size()); + } + + @Test + public void testMixed() { + hashmap.clear(); + Map hashmap2 = new HashMap<>(); + for (int i = 0; i < 10000; i++) { + Town c = towns.get((int)(Math.random() * towns.size())); + int op = (int)(Math.random() * 2); + switch (op) { + case 0: hashmap.put(c, c); hashmap2.put(c, c); break; + case 1: hashmap.remove(c); hashmap2.remove(c); break; + } + } + assertEquals(hashmap2.size(), hashmap.size()); + for (Town t : towns) { + Town c1 = hashmap.get(t); + Town c2 = hashmap2.get(t); + assertEquals(c1, c2); + } + } +} diff --git a/src/ch/zhaw/ads/ADS9_4_test.java b/src/ch/zhaw/ads/ADS9_4_test.java new file mode 100644 index 0000000..13baa9a --- /dev/null +++ b/src/ch/zhaw/ads/ADS9_4_test.java @@ -0,0 +1,119 @@ +package ch.zhaw.ads; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class ADS9_4_test { + Map hashmap; + List towns; + + @BeforeEach + public void setUp() { + towns = List.of( + new Town(5, "Bari", "BA"), + new Town(8, "Bologna", "BO"), + new Town(3, "Catania", "CA"), + new Town(9, "Firenze", "FI"), + new Town(0, "Genova", "GV"), + new Town(12, "Milano", "MI"), + new Town(7, "Napoli", "NA"), + new Town(7, "Palermo", "PA"), + new Town(7, "Roma", "RM"), + new Town(5, "Torino", "TO") + ); + + hashmap = new MyHashtable<>(2); + } + + @Test + public void testAdd() { + hashmap.clear(); + Town t0 = towns.get(0); + hashmap.put(t0, t0); + Town t1 = hashmap.get(t0); + assertEquals(t0, t1); + } + + @Test + public void testAdd2() { + hashmap.clear(); + Town t0 = towns.get(0); + Town t1 = towns.get(1); + hashmap.put(t0, t0); + hashmap.put(t1, t1); + Town t2 = hashmap.get(t0); + assertEquals(t0, t2); + t2 = hashmap.get(t1); + assertEquals(t1, t2); + } + + @Test + public void testAdd3() { + hashmap.clear(); + Town t0 = towns.get(0); + hashmap.remove(t0); + hashmap.put(t0, t0); + hashmap.put(t0, t0); + assertEquals(1, hashmap.size()); + Town t1 = hashmap.get(t0); + assertEquals(t0, t1); + } + + @Test + public void testAdd4() { + hashmap.clear(); + Town t0 = towns.get(0); + hashmap.put(t0, t0); + hashmap.put(t0, t0); + assertEquals(1, hashmap.size()); + } + + @Test + public void testSize() { + hashmap.clear(); + assertEquals(0, hashmap.size()); + testAdd2(); + assertEquals(2, hashmap.size()); + } + + @Test + public void testRemove() { + hashmap.clear(); + Town t0 = towns.get(0); + Town t1 = towns.get(1); + hashmap.put(t0, t0); + hashmap.remove(t0); + assertEquals(0, hashmap.size()); + hashmap.put(t0, t0); + hashmap.remove(t1); + assertEquals(1, hashmap.size()); + hashmap.remove(t0); + assertEquals(0, hashmap.size()); + } + + @Test + public void testMixed() { + hashmap.clear(); + Map hashmap2 = new HashMap<>(); + for (int i = 0; i < 1000; i++) { + Town c = towns.get((int)(Math.random() * towns.size())); + int op = (int)(Math.random() * 2); + switch (op) { + case 0: hashmap.put(c, c); hashmap2.put(c, c); break; + case 1: hashmap.remove(c); hashmap2.remove(c); break; + } + } + assertEquals(hashmap2.size(), hashmap.size()); + for (Town t : towns) { + Town c1 = hashmap.get(t); + Town c2 = hashmap2.get(t); + assertEquals(c1, c2); + } + } +} diff --git a/src/ch/zhaw/ads/AnyServer.java b/src/ch/zhaw/ads/AnyServer.java new file mode 100644 index 0000000..cf89f5f --- /dev/null +++ b/src/ch/zhaw/ads/AnyServer.java @@ -0,0 +1,15 @@ +package ch.zhaw.ads; + +/** + * AnyServer -- Praktikum Experimentierkasten -- ADS + * + * @author E. Mumprecht + * @version 1.0 -- Geruest fuer irgendeinen Server + */ +public class AnyServer implements CommandExecutor { + //----- Dies implementiert das CommandExecutor Interface. + @Override + public String execute(String command) { + return "Die Eingabe ist \"" + command + "\"\n"; + } +} diff --git a/src/ch/zhaw/ads/CommandExecutor.java b/src/ch/zhaw/ads/CommandExecutor.java new file mode 100644 index 0000000..bb2a018 --- /dev/null +++ b/src/ch/zhaw/ads/CommandExecutor.java @@ -0,0 +1,20 @@ +package ch.zhaw.ads; + +/** + * CommandExecutor -- Praktikum Experimentierkasten -- SW3 Dieses Interface muss + * von jedem Server implementiert werden. + * + * @author E. Mumprecht + * @version 1.0 -- Geruest fuer irgendeinen Server + * @version 1.1 -- K. Rege Fehlerueckgabe hinzugefuegt + */ +public interface CommandExecutor { + /** + * execute -- nimmt eine Kommandozeile, tut irgendetwas gescheites, und + * berichtet das Resultat. + * + * @param command Kommandozeile + * @return Resultat, ueblicherweise eine oder mehrere Zeilen. + */ + String execute(String command) throws Exception; +} \ No newline at end of file diff --git a/src/ch/zhaw/ads/ExBox.java b/src/ch/zhaw/ads/ExBox.java new file mode 100644 index 0000000..81a6992 --- /dev/null +++ b/src/ch/zhaw/ads/ExBox.java @@ -0,0 +1,13 @@ +package ch.zhaw.ads; + +/** + * @author K. Rege + * @version 1.0 -- Experimentierkasten + */ +public class ExBox { + public static void main(String[] args) { + ExBoxFrame f = new ExBoxFrame(); + f.setLocationRelativeTo(null); + f.setVisible(true); + } +} \ No newline at end of file diff --git a/src/ch/zhaw/ads/ExBoxFrame.java b/src/ch/zhaw/ads/ExBoxFrame.java new file mode 100644 index 0000000..e43aaa9 --- /dev/null +++ b/src/ch/zhaw/ads/ExBoxFrame.java @@ -0,0 +1,294 @@ +package ch.zhaw.ads; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.io.BufferedReader; +import java.io.FileInputStream; +import java.io.InputStreamReader; +import java.net.URISyntaxException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Set; + +/** + * @(#)ExBoxFrame.java + * + * JFC ExBox application + * + * @author K.Rege + * @version 1.00 2014/2/3 + * @version 1.01 2016/8/2 + * @version 2.00 2017/8/30 Test + * @version 2.01 2018/2/5 AutoscaleFaktor + * @version 2.02 2018/3/12 Reconnect (inspired by S. Kunz) + * @version 2.03 2021/7/24 Test (repeat) + * @version 2.04 2021/9/11 Test as plugin + */ +public class ExBoxFrame extends JFrame implements ActionListener, ItemListener { + private final int UHDTHRESHOLD = 1920; + private final String STANDARDENCODING = "ISO-8859-1"; + + private JMenuItem connect, exit, open, test, retest, textView, graphicView, clear; + private JMenu menuServer; + private JButton enter; + private JTextField arguments; + private JComboBox history; + private JTextArea output; + private JScrollPane scrollPane; + private CommandExecutor command; + private CommandExecutor unitTest; + private boolean graphicOn; + private GraphicPanel graphic; + private String lastServer; + private String lastTestFile; + + public void setFontSize(int size) { + Set keySet = UIManager.getLookAndFeelDefaults().keySet(); + for (Object key : keySet) { + if (key != null && key.toString().toLowerCase().contains("font")) { + Font font = UIManager.getDefaults().getFont(key); + if (font != null) { + font = font.deriveFont((float) size); + UIManager.put(key, font); + } + } + } + } + + private void initMenu() { + JMenuBar menuBar = new JMenuBar(); + setJMenuBar(menuBar); + + JMenu menuFile = new JMenu("File"); + menuBar.add(menuFile); + open = new JMenuItem("Open..."); + open.addActionListener(this); + menuFile.add(open); + exit = new JMenuItem(); + exit.setText("Exit"); + exit.addActionListener(this); + menuFile.add(exit); + + menuServer = new JMenu("Server"); + menuBar.add(menuServer); + connect = new JMenuItem("Connect ..."); + connect.addActionListener(this); + menuServer.add(connect); + + JMenu menuView = new JMenu("View"); + menuBar.add(menuView); + clear = new JMenuItem("Clear"); + clear.addActionListener(this); + menuView.add(clear); + textView = new JMenuItem("Text"); + textView.addActionListener(this); + menuView.add(textView); + graphicView = new JMenuItem("Graphic"); + graphicView.addActionListener(this); + menuView.add(graphicView); + } + + private void initJUnit() { + try { + unitTest = ServerFactory.createServer(getPathCompiled().resolve("ExBoxJUnit.class").toString()); + test = new JMenuItem("Test ..."); + test.addActionListener(this); + menuServer.add(test); + retest = new JMenuItem("Test"); + retest.addActionListener(this); + menuServer.add(retest); + } catch (Exception e) { + warning("Test Plugin not found\n"); + } + } + + private void initComponents() { + setLayout(new BorderLayout()); + output = new JTextArea(); + scrollPane = new JScrollPane(output); + add(BorderLayout.CENTER, scrollPane); + + JPanel panel = new JPanel(new BorderLayout()); + panel.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4)); + arguments = new JTextField(); + arguments.addActionListener(this); + panel.add(BorderLayout.CENTER, arguments); + enter = new JButton("enter"); + enter.addActionListener(this); + panel.add(BorderLayout.EAST, enter); + history = new JComboBox<>(); + history.addItemListener(this); + panel.add(BorderLayout.SOUTH, history); + add(BorderLayout.SOUTH, panel); + } + + /** + * get default path for file open dialog + */ + private Path getPathCompiled() { + try { + Path path = Paths.get(getClass().getProtectionDomain().getCodeSource().getLocation().toURI()); + for (String part : getClass().getPackage().getName().split("\\.")) { + path = path.resolve(part); + } + return path; + } catch (URISyntaxException e) { + throw new RuntimeException(e); + } + } + + /** + * The constructor + */ + public ExBoxFrame() { + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (Exception ex) { + ex.printStackTrace(); + } + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + double scaleFaktor = (screenSize.getWidth() <= UHDTHRESHOLD) ? 1 : 2; + setFontSize((int) (11 * scaleFaktor)); + setSize( + new Dimension((int) (400 * scaleFaktor), (int) (400 * scaleFaktor))); + setTitle("ExBox"); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + initComponents(); + initMenu(); + initJUnit(); + } + + private void warning(String s) { + System.err.println("\nWARNING: " + s + "\n"); + } + + private void error(String s) { + output.append("\nERROR: " + s + "\n"); + } + + private void execute(String args) throws Exception { + /* if (lastServer != null) { + command = ServerFactory.createServer(lastServer); + }*/ + if (!arguments.getText().equals(history.getItemAt(0)) + && !arguments.getText().equals(history.getSelectedItem())) { + history.insertItemAt(arguments.getText(), 0); + } + if (command == null) { + error("no Server connected"); + } else { + String res = command.execute(args); + if (graphicOn) { + graphic.setFigure(res); + } else { + output.append(res); + } + } + } + + private void setGraphicView() { + if (!graphicOn) { + remove(scrollPane); + graphic = new GraphicPanel(); + output.removeNotify(); + add(BorderLayout.CENTER, graphic); + graphicOn = true; + validate(); + repaint(); + } + } + + private void setTextView() { + if (graphicOn) { + remove(graphic); + add(BorderLayout.CENTER, scrollPane); + graphicOn = false; + validate(); + repaint(); + } + } + + private String openFileDialog(Path startDirectory, String pattern) { + FileDialog fd = new FileDialog(this, "Open"); + if (pattern != null) fd.setFile(pattern); + if (startDirectory != null) fd.setDirectory(startDirectory.toString()); + fd.setVisible(true); + return fd.getDirectory() + fd.getFile(); + } + + private void testCommand(boolean retest) throws Exception { + if (!retest) { + lastTestFile = openFileDialog(getPathCompiled(), "*test.class"); + } + if (lastTestFile == null) { + output.append("ERROR no Test spezified\n"); + } else if (unitTest != null) { + output.append(unitTest.execute(lastTestFile)); + } + } + + private void connectCommand() throws Exception { + String name = openFileDialog(getPathCompiled(), "*Server.class"); + command = ServerFactory.createServer(name); + lastServer = name; + String fullClassName = command.getClass().getName(); + String simpleClassName = fullClassName.substring( + fullClassName.lastIndexOf('.') + 1); + setTitle("ExBox connected to " + simpleClassName); + + } + + private void openFile() throws Exception { + String name = openFileDialog(null, null); + + BufferedReader br = new BufferedReader( + new InputStreamReader(new FileInputStream(name), STANDARDENCODING)); + StringBuilder b = new StringBuilder(); + String line; + while ((line = br.readLine()) != null) { + b.append(line); + b.append('\n'); + } + execute(b.toString()); + } + + public void itemStateChanged(ItemEvent e) { + try { + arguments.setText((String) e.getItem()); + execute(arguments.getText()); + } catch (Throwable ex) { + error(ex.toString()); + } + } + + public void actionPerformed(ActionEvent e) { + try { + if ((e.getSource() == arguments) || (e.getSource() == enter)) { + execute(arguments.getText()); + } else if (e.getSource() == connect) { + connectCommand(); + } else if (e.getSource() == test) { + testCommand(false); + } else if (e.getSource() == retest) { + testCommand(true); + } else if (e.getSource() == open) { + openFile(); + } else if (e.getSource() == textView) { + setTextView(); + } else if (e.getSource() == graphicView) { + setGraphicView(); + } else if (e.getSource() == clear) { + output.setText(""); + } else if (e.getSource() == exit) { + System.exit(0); + } + } catch (Throwable ex) { + ex.printStackTrace(); + error(ex.toString()); + } + } +} diff --git a/src/ch/zhaw/ads/ExBoxJUnit.java b/src/ch/zhaw/ads/ExBoxJUnit.java new file mode 100644 index 0000000..b382669 --- /dev/null +++ b/src/ch/zhaw/ads/ExBoxJUnit.java @@ -0,0 +1,92 @@ +package ch.zhaw.ads; + +import org.junit.platform.engine.TestDescriptor; +import org.junit.platform.engine.TestExecutionResult; +import org.junit.platform.engine.discovery.DiscoverySelectors; +import org.junit.platform.launcher.Launcher; +import org.junit.platform.launcher.LauncherDiscoveryRequest; +import org.junit.platform.launcher.TestExecutionListener; +import org.junit.platform.launcher.TestIdentifier; +import org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder; +import org.junit.platform.launcher.core.LauncherFactory; + +import java.io.*; +import java.util.LinkedList; +import java.util.List; + +public class ExBoxJUnit implements CommandExecutor { + @Override + public String execute(String testFile) throws Exception { + final List successfulTests = new LinkedList<>(); + final List failedResults = new LinkedList<>(); + + StringBuilder output = new StringBuilder(); + + output.append("\nRUN TESTS ").append(new File(testFile).getName().split("\\.")[0]).append("\n"); + + LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request() + .selectors(DiscoverySelectors.selectClass(ServerFactory.loadClass(testFile))) + .build(); + + Launcher launcher = LauncherFactory.create(); + launcher.discover(request); + launcher.registerTestExecutionListeners(new TestExecutionListener() { + @Override + public void executionFinished(TestIdentifier testIdentifier, TestExecutionResult testExecutionResult) { + if (testIdentifier.getType() != TestDescriptor.Type.TEST) { + return; + } + + if (testExecutionResult.getStatus() == TestExecutionResult.Status.SUCCESSFUL) { + successfulTests.add(testIdentifier.getDisplayName()); + } else { + failedResults.add(new TestFailure(testIdentifier.getDisplayName(), + testExecutionResult.getThrowable().orElse(null))); + } + } + }); + launcher.execute(request); + + for (String testName : successfulTests) { + output.append(testName).append(": OK\n"); + } + for (TestFailure result : failedResults) { + output.append(result.getName()).append(": ERROR\n"); + String error = result.errorString(); + if (!error.isEmpty()) { + output.append(error).append("\n"); + } + } + boolean wasSuccessful = failedResults.isEmpty(); + output.append("TESTS ").append(wasSuccessful ? "PASSED" : "FAILED").append(": ") + .append(wasSuccessful ? "OK \u263a" : failedResults.size() + " ERRORS").append("\n"); + return output.toString(); + } + + private static class TestFailure { + private final String name; + private final Throwable throwable; + + TestFailure(String name, Throwable throwable) { + this.name = name; + this.throwable = throwable; + } + + public String getName() { + return name; + } + + public String errorString() { + if (throwable == null) { + return ""; + } + try (StringWriter stringWriter = new StringWriter(); + PrintWriter printWriter = new PrintWriter(stringWriter)) { + throwable.printStackTrace(printWriter); + return stringWriter.toString(); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + } + } +} \ No newline at end of file diff --git a/src/ch/zhaw/ads/GraphicPanel.java b/src/ch/zhaw/ads/GraphicPanel.java new file mode 100644 index 0000000..ae0b1f0 --- /dev/null +++ b/src/ch/zhaw/ads/GraphicPanel.java @@ -0,0 +1,84 @@ +package ch.zhaw.ads; + +import javax.swing.*; +import java.awt.*; +import java.util.StringTokenizer; + +public class GraphicPanel extends JPanel { + String figure; + + public void setFigure(String figure) { + this.figure = figure; + paint(getGraphics()); + } + + private void drawRect(Graphics g, double x, double y, double width, double height, String style) { + int w = getWidth(); + int h = getHeight(); + int ix0 = (int) (w * x); + int iy0 = (int) (h * y); + int ix1 = (int) (w * (x + width)); + int iy1 = (int) (h * (y + height)); + if (style.equals("draw")) { + g.drawRect(ix0, h - iy1, ix1 - ix0, iy1 - iy0); + } else { + g.fillRect(ix0, h - iy1, ix1 - ix0, iy1 - iy0); + } + } + + private void drawFigure(Graphics g) { + if (figure != null) { + int w = getWidth(); + int h = getHeight(); + g.setColor(Color.black); + StringTokenizer tok = new StringTokenizer(figure, " <>=/,\"\n"); + while (tok.hasMoreTokens()) { + String fig = tok.nextToken(); + if (fig.equals("line")) { + tok.nextToken(); + double x1 = Double.parseDouble(tok.nextToken()); + tok.nextToken(); + double y1 = Double.parseDouble(tok.nextToken()); + tok.nextToken(); + double x2 = Double.parseDouble(tok.nextToken()); + tok.nextToken(); + double y2 = Double.parseDouble(tok.nextToken()); + g.drawLine((int) (x1 * w), h - (int) (y1 * h), + (int) (x2 * w), h - (int) (y2 * h)); + } else if (fig.equals("rect")) { + tok.nextToken(); + double x = Double.parseDouble(tok.nextToken()); + tok.nextToken(); + double y = Double.parseDouble(tok.nextToken()); + tok.nextToken(); + double width = Double.parseDouble(tok.nextToken()); + tok.nextToken(); + double height = Double.parseDouble(tok.nextToken()); + tok.nextToken(); + String style = tok.nextToken(); + drawRect(g, x, y, width, height, style); + } else if (fig.equals("color")) { + tok.nextToken(); + int red = Integer.parseInt(tok.nextToken()); + tok.nextToken(); + int green = Integer.parseInt(tok.nextToken()); + tok.nextToken(); + int blue = Integer.parseInt(tok.nextToken()); + g.setColor(new Color(red, green, blue)); + } + } + } + } + + private void clear(Graphics g) { + int w = getWidth(); + int h = getHeight(); + g.setColor(new Color(240, 240, 240)); + g.fillRect(0, 0, w, h); + } + + public void paint(Graphics g) { + clear(g); + drawFigure(g); + } +} \ No newline at end of file diff --git a/src/ch/zhaw/ads/HashServer.java b/src/ch/zhaw/ads/HashServer.java new file mode 100644 index 0000000..91b6fdf --- /dev/null +++ b/src/ch/zhaw/ads/HashServer.java @@ -0,0 +1,45 @@ +package ch.zhaw.ads; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; + +public class HashServer implements CommandExecutor { + private final static int STARTNR = 0; + private final static int NAME = 1; + private final static int TIME = 2; + + private final Map data = new MyHashtable<>(4000); + + private long parseTime(String s) throws Exception { + DateFormat sdf = new SimpleDateFormat("HH:mm:ss.S"); + Date date = sdf.parse(s); + return date.getTime(); + } + + public void load(Map data, String list) { + String[] lines = list.split("\n"); + for (String line : lines) { + String[] items = line.split(";"); + MyCompetitor c = new MyCompetitor(Integer.parseInt(items[STARTNR]), // startNr + items[NAME], // name + items[TIME]); // time + data.put(c, c); + } + } + + public String execute(String arg) { + if (arg.toUpperCase().startsWith("GET")) { + String[] items = arg.substring(3).trim().split(";"); + MyCompetitor key = new MyCompetitor(Integer.parseInt(items[1]), items[0], "00:00:00.0"); + MyCompetitor o = data.get(key); + if (o != null) { + return items[0] + " " + items[1] + " -> " + o + "\n"; + } + return "not found\n"; + } + load(data, arg); + return "" + data.size() + " loaded\n"; + } +} diff --git a/src/ch/zhaw/ads/MyCompetitor.java b/src/ch/zhaw/ads/MyCompetitor.java new file mode 100644 index 0000000..0e14684 --- /dev/null +++ b/src/ch/zhaw/ads/MyCompetitor.java @@ -0,0 +1,65 @@ +package ch.zhaw.ads; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; + +public class MyCompetitor implements Comparable { + private final String name; + private final String time; + private int rank; + + public MyCompetitor(int rank, String name, String time) { + this.rank = rank; + this.name = name; + this.time = time; + } + + public void setRank(int rank) { + this.rank = rank; + } + + public String getTime() { + return time; + } + + public String getName() { + return name; + } + + private static long parseTime(String s) { + try { + DateFormat sdf = new SimpleDateFormat("HH:mm:ss"); + Date date = sdf.parse(s); + return date.getTime(); + } catch (Exception e) {System.err.println(e);} + return 0; + } + + private static String timeToString(int time) { + SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss"); + return df.format(new Date(time)); + } + + public String toString() { + return ""+ rank + " "+name+" "+time; + } + + @Override + public int compareTo(MyCompetitor o) { + // to be done + return -1; + } + + @Override + public int hashCode() { + // to be done + return -1; + } + + @Override + public boolean equals (Object o) { + // to be done + return false; + } +} diff --git a/src/ch/zhaw/ads/MyHashtable.java b/src/ch/zhaw/ads/MyHashtable.java new file mode 100644 index 0000000..740d37a --- /dev/null +++ b/src/ch/zhaw/ads/MyHashtable.java @@ -0,0 +1,96 @@ +package ch.zhaw.ads; + +import java.util.Collection; +import java.util.Map; +import java.util.Set; + +@SuppressWarnings("unchecked") +public class MyHashtable implements Map { + private K[] keys = (K[]) new Object[10]; + private V[] values = (V[]) new Object[10]; + + private int hash(Object k) { + int h = Math.abs(k.hashCode()); + return h % keys.length; + } + + public MyHashtable(int size) { + // to be done + } + + // Removes all mappings from this map (optional operation). + public void clear() { + // to be done + throw new UnsupportedOperationException(); + } + + // Associates the specified value with the specified key in this map (optional operation). + public V put(K key, V value) { + // to be done + throw new UnsupportedOperationException(); + } + + // Returns the value to which this map maps the specified key. + public V get(Object key) { + // to be done + throw new UnsupportedOperationException(); + } + + // Removes the mapping for this key from this map if present (optional operation). + public V remove(Object key) { + // to be done (Aufgabe 3) + throw new UnsupportedOperationException(); + } + + // Returns the number of key-value mappings in this map. + public int size() { + // to be done + throw new UnsupportedOperationException(); + } + + // UnsupportedOperationException =================================================================== + // Returns a collection view of the values contained in this map. + public Collection values() { + throw new UnsupportedOperationException(); + } + + // Returns true if this map contains a mapping for the specified key. + public boolean containsKey(Object key) { + throw new UnsupportedOperationException(); + } + + // Returns true if this map maps one or more keys to the specified value. + public boolean containsValue(Object value) { + throw new UnsupportedOperationException(); + } + + // Returns a set view of the mappings contained in this map. + public Set> entrySet() { + throw new UnsupportedOperationException(); + } + + // Compares the specified object with this map for equality. + public boolean equals(Object o) { + throw new UnsupportedOperationException(); + } + + // Copies all of the mappings from the specified map to this map (optional operation). + public void putAll(Map t) { + throw new UnsupportedOperationException(); + } + + // Returns the hash code value for this map. + public int hashCode() { + throw new UnsupportedOperationException(); + } + + // Returns true if this map contains no key-value mappings. + public boolean isEmpty() { + throw new UnsupportedOperationException(); + } + + // Returns a set view of the keys contained in this map. + public Set keySet() { + throw new UnsupportedOperationException(); + } +} diff --git a/src/ch/zhaw/ads/RangZuerich.csv b/src/ch/zhaw/ads/RangZuerich.csv new file mode 100644 index 0000000..0e68b7d --- /dev/null +++ b/src/ch/zhaw/ads/RangZuerich.csv @@ -0,0 +1,3166 @@ +3;Kiptum Daniel;02:11:31.1 +51;Ançay Tarcis;02:20:02.9 +52;Kreienbühl Christian;02:21:47.6 +53;Ott Michael;02:33:48.9 +54;Menzi Christoph;02:27:26.4 +55;Oliver Ruben;02:32:12.8 +57;Elmer Beat;02:33:53.3 +58;Kühni Martin;02:33:36.9 +59;Müller Stefan;02:31:14.0 +62;Marti Adrian;02:30:09.7 +63;Zwicky Christian;02:36:28.5 +64;Gehrig Roman;02:33:50.3 +65;Körner Lutz;02:32:47.1 +67;Nunige Guy;02:34:11.7 +69;Marti Fredi;02:44:48.7 +70;Dufaux Laurent;02:43:48.8 +71;Hamd Mohamednur;02:19:45.7 +72;Simpson Guy;02:30:50.8 +151;Morceli Patricia;02:37:28.0 +152;Berchtold Rachel;02:53:42.2 +153;Di Marco Magali;02:42:56.3 +156;Wyss Sandra;02:54:06.3 +157;Amiet Tanja;02:53:08.5 +159;Meneghin-Pliska Maja;02:46:07.6 +163;Zimmermann Denise;02:56:54.0 +165;Beffa Heidi;03:09:43.9 +166;Haller Natasha;03:01:07.3 +167;Lohri Nicole;02:52:31.3 +168;Serafini Susanna;03:29:00.2 +169;Annen Lamard Sandra;02:57:20.3 +170;Mayer-Hofmann Lucia;02:59:35.4 +201;Allard David;04:26:57.0 +202;Andres Robert;03:33:42.9 +203;Angehrn Otto;04:20:16.5 +204;Bader Philipp;03:40:53.1 +205;Baer Willi;03:28:12.9 +206;Baumann Simon;03:03:47.9 +207;Baumann Simon;03:12:09.6 +208;Baumann Werner;03:45:49.7 +209;Baur Hansruedi;04:04:04.5 +210;Bellerjeau James;03:42:08.6 +211;Benz Felix;02:58:13.2 +212;Bergamin Mario;03:26:30.3 +213;Bernhard Stefan;04:46:01.3 +215;Berweger Peter;02:53:15.4 +218;Bischof Thomas;03:26:40.1 +219;Blatter Eveline;02:56:49.7 +220;Bolliger Armin;03:00:08.5 +221;Brem Daniel;03:49:53.5 +222;Meier Zgraggen Stefani;04:33:30.8 +223;Brunold Andrea;03:34:27.0 +224;Brüschweiler Mathias;03:29:48.0 +225;Bucher René;04:06:20.5 +226;Buchmann Isabel;03:26:18.3 +227;Bühler Sigi;03:41:30.9 +228;Bühler Willi;03:30:40.3 +229;Buzzi Andreas;03:46:55.3 +230;Cavelti Roland;03:17:16.1 +231;Cremon René;03:39:32.4 +233;Denker Catrina;03:13:34.8 +235;Egli Ariane;04:06:18.9 +236;Ehrismann Martin;03:31:04.9 +237;Eichholzer Hans;03:57:46.6 +239;Estermann Thomas;03:48:47.8 +240;Fahrni Kurt;03:32:56.4 +241;Fesli Mehmet;04:46:31.2 +242;Flück Heinz;04:41:57.5 +243;Flühmann Katrin;03:31:29.0 +244;Fuchs Stefan;03:02:36.3 +245;Füglistaller Jörg;03:32:35.2 +246;Fürst Roger;03:24:10.4 +247;Fürst Willi;04:39:57.6 +248;Galati Francesco;03:29:38.1 +249;Gasser Matthias;03:29:03.8 +250;Gäumann Coni;03:59:14.9 +251;Gautschi Martin;03:02:27.4 +252;Gerber Bernhard;04:06:33.1 +254;Gianini Franz;04:01:52.1 +255;Giger Claudio;03:06:06.0 +256;Giger Stephan;03:56:50.1 +257;Good Erich;03:30:46.9 +258;Merkt Jürg;02:59:49.3 +259;Streit Markus;02:59:49.2 +260;Goudsmit Gerrit;02:56:51.0 +261;Gut Viktor;03:22:35.2 +262;Haag Elisabeth;04:10:05.7 +263;Häberli Roland;04:36:11.0 +264;Hächler Roland;04:00:18.3 +265;Haefeli Angela;03:48:09.9 +266;Häfliger Jürg;03:42:23.5 +267;Hafner Jürg;04:25:44.5 +268;Hager Armin;03:22:35.8 +269;Händle Heinz;04:13:38.7 +270;Herren Kurt;04:49:31.2 +271;Brüniger Markus;03:56:54.1 +272;Hirschi Peter;04:32:42.3 +273;Höck Stefan;03:34:37.9 +274;Hofmann Martin;04:21:51.7 +275;Hofstetter Corinne;03:30:35.2 +277;Holzinger Adrian;03:15:05.9 +279;Huber Edi;03:10:04.9 +280;Huber Mac;03:46:59.0 +281;Huggenberger Kurt;04:20:30.3 +282;Jaccard Marc Pierre;04:41:07.1 +283;Jakopic Klemen;03:17:07.9 +284;Jarjour Kamel;03:47:02.2 +285;Jordi Markus;03:51:01.0 +286;Jost Hansueli;03:49:31.9 +287;Jucker Andreas H.;03:22:44.9 +288;Jud Ueli;02:52:15.4 +289;Jutzi Victor;03:40:25.6 +290;Kälin Léon;04:04:11.0 +291;Kaufmann Patrick;04:03:16.0 +293;Keller Peter;03:23:54.9 +294;Keller Stephan;03:26:12.3 +295;Kilchherr Virginia;03:44:11.6 +296;Kloter Georg;03:38:02.6 +297;Koch Stephan;03:28:39.7 +298;Kopp Martin;03:17:15.1 +300;Kreienbühl Anna;04:04:25.4 +301;Kreienbühl Fridolin;03:51:50.0 +302;Kuendig Christoph;04:18:39.9 +303;Kulik Karsten;03:07:13.8 +304;Kunz Thomas;03:47:52.3 +305;Kunz Tommy;04:00:43.7 +306;Kuonen Kurt;03:16:10.8 +307;Kurz Daniel;03:42:28.9 +308;Kuster Verena;04:46:49.9 +309;Laffer Urs;03:48:15.5 +310;Landolt Andreas;03:19:46.2 +311;Ledermann Martin;04:51:42.7 +313;Nüssli Dave;03:14:49.2 +314;Graf Peter;03:14:47.9 +315;Lilley Darrel;04:16:09.6 +316;Manning John;03:38:25.5 +318;Maslarevic Dragan;04:45:37.9 +319;Meier Pascal;03:53:51.1 +320;Meier Pius;05:24:48.8 +321;Meier Robert;03:58:11.2 +322;Meyer Arthur;04:36:21.2 +323;Meyer Christoph;03:49:14.4 +324;Meyer Dirk;03:13:32.3 +325;Meyer Stephan;03:26:31.8 +326;Milivojevic Ljubomir;03:04:44.1 +327;Miller Barbara;03:17:17.1 +330;Mona Sergio;03:19:03.6 +331;Monn Matilda;03:59:34.9 +332;Müller Adrian;03:54:32.6 +333;Müller Doris;03:40:25.5 +334;Müller Thomas;03:23:52.0 +335;Ochsner René;04:01:31.7 +336;Patcas Michel;03:53:53.1 +337;Peric Frank;03:27:59.8 +338;Pfister Matthias;03:22:09.8 +339;Prosdocimi Ivan;03:46:41.9 +340;Pürro Beat;03:44:25.9 +341;Rau Dani;03:24:19.5 +342;Renggli Thomas;02:53:46.2 +343;Helfenstein Alain;03:44:44.0 +344;Anderhalden Donnino;03:44:01.1 +346;Rezan Robert;03:34:37.5 +347;Rickli Jörg;03:29:51.8 +348;Rothen Franz;03:25:01.6 +349;Röthlisberger Alain P.;03:34:40.8 +350;Rüegg Beat;03:26:53.1 +351;Rüegg Herbert;03:23:31.0 +352;Ruoss Sven;03:06:32.8 +353;Sandmeier Ueli;03:13:54.5 +354;Saxer Peter;03:45:15.0 +355;Schaffer Bernard;03:37:55.1 +356;Schaub Werner;03:36:45.4 +357;Schilling Hans;03:55:00.8 +358;Appenzeller Ulrich;03:59:30.8 +359;Fischer Reto;03:59:33.1 +360;Schlatter Sonya;04:18:26.3 +361;Schmid Christian;03:00:53.9 +362;Schmid Richard;02:58:46.7 +363;Schuster Mathias;03:11:42.3 +364;Seiler Hans;03:37:28.8 +365;Späni Urs;04:22:38.1 +366;Spiess Paul;03:42:34.9 +367;Stalder Martin;03:57:32.6 +368;Steimann Ernst;04:41:02.1 +369;Stöckli Urs;03:03:26.1 +370;Straumann Urs;03:01:40.9 +371;Studer Franz;04:17:49.1 +372;Sturzenegger Daniel;03:28:01.9 +373;Süssli Philipp;03:08:02.0 +374;Suter Kurt;03:46:46.6 +375;Tanner Christian;03:34:34.6 +376;Taschi Sander;03:36:13.3 +377;Thalmann Martin;03:49:11.2 +378;Theiler Alois;03:47:54.7 +379;Tischer Georg;04:44:08.7 +380;Tramacere Enrico;04:00:20.5 +381;Veraguth Christian;05:29:08.8 +382;Vetterli Thomas;04:16:32.9 +383;Vogel Marco;03:25:36.1 +384;Vögeli Thomas;03:49:27.0 +385;Vogt Urs;03:19:15.3 +386;Voser Therese;03:29:13.2 +387;Vosseler Beat;02:56:34.7 +388;Waller Max;04:15:17.0 +389;Walther Rita;04:23:45.5 +390;Wäschle Stefan;03:15:35.3 +391;Wenger Beat;03:34:52.6 +392;Wettstein Walter;04:53:57.7 +393;Wild Ruedi;03:27:44.3 +394;Wyser Norbert;03:26:23.0 +395;Zahler Markus;03:56:47.9 +396;Zgraggen Walter;03:33:11.9 +397;Zimmermann Herbert;04:26:40.4 +398;Zingg Marcel;03:45:33.1 +399;Zollinger Thomas;03:17:47.8 +400;Zingg Matthias;03:28:26.8 +402;Züger Fritz;04:20:41.2 +403;Zurbuchen Röbi;03:26:40.4 +404;Alpiger Karl Jun.;03:26:11.7 +405;Amacher Tom;03:54:37.7 +406;Ammann Anton;04:54:02.2 +407;Ammann Hansruedi;03:49:23.4 +408;Anneler James;04:59:47.5 +409;Bailey Richard;03:24:29.3 +411;Baumberger Rolf;03:05:38.5 +412;Uhler Remo;04:13:30.8 +413;Jaussi Lars;04:13:31.4 +414;Baumgartner Peter;04:43:47.2 +415;Bebie Bruno;03:23:03.2 +416;Beck René;04:21:30.0 +417;Bergamin Roland;03:24:28.6 +418;Berger Beat;02:42:27.0 +419;Bertschinger Erwin;03:24:17.3 +420;Binder Peter;03:49:11.9 +421;Bischofberger Lukas;03:17:26.2 +422;Böhler Thomas;03:43:48.7 +424;Borner Daniel;04:51:53.1 +425;Bosshard Roland;03:18:10.3 +426;Breitenmoser Stefan;02:56:21.4 +427;Brem Gabriella;03:56:23.3 +428;Huber Yvonne;04:27:59.6 +429;Malischke Jacqueline;04:27:59.2 +430;Brem Ruedi;03:32:12.2 +432;Bruhin Marino;03:32:43.9 +433;Bryner Adrian;04:06:52.1 +434;Bürgi Matthias;04:11:55.0 +436;Christen David;05:02:03.8 +437;Ciprian Peter;04:12:24.3 +438;Conrad Otto;04:34:00.0 +439;Conti Antonio;03:14:49.1 +440;Della Rossa Hanspeter;04:04:20.0 +441;Deseö Katja;04:32:53.5 +442;Deseö Thomas;03:52:05.9 +443;Reichmuth Ruedi;04:40:20.4 +444;Mettler Martin;04:39:44.8 +445;Ehrhard Andre;03:29:17.4 +446;Eigenmann Markus;03:40:47.1 +447;Engeli Benjamin;02:57:53.2 +448;Etzold Liz;04:33:10.0 +450;Flury Alois;04:51:02.6 +451;Frei Martin;02:46:47.7 +452;Geerdsema Jan;04:32:20.6 +453;Gloor Ruedi;04:20:10.2 +454;Grimm Schädel Christia;03:49:06.0 +456;Hauck Rene;03:28:20.9 +457;Haupt Hanspeter;04:20:51.3 +458;Josty Adrian;04:59:25.2 +459;Wieser Andreas;04:59:26.2 +460;Heer Andreas;03:50:32.2 +461;Hegner Connie;03:51:46.0 +463;Huerlimann Markus;03:33:33.9 +465;Jordi Christine;03:56:35.0 +466;Juhasz Bruno;03:45:55.0 +467;Kämpf Kurt;03:57:28.5 +468;Keller Andreas;03:53:52.6 +469;Keller Markus;03:14:12.6 +470;Kern Jean-Pierre;03:55:37.6 +471;Läderach Peter;03:35:32.3 +472;Landolt Fredi;03:57:25.0 +473;Lörtscher Robin;03:29:19.5 +474;Lutz Peter;04:39:56.3 +476;Mächler Anton;03:47:14.9 +477;Manz Thomas;03:33:38.9 +479;Meier Kurt;04:04:48.9 +480;Meier Philipp;03:32:31.2 +481;Meile Urs;04:10:32.5 +482;Melchior Ursula;03:46:13.7 +484;Münzenmaier Samuel;02:58:03.2 +485;Nägeli Oliver;03:45:17.4 +486;Niederberger Martin;03:55:45.4 +487;Pfenniger Peter;03:55:37.5 +488;Rhyn Andy;03:28:54.3 +489;Rieder Marcos;03:08:11.3 +490;Rüeger Urs;03:19:30.1 +492;Schreiber Christian;03:27:36.0 +493;Sobaszkiewicz Markus;04:06:39.1 +495;Sonderer Marcel;03:11:32.6 +496;Spielmann Hans-Peter;03:44:30.3 +497;Steiner Ueli;03:56:34.9 +498;Stöckli Silvia;05:10:36.7 +499;Straube Wolfgang;03:42:04.6 +500;Zielmann Sarah;03:59:32.8 +501;Suter Thomas;03:21:52.2 +502;Sutter Fritz;04:23:39.4 +503;Tschopp André;03:25:06.6 +504;Utzinger Reto;03:24:43.8 +506;Waltl Günther;03:28:29.0 +507;Wartmann Matthias;03:42:03.9 +508;Wegmueller Marc Simon;03:15:37.4 +509;Wegmüller Rolf;03:15:38.6 +510;Widmer Lucas;02:46:06.3 +513;Bugmann Daniel;03:15:19.8 +514;Dos Reis Romeo;03:34:55.0 +515;Meier-Pfosi Marlies;05:11:40.1 +516;Schmid Beat;04:19:03.8 +517;Sicurelli Ernesto;03:26:25.5 +518;Ulrich Beat;03:25:27.1 +519;Bossi Daniel;04:04:24.4 +520;Coradi Reto;03:38:27.0 +522;Kaufmann Reto;05:10:43.1 +523;Margreth Pascal;04:24:04.5 +524;Schaffner Lukas;03:35:23.0 +525;Schatt Hansjörg;04:09:32.5 +526;Schmid Ernst;02:51:07.9 +527;Soland Benjamin;03:31:59.2 +528;Meier Stefan;03:33:03.6 +777;Herzog Margrit;03:57:45.0 +801;Bartholdi Roger;04:01:38.7 +802;Lauber Gerold;03:48:01.4 +1001;Abegg Monica;03:56:33.1 +1002;Abeguile Juliette;03:33:44.5 +1004;Aerne Rusterholz Susan;04:05:15.9 +1006;Allemann Olivia;04:12:36.4 +1007;Altmann Béatrice;03:31:22.2 +1008;Altwegg Fehr Susanne;03:44:40.6 +1011;Angst Nicole;03:58:32.6 +1012;Antener Doris;03:47:33.4 +1014;Arena Michaela;04:12:27.7 +1015;Arlitt Nicole;04:10:56.4 +1016;Arnold Corinne;03:28:30.5 +1017;Arnold Ruth;03:24:42.8 +1018;Bächle Karin;03:47:12.8 +1019;Bachmann Nicole;03:47:13.8 +1024;Ballamann Gudrun;04:10:45.9 +1025;Bannier Elsbeth;03:54:42.0 +1026;Bättig Ruth;03:45:44.9 +1031;Bebi Mirjam;02:58:12.9 +1032;Béguin Sandrine;04:21:05.8 +1035;Belk Brigitte;04:04:51.2 +1036;Bellgardt Sabine;04:21:17.8 +1037;Bennett Nicole;04:53:22.1 +1038;Benz Regula;03:30:19.7 +1039;Berchtold Marion;03:45:48.0 +1040;Berchtold Silvia;05:00:58.2 +1044;Bienz Sabrina;03:54:02.0 +1045;Bissig Katharina;03:57:07.4 +1046;Blaeser Manelle;04:05:37.7 +1047;Blatter Priska;04:16:43.4 +1048;Boehm Martina;03:58:38.9 +1050;Bolfing Petra;03:09:24.2 +1051;Boos-Hautmann Andrea;04:16:17.6 +1052;Borsatti Luciana;04:39:50.9 +1053;Bosshard Erika;04:21:35.5 +1054;Bottesi Elisabeth;04:11:56.3 +1056;Brandenberg Monika;03:41:55.3 +1057;Brändle Cindy;04:07:53.1 +1062;Brülisauer Marianne;03:09:16.8 +1063;Brunner Jeannette;03:38:03.1 +1065;Bucher Yvonne;04:04:11.0 +1066;Buchser Marie-Louise;04:27:44.9 +1067;Buehler Luzia;03:37:34.9 +1069;Bugmann Franziska;04:04:06.0 +1070;Buholzer Marlis;04:14:25.0 +1071;Burgardt Sonja;03:53:53.8 +1072;Bürge-Stahel Ursula;04:21:06.2 +1075;Busque Stephanie;04:16:09.0 +1078;Calic Manda;04:01:57.7 +1079;Camathias Heidi;04:25:21.0 +1081;Casagrande Ruth;03:47:47.4 +1083;Cathomas Yvonne;04:33:50.5 +1084;Cavelti Gaby;03:32:08.7 +1086;Claivaz Patricia;04:57:11.2 +1087;Clark Joan;04:09:41.9 +1088;Clematide Renate;03:12:23.6 +1093;Cotroneo Laura;04:40:20.6 +1096;De Cristofaro Teresa;04:31:18.3 +1098;Debély-Escher Raphaela;03:56:36.2 +1099;Deck-Meier Rosie;04:00:35.9 +1102;Diethelm Melanie;04:43:21.4 +1105;Dober Karin;03:41:48.9 +1107;Dollerup Brit;03:34:36.5 +1109;Dossenbach Laura;03:48:51.4 +1112;Ducrey Marie-Claire;03:37:40.4 +1115;Ecoffey Liliane;04:26:32.2 +1120;Emmenegger Sandra;03:52:23.9 +1121;Emmenegger Tanja;03:42:35.7 +1122;Engeler-Zöllig Monika;04:01:55.1 +1123;Erismann Liliane;04:09:57.5 +1125;Eyerman Jennifer;03:27:32.3 +1127;Addea Jasmin;03:43:23.5 +1128;Fikarova Olga;04:14:49.8 +1130;Fischer Marion;04:05:54.4 +1131;Fischknecht Sibylle;03:30:21.3 +1134;Föller Fiona;04:27:12.9 +1135;Forrer Brigitte;03:43:13.4 +1137;Forster Kundert Helen;05:02:18.5 +1139;Frankiny Denise;03:13:41.3 +1140;Franz-Pfetzer Ursula;05:14:57.7 +1141;Fratila Ana-Maria;04:06:41.1 +1142;Frei Melanie;03:54:41.0 +1143;Frei Miriam;04:43:31.6 +1144;Frey Gaby;03:41:35.6 +1145;Frey Viola;04:03:08.5 +1146;Frey-Martins Eli;03:58:10.1 +1147;Friederich-Baur Marian;04:37:22.9 +1148;Friedli Gertrud;04:33:34.9 +1150;Fritzsche Sandra;04:01:35.4 +1151;Fuchs Katharina;04:16:29.9 +1152;Fuchser Karin;04:01:53.8 +1154;Furrer-Theiler Imelda;03:49:14.6 +1155;Gagliardi Ulla;04:09:39.5 +1156;Gahlinger Chantal;03:58:12.1 +1157;Gähwiler Anita;05:13:12.4 +1158;Gähwiler Liselotte;03:16:54.3 +1163;Gass Regina;04:01:53.2 +1164;Gattiker Irene;04:11:34.3 +1165;Gautschi Caroline;04:13:10.1 +1168;Gerth-Zellweger Trudi;04:12:03.6 +1169;Glaus Barbara;03:11:55.5 +1171;Gleises Alice;04:11:29.1 +1172;Gloor Isabelle;03:57:49.9 +1175;Goeree Michelle;04:57:30.0 +1176;Gomringer Nicole;03:12:56.5 +1177;Graf-Ganz Ursula;04:26:49.8 +1179;Graule Karin;03:56:29.5 +1182;Grosswiler Katrin;04:01:13.2 +1184;Guenat Raquel;03:45:58.1 +1186;Häcki Florence;03:22:38.0 +1187;Hägle Monika;04:49:05.5 +1189;Hannay Jackie;03:48:34.5 +1191;Hartmann Hanne;04:05:53.4 +1193;Haudenschild Barbara;04:11:32.2 +1194;Häusermann Anya;03:41:17.8 +1195;Häusler Eva;03:39:02.5 +1196;Hayoz Catherine;03:40:32.0 +1197;Hefti Eliane;04:23:02.4 +1200;Heim Tina;03:33:22.1 +1202;Heiniger Daniela;03:44:44.1 +1203;Heiniger Elsbeth;04:06:59.8 +1205;Hersberger-Gsell Vera;03:58:03.6 +1206;Herwig Marie-Therese;04:11:08.1 +1209;Hoffmann Dorothee;04:08:14.4 +1210;Hofmann Judith;03:39:20.5 +1213;Höglund Mikaela;02:59:13.3 +1220;Hotz Sigrist Gabriela;04:03:19.2 +1222;Huber Alice;03:45:15.5 +1224;Huber-Muhl Prisca;03:27:03.8 +1225;Hübscher Sara;04:06:30.3 +1226;Huclova Sonja;03:28:29.1 +1229;Hunn Erika;03:47:11.7 +1231;Huwyler Renate;04:56:46.2 +1232;In-Albon Wampfler Tina;02:54:59.8 +1233;Inglin Heidi;04:08:25.3 +1234;Insley-Darling Janet;04:01:18.8 +1235;Issakainen Vilma;03:59:57.6 +1238;Jeker Sabine;03:40:53.9 +1239;Jenny Esther;03:26:56.8 +1240;Jenzer Nina;04:33:15.5 +1241;Jokl Franziska;05:15:39.1 +1244;Jud Daniela;04:10:28.8 +1245;Käch Silvia;04:03:47.1 +1246;Kaderli Iris;04:15:39.5 +1247;Kaetzke Philomela;03:48:35.9 +1249;Kaltenrieder Margrit;03:25:23.4 +1250;Kamm Heidy;04:56:29.1 +1251;Käppeli Helena;03:59:34.3 +1253;Karremans Jeannette;03:33:33.0 +1255;Keller Jacqueline;03:09:10.5 +1257;Keller-Noser Nicole;04:21:59.9 +1258;Kellerhals Luzia;03:30:14.3 +1259;Kern Beatrice;04:32:41.8 +1263;Keup Verena;04:34:54.3 +1265;Kirchhof Frizzi;03:57:05.6 +1266;Kleinlaut Karin;03:56:20.7 +1273;Knuchel Patrizia;03:13:21.6 +1274;Koch Tamara;04:00:47.4 +1278;Kramer Jutta;03:57:31.5 +1281;Krebs-Stickel Sandra;04:03:03.0 +1286;Krummenacher Brigitte;04:00:52.9 +1287;Kubli Rebekka;04:07:21.4 +1288;Küffner Marianne;03:36:19.5 +1290;Kuhn Patricia;04:05:17.5 +1291;Kunz Sibylle;03:50:46.1 +1292;Lacher Priska;03:22:38.7 +1294;Landolt Bernadette;03:54:31.3 +1297;Lanner Regina;04:20:58.1 +1303;Lehner Christa;04:44:59.2 +1305;Leitmann Petra;04:13:02.7 +1309;Lewis Anne;05:07:56.6 +1315;Litzius Denise;04:16:19.8 +1316;Long Lisbeth;05:28:42.2 +1317;Loretz Manuela;03:27:22.2 +1318;Lüthi Lisa;03:52:40.7 +1320;Maag-Hegetschweiler Ch;03:32:15.8 +1322;Maggini Esther;04:35:40.9 +1324;Marti Rosmarie;04:46:36.4 +1326;Matz Brigitte;03:27:20.3 +1328;Mazzolini Mbenda Betti;04:02:53.3 +1331;Meier Gisela;04:20:56.8 +1332;Meier Isabel;03:54:29.6 +1333;Meier Jessica;03:47:11.8 +1334;Allemann Isabelle;03:20:13.7 +1335;Meister Franziska;03:43:43.8 +1336;Messmer Monika;04:43:05.6 +1338;Metzger Hübi;03:56:50.5 +1340;Michel Irène;04:40:33.3 +1343;Mlekusch Sabine;04:57:10.7 +1344;Möckli Ruth;04:55:14.3 +1345;Modoux Liliane;04:33:28.4 +1347;Mühldorfer Annette;03:58:49.9 +1348;Morf Doris;04:46:54.3 +1349;Mosetti Michelle;04:21:30.0 +1350;Muggleton Belinda;04:18:22.4 +1351;Bärtsch Edith;03:40:14.9 +1354;Müller Jennifer;03:29:58.2 +1355;Müller Sandra;03:31:42.8 +1359;Näf Esther;04:04:42.8 +1360;Nakanishi Yoshiko;04:26:51.9 +1361;Nardiello Selina;03:43:57.5 +1363;Neidhart Jana;03:36:45.1 +1365;Nelson Christen;03:24:28.6 +1368;Baumann Flavia;03:50:36.9 +1369;Neri Claudia;03:52:57.9 +1370;Neustadt Rita;03:35:23.3 +1372;Niederberger Fränzi;03:54:18.1 +1373;Niederberger Trudi;04:39:30.0 +1374;Niederhauser Dami;04:14:27.6 +1375;Nielsen Birgitte;03:44:22.1 +1378;O'Neill Annemarie;04:10:48.7 +1379;Odenbach Mary;03:50:44.8 +1382;Oneta Cristina;04:07:10.3 +1383;Ossowska Maria;03:57:34.6 +1384;Padberg Barbara;03:46:42.8 +1385;Paganini Chiara;04:16:43.3 +1390;Praz Maria;04:26:42.8 +1393;Pulver Barbara;03:21:09.7 +1395;Purtschert Amanda;04:07:03.6 +1396;Rada Marianne;03:51:41.6 +1398;Rakic Silvia;04:25:10.4 +1400;Rechsteiner Sandra;03:23:42.4 +1401;Recine Lisa;04:33:10.5 +1402;Reinhold Irene;03:57:05.1 +1405;Renggli Conny;04:23:09.5 +1407;Reusser Christine;04:08:57.5 +1408;Rhomberg Birgitta;03:29:49.0 +1409;Richards Shola;05:05:02.8 +1410;Riga Petra;03:30:53.5 +1413;Ringger Christa;04:14:44.5 +1414;Rippstein Hilde;04:02:11.3 +1415;Riva Anita;04:57:03.1 +1418;Rosenast Andrea;03:33:20.5 +1419;Rosenberger Thekla;04:03:36.2 +1420;Rossi Marianne;03:43:50.4 +1421;Roth Barbara;04:38:53.2 +1424;Rüeger Riikka;04:10:10.9 +1425;Rüegg Kim;04:11:34.6 +1426;Ruesch Caroline;04:28:02.8 +1429;Russenberger Doris;03:13:34.4 +1430;Russo Andrea;04:41:49.5 +1431;Rutishauser Cornelia;04:28:46.0 +1436;Saly Katrin;03:31:23.0 +1437;Schaub Andrea;04:08:39.9 +1438;Scheiwiller Margrit;05:03:02.2 +1440;Schenkel Gabriela;03:34:02.3 +1441;Schenkel Karin;04:13:08.8 +1442;Scherer Cornelia;04:27:02.8 +1445;Schild-Leuthold Juliet;02:57:44.4 +1452;Schneider Anne;04:01:13.0 +1453;Schneider Monica;03:59:27.5 +1455;Schölly Deborah;04:39:56.0 +1458;Schudel Jacqueline;04:27:00.3 +1459;Schülin Sabina;03:47:19.8 +1461;Schwander Gabriela;04:14:55.3 +1463;Schwarzentruber Cornel;03:45:09.2 +1465;Schwegler Nicole;03:42:48.1 +1466;Schwerzmann Michèle;03:17:01.7 +1470;Seiler Sonja;03:09:36.5 +1471;Seitz Judith;04:00:13.6 +1472;Senn Claudia;03:45:32.6 +1474;Siegenthaler Brigitte;03:48:24.8 +1475;Siegfried Anita;04:14:01.9 +1476;Sigrist Jeannette;03:36:39.8 +1477;Simmen Sabine;03:24:12.0 +1479;Skreckova Denisa;03:51:43.8 +1482;Smith Sarah;03:52:56.6 +1483;Sobrino Karen;03:26:49.4 +1488;Stadler Eufemia;04:16:10.4 +1489;Stäger Marianne;03:46:56.2 +1491;Stampfer Brigitte;04:19:50.8 +1496;Steiger Birgit;04:31:36.7 +1497;Steimann Dana;04:48:23.3 +1498;Steiner Marianne;03:12:17.5 +1499;Stettler-Brotschi Clau;04:13:17.0 +1500;Stich Isabelle;04:11:38.4 +1501;Stöckli Jolanda;04:04:16.1 +1502;Stöckli Mara;03:46:21.8 +1504;Streule Eliane;04:28:34.0 +1506;Strub Kunz Jrène;03:56:17.7 +1507;Studer Cornelia;03:29:55.4 +1508;Surber Tanja;03:33:44.2 +1509;Symonds Rebecca;03:54:16.6 +1510;Szlavik Vanda;03:52:35.9 +1511;Tan Siew;04:40:39.9 +1513;Tellefsen Tina;03:28:51.4 +1514;Theiler Nadia;04:04:38.6 +1515;Tholen Anna;03:54:26.7 +1516;Thoma Erika;03:53:09.7 +1517;Tiebout Isabelle;03:53:32.2 +1518;Tietz Julia;03:16:22.2 +1520;Toledano Marisol;04:12:36.5 +1521;Toumani Jenna;03:41:53.4 +1526;Tricarico Gabi;03:07:35.1 +1528;Trovato Carmela;03:48:41.6 +1531;Ulrich Katharina;03:47:35.1 +1532;Urbach Deborah;04:27:53.8 +1534;van Rijs Ursula;04:57:03.0 +1535;Vasilache Cristina;03:49:57.6 +1536;Vermeulen Helene;04:37:14.6 +1539;Villiger Sonja;04:04:59.3 +1541;Vocke Daniela;04:27:03.6 +1542;Voegeli Nico;03:55:29.7 +1543;Voigt Cornelia;04:29:36.7 +1544;Volfschütz Simona;03:43:40.1 +1545;von Mandach Annette;03:40:33.3 +1546;von Niederhäusern Cris;04:39:56.5 +1547;Vopat Johanna;04:08:22.7 +1548;Wachter Karin D.;03:38:58.7 +1549;Wackernagel Britta;04:23:01.6 +1550;Walder Darja;03:57:22.1 +1551;Wartenberg Alexandra;04:39:44.3 +1552;Washington Caroline;04:36:48.4 +1554;Weber Tosca;04:33:11.8 +1555;Weiersmüller Jacquelin;04:10:53.8 +1556;Weiler Katja;04:42:27.7 +1558;Welbergen Louisa;03:08:03.9 +1561;Werner Stephanie;03:40:08.7 +1562;Werthmüller Gabriele;03:09:45.3 +1564;Wettstein Edith;04:19:31.1 +1565;Wey Mirjam;04:16:23.0 +1566;Widmer Monika;03:22:33.7 +1567;Wiedmer Christine;04:09:04.6 +1569;Wild Irene;04:40:20.9 +1571;Winklehner Anna;03:50:53.8 +1574;Wittwer Gertrud;04:08:44.0 +1576;Wyler Karin;03:35:51.3 +1577;Wyss Ingrid;04:44:13.8 +1578;Wyss Sonja;04:07:25.2 +1580;Zaugg Sibil;03:51:58.2 +1581;Zeller Seline;03:47:18.3 +1582;Zenger Daniela;04:26:55.5 +1583;Ziegler Isabella;03:41:15.8 +1585;Zingg Karin;03:16:04.1 +1586;Zuber Helen;03:36:41.9 +1587;Zuber Sabrina;04:35:32.4 +1589;Zwicker Selinda;03:26:18.7 +1592;Brazerol Carmen;03:37:38.4 +1593;Bucher Sylvie;03:51:22.5 +1597;Freiburghaus Rahel;03:53:47.1 +1598;Götsch Helen;03:51:34.2 +1599;Güntzel Sara;03:25:25.7 +1600;Gurtner Susanne;03:52:40.0 +1602;Hauser-Ruckli Cornelia;03:39:46.5 +1603;Heimbs Anette;04:36:24.5 +1606;Inauen Fränzi;03:14:21.5 +1609;Jaggi Theres;04:55:33.0 +1610;Janser Susanne;04:13:22.6 +1611;Jörg Regina;03:43:22.1 +1612;Kern Alexandra;04:41:12.4 +1613;Kolhaupt Tanja;04:26:48.7 +1614;Landolt Christina;04:12:17.6 +1616;Lienhard Sonja;03:30:23.9 +1620;Müntener Brigitte;03:55:51.9 +1622;Ochieng Pernet Awilo;04:17:59.9 +1624;Peer Sandy;03:31:59.1 +1625;Polinelli Christina;03:34:40.5 +1626;Queralto Cristina;03:50:26.5 +1627;Ramsay Julie;04:54:41.0 +1628;Röthisberger Céline;04:21:20.7 +1629;Rüegger Andrea;04:31:24.6 +1630;Rütimann Gabriela;03:51:33.9 +1631;Scheitlin Julie;04:11:09.3 +1632;Schiess Gabriela;03:23:41.8 +1633;Schillig-Planzer Stefa;03:04:46.4 +1635;Schlegel Alexandra;03:24:22.5 +1636;Schmid Catherine;03:56:28.3 +1637;Schmid Conny;03:08:27.9 +1638;Schrott Andrea;03:53:30.9 +1639;Schumacher Sandra;03:53:25.1 +1640;Senn Brigitte;04:09:12.6 +1642;Sommer Daniela;03:04:31.1 +1643;Sonderegger Tanja;03:20:13.9 +1644;Stalder Caroline;03:44:15.9 +1645;Steiner Denise;04:48:42.2 +1646;Stoppiello Banu;04:27:05.5 +1647;Stucki Sonja;03:27:03.9 +1648;Tambini Irma;03:50:24.4 +1649;Tangorra Sabrina;04:21:32.4 +1650;Tschannen Nathalie;04:27:15.2 +1655;Wiederkehr Denise;04:41:12.9 +1656;Zähnler Bircher Silvia;04:27:22.4 +1657;Zanetti Windegger Lara;03:26:56.9 +1658;Zehnder Corinne;04:42:04.4 +1660;Antila Heidi;05:04:33.0 +1663;Flockerzi Martina;04:03:55.2 +1664;Kieran Rose;04:05:28.3 +1665;Merz Beatrix;03:40:06.9 +1666;Minard Delphine;04:14:28.2 +1668;Schoch Katharina;04:12:52.0 +1669;Steiger Susanne;04:12:15.1 +1670;von Rotz Madeleine;03:58:13.6 +1672;Fischer Muriel;04:33:00.6 +1674;Köpfli Stephanie;03:49:57.6 +1952;Walser Hans;03:56:38.0 +2001;Abderhalden Claude;03:41:42.6 +2002;Abdo Osman;02:58:00.5 +2003;Abegglen Timon;03:58:34.4 +2004;Abgottspon Benjamin;04:50:43.5 +2007;Achermann Alois;03:58:12.6 +2008;Ackermann Michael;03:18:34.7 +2009;Adler Ruedi;03:31:56.7 +2010;Adler Sandro;04:27:06.5 +2012;Aebersold Thomas;04:14:11.4 +2013;Aebi Hansjörg;04:12:29.4 +2015;Aeby Pascal;03:48:08.2 +2016;Aegerter Michael;04:45:55.9 +2017;Aeschlimann Martin;03:49:39.1 +2018;Affentranger Fernando;03:58:24.0 +2020;Agostini Bernardo;03:51:52.9 +2021;Ait Bahassou Mohamed;03:05:18.4 +2022;Akeret Martin;02:59:54.0 +2023;Akermann Elmar;04:13:06.1 +2025;Albers Vincent;03:14:20.7 +2026;Albin Basil;04:10:33.7 +2027;Albin Norbert;03:56:43.3 +2028;Albin Silvan;04:10:34.6 +2030;Alder Daniel;04:41:19.3 +2031;Alder Ernesto;03:59:27.8 +2032;Alfassi Sami;03:48:59.5 +2033;Allemann Patrick;04:18:55.4 +2036;Alpiger Patrick Michae;03:55:21.8 +2039;Amacker Hugo;03:42:20.5 +2041;Ambühl Dany;04:33:00.9 +2042;Amstalden Guido;03:50:47.7 +2043;Amstutz Jean-Luc;03:19:09.6 +2046;Andenmatten Cyril;03:43:33.6 +2048;Anderegg Kurt;03:54:38.2 +2050;Andres Peter Thomas;03:20:56.6 +2051;Andrews John;03:33:53.3 +2054;Anneler Albert;04:59:47.1 +2055;Antweiler Ralf;03:13:22.8 +2056;Arbenz Beat;03:42:12.2 +2058;Aretano Aldo;04:30:15.4 +2060;Arm Ueli;03:32:38.9 +2063;Arnold Philipp;02:41:46.9 +2064;Artan Ayhan;03:16:46.4 +2067;Aurag Daniel;03:45:18.9 +2070;Azzato Remo;04:20:56.2 +2071;Bäbler Ruedi;04:32:46.8 +2073;Bachmann Markus;03:01:39.2 +2074;Bachmann Markus;03:56:19.8 +2075;Bachmann Rolf;03:49:30.5 +2076;Bächthold Jj;04:20:38.4 +2077;Baco Uwe;03:27:34.1 +2078;Bader Sandro;03:45:03.5 +2080;Badertscher Christian;03:40:18.2 +2081;Badorff Cornel;03:27:32.8 +2082;Baer Tobias;03:16:28.8 +2083;Baeriswyl René;04:07:47.5 +2084;Bahl Alexander;04:26:05.3 +2085;Bahner Bertram;03:20:11.2 +2087;Bako Barnabas;04:34:08.5 +2088;Bamert Rafael;03:32:01.0 +2089;Bangerter Adrian;03:08:16.8 +2090;Bannier Marcel;03:39:04.9 +2091;Bänninger Andy;03:17:49.5 +2096;Bärtsch Jonas;04:26:32.4 +2097;Baschera Matteo;03:39:47.5 +2100;Basler Michael;03:45:33.0 +2105;Bauer Jürgen;04:17:56.1 +2106;Bauer Mathias;03:35:49.3 +2107;Bauert Stephan;03:20:28.6 +2108;Baumann David;03:13:50.4 +2109;Baumann Reto;03:23:53.3 +2110;Baumgartner Benjamin;03:11:34.9 +2111;Baumgartner Christoph;03:02:43.1 +2112;Colombani Jonathan;03:02:45.8 +2113;Baumgartner Philipp;03:14:08.0 +2115;Bäumler Werner;03:59:00.8 +2116;Baumstark Achim;03:24:55.8 +2117;Baur Sigrist Dieter;04:00:33.8 +2118;Bayer Claudio;04:13:54.3 +2119;Bebi Michael;04:30:52.3 +2123;Beeler Karl;02:48:41.2 +2124;Beeli Gian;04:27:39.3 +2125;Beer Patrick;04:22:37.2 +2127;Beglinger Michael;04:27:45.7 +2128;Beglinger Urs;03:18:09.9 +2129;Belk Thomas;04:26:06.6 +2131;Benfatto Alessandro;03:42:59.3 +2133;Benz Andy;02:48:55.1 +2135;Berg Christian;03:27:36.3 +2136;Berger Gedeon;04:12:06.3 +2137;Berger Olivier;03:44:03.2 +2138;Berger Walo;04:08:34.0 +2141;Bernet Heiri;03:03:49.8 +2142;Bernet Rolf;03:51:10.1 +2143;Bernhard Daniel;03:37:57.5 +2144;Bernhardsgrütter Pitsc;03:27:47.0 +2145;Bernotto Stefano;03:55:01.3 +2147;Bertozzi Silvio;04:25:58.6 +2148;Berz Fabian;03:26:17.0 +2149;Betschon Stefan;03:45:15.6 +2150;Bettini Enrico;03:49:03.2 +2152;Biber Alex;03:40:45.8 +2153;Bichler Christoph;03:31:24.9 +2154;Biedermann Daniel;03:03:17.0 +2155;Bieler Walter;03:23:17.7 +2156;Bieri Walter;03:20:22.7 +2158;Neiger Lukas;03:24:45.9 +2159;Bigler Gilles;03:45:09.7 +2161;Billeter Jürg;03:33:56.5 +2163;Binder Walter;03:55:38.1 +2164;Binggeli Hansjörg;04:26:21.7 +2166;Birbaum Patrice;03:35:36.8 +2168;Birrer Hanspeter;04:38:21.7 +2171;Bischofberger Guido;02:54:27.2 +2174;Bissig Hans;03:34:42.2 +2175;Bissoli Benno;03:44:17.8 +2177;Bitterlin Stephan;04:22:11.4 +2179;Blaser Hanspeter;04:18:12.7 +2180;Blaser Sascha;03:14:32.3 +2182;Blattmann Heiner;02:59:53.0 +2184;Bleiker Harry;04:01:36.3 +2185;Blöchlinger Fabian;02:58:56.8 +2186;Blumer Philipp;03:28:15.9 +2187;Blumer Renato;04:36:55.7 +2188;Blumer Sascha;03:43:56.6 +2192;Bodenmann Andreas;02:55:28.6 +2193;Bodenmann Hanspeter;03:40:22.0 +2194;Bodmer David;04:25:48.7 +2196;Bohnet Christophe;03:04:42.0 +2197;Bohnet Nicolas;03:04:07.4 +2198;Boller Simon;03:45:47.8 +2199;Bolli Kilian;03:30:05.9 +2200;Bolliger Bruno;04:28:09.2 +2201;Bollinger Beat;03:39:58.4 +2202;Bolt Thomas;02:55:14.0 +2203;Bommer Hans;04:15:28.9 +2205;Böniger-Prüfer Michael;03:47:21.1 +2206;Bonner John;04:16:28.9 +2207;Bonvin Jean-Charles;03:04:59.5 +2208;Bonvin John;03:59:43.3 +2209;Born Leo;03:29:51.8 +2210;Bortolin Sergio;04:21:40.2 +2212;Bosshard Stefan;03:23:59.4 +2214;Bottecchi Diego;03:32:12.4 +2219;Boulter Robert;02:59:49.3 +2221;Boutellier René;02:41:54.7 +2223;Bozi Imre;03:20:05.5 +2225;Braathen Einar H;04:57:19.7 +2227;Bracher Ueli;03:28:21.2 +2228;Brachetto Pascal;03:45:04.5 +2231;Brändli Jakob;04:08:40.6 +2232;Brändli Urs-Beat;03:09:05.9 +2233;Brandt Maximilian;03:58:13.5 +2234;Brandt Simppa;03:15:55.2 +2238;Brecht Jens;03:37:16.1 +2240;Breimer Mans;03:40:50.6 +2245;Bressa Massimo;03:46:41.6 +2247;Brotz Sandro;03:42:38.4 +2250;Bruderer Daniel;04:27:11.2 +2251;Brühwiler Rolf;02:59:26.3 +2252;Brüllmann David;03:57:33.8 +2253;Brunhart Jakob;03:16:31.0 +2254;Brunner Alfred;03:29:59.2 +2255;Brunner André;03:21:22.6 +2256;Brunner Jan;03:36:53.6 +2257;Brunner Johannes;02:56:57.4 +2259;Brunner Reinhard;04:23:31.4 +2260;Bruno Emanuele;04:12:47.4 +2261;Bruns Wolfgang;03:33:18.8 +2262;Brunschweiler Marco;03:18:51.7 +2266;Bucher Johannes;03:10:20.7 +2267;Büchler Fredi;05:21:01.2 +2269;Buchli Urs;04:52:55.4 +2271;Buchser Thomas;03:41:24.0 +2272;Buck Andreas;04:32:20.4 +2274;Büeler Gerry;03:36:59.5 +2276;Bügükkaya Abuzer;03:14:12.4 +2277;Bühler D.J Wale;03:59:32.5 +2278;Bühler Raphael;03:20:21.5 +2280;Bührer John;03:43:03.4 +2282;Bünter Jean Pierre;04:15:52.4 +2284;Burger Willi;03:51:02.3 +2285;Bürgi Simon;03:09:10.3 +2286;Bürgis Stefan;03:28:37.3 +2287;Burkhard Beat;02:39:47.5 +2288;Burkhard Roger;03:45:58.0 +2289;Burkhardt Ralf;03:46:35.5 +2290;Burns Kevin;03:51:19.0 +2291;Burri Christian;03:24:58.4 +2293;Buser Thomas;04:05:20.1 +2295;Buslau Michael;04:33:12.4 +2296;Bussinger Manuel;04:32:51.2 +2297;Bussmann Oliver;02:58:43.7 +2298;Butty Stéphane;02:59:31.2 +2301;Caflisch Amedeo;03:14:34.3 +2302;Caillet Cédric;03:21:40.0 +2304;Calame Louis;03:35:20.8 +2305;Calcagni Carlo;03:52:42.3 +2306;Calendo Ciro;04:32:47.0 +2307;Camathias Ulrich;05:21:11.8 +2308;Camenisch Glauco;03:25:24.3 +2309;Camenzind Markus;03:00:07.2 +2310;Caprez Andrea;02:54:43.7 +2311;Carbonara Toni;04:16:44.0 +2312;Carbotti Franco;03:35:47.3 +2314;Caretta Claudio;04:12:04.8 +2317;Carminati Walter;03:51:24.1 +2319;Caruso Renato;04:29:06.9 +2320;Casanovas Ramon;03:24:06.5 +2321;Castella Vincent;03:13:41.1 +2322;Castiglioni Luca;03:47:45.2 +2323;Casto Salvatore;05:25:47.6 +2325;Caudwell David;04:36:27.3 +2327;Cavegn Werner;03:45:44.1 +2328;Caviezel Andrin;03:41:56.6 +2329;Ceccarini Massimo;03:26:18.4 +2330;Ceriani Angelo;04:25:25.3 +2331;Cester Marc;03:03:44.4 +2333;Chapman Brian;04:14:02.5 +2335;Chassot Pierre-André;03:43:24.5 +2336;Chatila Rico;03:26:02.0 +2337;Chatzichrisafis Nikos;03:33:49.6 +2338;Chevalley Raymond;04:22:45.3 +2339;Chiller-Glaus Michael;03:53:35.8 +2340;Choffat Yves;03:17:39.2 +2341;Choukroun Daniel;02:45:27.4 +2342;Christ Tobias;03:30:40.3 +2343;Christiner Mario;02:48:10.6 +2347;Clavadetscher Georg;04:23:21.2 +2348;Clesle Hanspeter;04:32:43.1 +2349;Cloetta Andri;03:41:44.0 +2353;Collenberg Reto;03:39:01.9 +2355;Colvin Graham;03:20:35.2 +2356;Conrad Alex;04:29:04.0 +2360;Cooke Sam;03:28:23.2 +2361;Corbisiero Salvatore;03:34:25.0 +2362;Cortelezzi Paolo;03:40:05.0 +2363;Cottet Laurent;03:23:56.8 +2364;Crespo Ricardo;04:49:35.9 +2365;Crettenand Olivier;04:25:31.7 +2366;Crisafulli Sebastiano;03:26:57.1 +2368;Curda Josef;04:37:56.2 +2369;Curda Tobias;03:40:33.1 +2371;Cusack John-Paul;03:38:38.3 +2372;D'Amato Gionni;03:52:25.2 +2373;Da Col Claudio;03:31:27.0 +2374;Da Costa Fernando;03:05:47.2 +2376;Daly Paul;04:21:31.1 +2377;Dambach René;03:22:06.3 +2380;Danz Martin;03:52:38.9 +2381;Däpp Willi;04:17:14.8 +2382;Dariz Michele;03:51:17.9 +2383;Daschmann Volker;04:49:31.1 +2385;De Faria Patrick;04:43:32.0 +2387;De Martin Marco;02:49:12.6 +2388;De Murga John;04:58:21.6 +2389;De Plinval Pierre-Loui;03:41:55.6 +2390;De Toffol Simon;04:14:18.7 +2391;De Wit Guido;03:52:16.4 +2393;Degen Lukas;02:58:50.8 +2395;Della Badia Antonio;03:24:35.6 +2396;Delley Alain;03:20:38.0 +2397;Dentskevich Andrew;03:27:49.7 +2399;Dessimoz Philippe;03:09:13.0 +2400;Desteffani Jörg;03:09:27.4 +2402;Dhom Michael;03:03:48.4 +2403;Di Giorgio Benedetto;04:04:34.1 +2404;Di Mauro Philipp;04:01:57.7 +2406;Diallo Ousmane;03:23:35.8 +2407;Dick Markus;03:21:35.5 +2409;Diener Erwin;02:55:16.4 +2410;Diethelm Karl;03:53:47.7 +2411;Dietrich Rainer;03:00:12.0 +2413;Dillner Tomas;03:03:47.3 +2414;Diviney Craig;03:20:23.3 +2416;Döbeli Philipp;03:05:55.6 +2417;Dober Meinrad;03:38:30.9 +2423;Dooney Barry;04:44:52.8 +2425;Doubman Jay;02:57:42.2 +2429;Downey Denis;03:53:09.6 +2430;Drayton Jeffrey;03:43:02.5 +2432;Dreier Daniel;03:51:25.7 +2433;Dreier Matthias;03:18:07.5 +2435;Dübi Roland;04:05:24.0 +2436;Dubugnon Christian;03:27:29.5 +2437;Dudle Cornel;03:35:12.7 +2438;Duerr Hampi;03:36:35.9 +2440;Dummermuth Jürg;03:09:28.3 +2443;Düringer Michael;03:39:12.5 +2444;Durrer Daniel;04:27:31.7 +2447;Dürst Michael;03:12:56.5 +2448;Duschl Martin;04:25:17.7 +2451;Dütschler Joel;03:06:38.0 +2453;Eberhard Thomas;04:05:07.0 +2455;Eberle Paul;03:44:00.7 +2457;Eckard Christophe;03:47:58.1 +2458;Eckert Clemens;03:24:09.5 +2459;Eckhardt Jürg;03:42:48.4 +2460;Eggenschwiler Bernhard;02:44:49.4 +2461;Eggenschwiler Christop;02:59:47.6 +2462;Eggenschwiler Denis;03:04:59.8 +2466;Egidio Arturo;03:29:56.5 +2467;Egli Martin;03:47:10.6 +2468;Egli Peter;04:21:32.1 +2469;Egli Sven;03:27:58.8 +2471;Eiche Francis;04:06:02.4 +2472;Eichelberger Pascal;04:01:48.3 +2474;Eichhorn Beat;03:16:51.8 +2478;Eisenlohr Frank;03:21:41.6 +2479;Eisner Hannes;03:28:45.2 +2480;Ellinger Thomas;04:11:31.5 +2483;Elmer Markus;03:07:08.3 +2484;Emert Frank;04:29:08.6 +2491;Eppler Beat;03:09:38.4 +2493;Erb Peter;03:10:21.4 +2494;Erb Thomas;03:57:37.7 +2496;Erian Tom;02:57:11.9 +2498;Ernst Andreas;03:38:39.2 +2499;Ernst Andreas;03:47:40.6 +2501;Ettlinger Claudius;03:49:48.9 +2502;Eugster Marcel;02:59:33.6 +2503;Eugster Tobias;03:44:23.8 +2504;Faccoli Gabriele;03:37:58.8 +2505;Faerber Philipp;02:50:59.7 +2507;Fahrni Andreas;03:22:49.6 +2510;Falconer John;03:49:34.7 +2511;Falcy Yves-Alain;04:23:41.0 +2512;Falter Harald;03:19:52.3 +2513;Fanger Adrian;04:11:25.3 +2514;Fankhauser Martin;03:36:21.8 +2515;Farner Kurt;04:41:50.4 +2516;Farner Martin;03:51:54.1 +2517;Farner René;03:29:55.9 +2518;Farner Roger;03:51:55.2 +2519;Fasel Samuel;03:49:40.2 +2520;Fasnacht Markus;03:17:36.8 +2521;Fässler Christoph;03:57:08.5 +2522;Fässler Lukas;04:01:23.3 +2524;Fatio Didier;03:16:59.1 +2525;Fattorini Leonardo;02:54:53.3 +2526;Fausch Jörg;03:42:54.5 +2529;Fehr Adrian;03:32:24.9 +2530;Fehr Harry;03:09:24.7 +2531;Fehr Kurt;04:25:06.1 +2532;Fehr Matthias;03:34:08.9 +2534;Feigl Christopher;03:29:22.5 +2535;Fejes Stefan;03:20:33.5 +2536;Fejry Khalil;03:31:07.1 +2537;Felchlin Walter;04:18:13.9 +2538;Felder Oliver;03:57:32.9 +2539;Felder Willhelm;04:27:39.1 +2542;Fernandes Casimiro;03:04:51.4 +2543;Fernandez Antonio;03:22:54.5 +2545;Ferraiuolo Salvatore;03:40:18.9 +2546;Ferrini Mattia;04:13:05.9 +2547;Fetzer Roland;03:00:23.0 +2550;Fior Guglielmo;02:59:38.8 +2552;Fischer Cosy;04:26:53.8 +2553;Fischer Felix;03:34:08.0 +2555;Fischer Kai;02:43:15.0 +2557;Fischer Oliver;03:10:50.3 +2558;Flach Roland;03:28:52.0 +2559;Fleischer Thomas;03:19:07.9 +2560;Fleischhacker Cris;04:22:00.4 +2561;Fleischmann Rene;03:37:43.1 +2562;Fleischmann Sascha;03:28:45.9 +2565;Flueckiger Joerg;03:55:45.3 +2566;Flum Michael;03:29:34.5 +2567;Föllmi Daniel;02:47:15.8 +2568;Folly Olivier;03:08:24.4 +2569;Fontana Patrick;04:49:09.1 +2570;Forlesi Maurice;04:00:31.6 +2571;Forney Jean-Francois;03:50:11.3 +2572;Forrer Andi;03:57:35.8 +2573;Forrer Markus;03:43:13.6 +2574;Forrer Thomas;03:26:44.2 +2575;Forster Urs;03:56:10.2 +2576;Fort Pierre-Andre;03:43:23.0 +2577;Fortgens Erik;03:12:57.2 +2578;Foster Cheran;04:09:16.7 +2579;Foster Kevin;03:39:59.2 +2580;Fraefel Beat;03:39:42.4 +2581;Fraefel Mario;03:42:55.1 +2582;Franck Andreas;03:19:31.1 +2583;Francois Herve;03:56:16.3 +2587;Frehner Jakob;05:29:09.2 +2588;Frei Christoph;03:34:04.8 +2589;Frei Marc;03:37:59.3 +2590;Frei Martin;02:44:02.8 +2591;Frei Othmar;03:59:15.3 +2592;Frei Pascal;03:34:47.5 +2593;Frei Thomas;03:28:06.0 +2595;Freisler Peter;04:06:40.1 +2597;Fretz Willi;04:35:35.7 +2599;Frey Dominik;04:00:28.3 +2600;Frey Heini;03:56:30.0 +2601;Frey Stefan;03:51:14.3 +2604;Frieden Thomas;02:32:25.2 +2605;Friederich Mathias;03:26:38.5 +2607;Friedli Jürg;03:39:09.0 +2609;Frischknecht Fritz;03:27:40.5 +2611;Fritsche Lukas;03:29:27.6 +2612;Fritschi Michael;03:19:32.7 +2615;Fuchs Christian;02:58:20.9 +2616;Fuchs Heinz;04:23:57.8 +2617;Fuchs Markus;04:28:36.3 +2618;Fuchs Peter;04:31:50.6 +2620;Fürer Karl;03:30:37.6 +2621;Furrer Felix;03:38:12.0 +2622;Fürst René;03:25:04.1 +2623;Fusco Carlo;03:20:24.2 +2625;Gabathuler Tobias;03:35:08.2 +2626;Gabriel Daniel;03:54:27.7 +2627;Gächter Roland;03:22:01.8 +2628;Gadient Hans;03:53:31.1 +2629;Gähwiler Hanspeter;03:03:34.2 +2631;Galliker Philipp;03:28:25.2 +2632;Gambino Dario;04:12:56.5 +2633;Gameiro Antonio;02:56:40.2 +2635;Gantenbein Silvan;04:45:52.8 +2637;Gartmann Urs;03:34:59.7 +2638;Gasser Marc;03:44:28.9 +2640;Gast Fritz;03:36:32.3 +2641;Gattiker Roger;04:12:59.8 +2643;Gaussmann Andreas;02:49:19.1 +2646;Geiger Christian;03:30:05.2 +2647;Geissbühler Andreas;03:12:39.6 +2649;Geissmann Walter;03:27:55.4 +2651;Genné Daniel;03:44:54.1 +2653;Gerber Bernhard;04:11:50.8 +2654;Gerber Roger;02:49:17.7 +2655;Gerber Thomas;03:14:33.7 +2657;Gerlof Wolfram;04:36:04.7 +2658;Germain Jean-Pierre;05:05:54.1 +2659;Germann Pascal;03:24:18.5 +2662;Gerster Richard;03:57:09.8 +2664;Gertsch Marcel;02:52:23.0 +2665;Gertsch Ralph;04:04:17.7 +2666;Gertsch Silvan;04:09:01.0 +2667;Gertschen Mike;04:14:45.5 +2668;Gex-Collet Pierre-Jose;03:01:05.9 +2669;Geyer Marc;04:48:45.7 +2673;Gibel Richard;03:47:26.8 +2674;Gigandet Sylvain;03:01:43.5 +2677;Giordano Lorenz;03:33:03.4 +2678;Girsberger Martin;03:49:07.5 +2679;Gisler Beat;02:57:43.5 +2680;Gisler Jan;03:05:52.6 +2681;Gisler Karl;02:46:40.4 +2684;Glässner Marcel;03:58:25.3 +2685;Gleitz Robert;03:29:13.4 +2686;Gloden Alain;03:42:54.6 +2689;Gnos Renato;03:51:49.2 +2693;Gomez David;04:38:57.5 +2694;Gorgerat Jean-Philippe;03:10:36.4 +2696;Gosteli Hansjörg;02:56:59.9 +2697;Gosteli Oliver José;03:07:01.8 +2698;Goto Fumihiko;03:28:24.1 +2700;Gottwald Martin;03:53:30.7 +2701;Götz Markus;03:59:00.6 +2702;Grab Manfred;03:25:34.2 +2703;Graber Marcel;03:10:08.0 +2706;Graf Daniel;03:48:08.4 +2708;Graf Klaus;03:29:26.8 +2710;Granges Thierry;03:08:17.8 +2711;Grausgruber Johannes;04:21:27.5 +2713;Greil Maeck;03:13:35.2 +2714;Greter Arno;04:19:22.0 +2717;Grisoni Gérald;03:50:38.4 +2718;Gröbli Adrian;02:42:11.6 +2721;Grossmann Frank;03:06:51.7 +2722;Grubenmann Hens;03:42:41.4 +2723;Gruber Bernhard;03:48:54.7 +2724;Grüebler Thomas;04:28:45.2 +2725;Grujcic Dejan;03:59:53.0 +2726;Grundmann Oliver;03:56:49.0 +2727;Grüter André;02:58:56.1 +2728;Grütter Matthias;03:04:15.1 +2729;Gubler Daniel;03:23:50.2 +2730;Gubler Peter;05:00:05.7 +2731;Gückel Christian;03:18:41.5 +2733;Gudehus Kim;03:34:02.0 +2734;Guex Stéphane;03:07:06.1 +2735;Gugelmann René;03:23:28.6 +2736;Guidon Andri;03:58:33.8 +2737;Guignard Philippe;03:48:33.7 +2739;Guillet Marc-Antoine;03:42:50.7 +2740;Günthard Huldrych;03:44:06.1 +2741;Gunti Markus;03:14:02.3 +2744;Gut Daniel;03:24:08.6 +2747;Gutjahr Rolf;02:58:02.6 +2748;Gutzwiller Mark;03:48:16.6 +2753;Gyger Peter;03:05:00.1 +2754;Gygli Walter;03:03:59.7 +2755;Gysin Ernst;05:07:37.7 +2757;Ha Thomas;03:41:22.8 +2759;Haas Ingo;03:05:20.4 +2761;Hablützel Roman;02:55:57.3 +2762;Hadorn Jonas;04:49:10.6 +2764;Haefeli Stephan;03:48:07.5 +2766;Häfliger Peter;03:28:20.5 +2767;Häfliger Rolf;03:44:11.9 +2769;Hähni Marcel;04:10:06.0 +2770;Haider Martin;03:35:02.2 +2773;Halvorsroed Jan;04:30:52.1 +2776;Hänggi Gerold;04:26:09.0 +2777;Häni Stephan;03:13:50.4 +2778;Hannah Jeremy;03:14:27.7 +2779;Hannay Mark;03:46:52.0 +2780;Hansen Kjetil Hoie;03:53:12.0 +2781;Hansmann Daniel;03:26:44.7 +2783;Härri Markus;02:56:18.7 +2789;Haselbach Stefan;03:15:22.1 +2790;Häsler Daniel;03:40:47.6 +2791;Hässig Ralph;03:45:53.1 +2792;Hassler Daniel;03:06:09.3 +2794;Haubensack André;03:54:47.5 +2796;Haukaas Magnus Solli;04:02:41.9 +2797;Hausammann Urs;03:35:21.0 +2798;Hauser Daniel;03:01:58.0 +2799;Hauser Olivier;04:01:12.2 +2800;Hauser Thomas;03:00:12.2 +2801;Hauser Thomas;03:05:45.6 +2802;Häusermann Christian;03:10:43.9 +2804;Haussner Enrico;03:10:05.3 +2806;Heckendorn Felix;04:54:02.0 +2809;Heer Dominik;03:49:37.4 +2810;Hefti Gian-Franco;02:59:32.3 +2812;Hegglin Marco;03:52:19.2 +2813;Hegglin Markus;03:30:57.7 +2814;Hegner Norbert;02:38:11.0 +2815;Heide Uwe;04:15:06.3 +2820;Heiniger Peter;03:46:31.7 +2821;Heiniger Stefan;03:52:21.0 +2822;Heinz Max;03:33:11.5 +2825;Helbling Daniel;03:21:41.8 +2826;Helbling Felix;03:48:07.8 +2827;Held Michel;03:20:14.4 +2832;Henle Lukas;03:49:53.3 +2838;Herger Anton;04:11:29.0 +2840;Herrmann Daniel;03:07:48.1 +2841;Hersche Marcel;04:48:12.9 +2842;Herz Daniel;03:49:14.2 +2843;Hess Dieter;03:24:08.5 +2844;Hess Florian;04:13:36.8 +2846;Hess Michael;03:33:11.0 +2851;Heyer Serge;04:13:31.5 +2853;Hilpertshauser Urs;04:18:49.7 +2855;Hiltbrand Martin;03:19:24.5 +2856;Hirschi Alexandre;03:56:11.0 +2857;Hischier Aldo;03:43:51.1 +2859;Hochuli Reto;03:18:25.6 +2860;Hodel Roger;03:11:15.0 +2862;Hofer Cédric;05:20:20.3 +2863;Hofer Erich;03:44:20.3 +2865;Hofer Urs;03:57:42.1 +2868;Hofmann Edy;03:54:47.9 +2870;Hofmann Raymond;03:00:32.8 +2871;Hofstetter Martin;03:53:26.1 +2872;Hofstetter Roman;03:39:15.6 +2873;Hohl Andreas;03:26:04.0 +2876;Holenweger Mirko;03:28:22.4 +2877;Holenweger Thomas;04:16:36.0 +2878;Hölling Matthias;04:11:46.0 +2880;Holub Marc;04:20:54.6 +2881;Holzhüter Dirk;02:56:32.7 +2882;Hommann Edgar;03:33:34.7 +2886;Hookey Mark;05:08:11.2 +2888;Höppli Marcel;04:18:59.9 +2889;Horat Karl;03:43:51.2 +2892;Hosner Markus;04:22:08.1 +2897;Huber Andreas;03:55:22.3 +2898;Huber Daniel;04:06:24.1 +2899;Huber Erwin;04:14:35.5 +2900;Huber Michael;02:59:15.1 +2901;Huber Michael;04:34:43.1 +2902;Huber Rolf;03:31:34.6 +2904;Huber-Meier Hans;04:09:42.8 +2907;Hug Jean-Pierre;03:34:08.1 +2908;Hugener Thomas;04:39:42.7 +2909;Hugentobler Martin;03:07:55.8 +2912;Hügli Heinz;03:53:16.9 +2913;Humbel Markus;04:10:57.1 +2914;Hungerbühler Andreas;03:51:39.2 +2917;Hürlimann Fabrizio;03:55:19.2 +2918;Hurni Beat;04:33:18.0 +2920;Huser Josef;04:06:01.1 +2921;Huser Roland;03:21:57.2 +2922;Huwiler Denis;03:23:18.4 +2924;Ijland Marcel;04:06:59.7 +2925;Illi Ruedi;03:28:01.8 +2927;Immer Marcel;03:34:15.8 +2929;Inglin Roger;04:28:05.4 +2930;Ingold Marc;03:54:20.3 +2931;Ingold Markus;03:25:36.6 +2932;Ingold-Martinez Lukas;03:43:56.2 +2934;Inzirillo Maurice;03:03:34.5 +2935;Ippel Rene;03:35:14.9 +2937;Iseli Ernst;04:32:16.9 +2938;Isenring Martin;03:39:07.5 +2939;Aeschlimann Ulrich;03:13:16.6 +2940;Ismajli Alban;03:42:49.6 +2941;Iten Ralph;04:28:17.3 +2942;Iten Roman;03:48:06.4 +2944;Jacky Florian;03:57:40.1 +2946;Jacobs Reto;03:21:41.6 +2949;Jäger Fabian;04:16:02.4 +2950;Jäggi Andreas;03:40:32.7 +2951;Jähde Oliver;03:28:19.8 +2954;Janes Paul;03:29:51.7 +2955;Janssen Volker;03:50:45.8 +2962;Jegerlehner Andreas;05:07:38.7 +2963;Jenny Florian;03:58:43.3 +2965;Jimenez José Manuel;03:30:23.0 +2967;Jöchle Werner;04:28:05.2 +2970;Johnson Mike;03:29:50.5 +2971;Joos Markus;02:40:24.0 +2972;Jörgensen Martin;04:05:49.6 +2973;Jöri Sandro;02:45:27.7 +2974;Jornot-Schmitt Michael;04:23:37.8 +2975;Joss Marc;02:57:44.3 +2977;Jost Urs;03:39:56.8 +2984;Jud Toni;02:52:57.6 +2985;Juengling Stephan;03:43:04.6 +2988;Jung Urs;03:21:31.7 +2989;Jutz Josef Sepp;04:48:17.4 +2990;Jutz Otto;03:14:52.0 +2991;Jutz Stephan;04:16:13.2 +2992;Jutzi Urs;04:54:10.1 +2994;Kaderli Oliver;04:03:21.3 +2995;Kägi Benjamin;04:15:08.3 +2996;Kägi Christian;04:35:32.5 +2997;Kägi Rolf;03:54:31.9 +2998;Kaiser Walter;05:10:37.2 +2999;Kälin Christian;03:28:06.3 +3000;Stampfli Marc;04:23:41.2 +3001;Kälin Stefan;03:07:00.7 +3003;Kalt Markus;02:57:56.6 +3004;Kameni Gaétan;03:28:13.3 +3005;Kamer Stefan;03:08:06.5 +3006;Känzig Jürg;03:57:34.5 +3008;Karlen Werner;04:23:48.6 +3010;Käser Hans;03:56:16.3 +3011;Kastrati Albert;05:21:39.8 +3012;Kathriner Reto;03:01:41.9 +3013;Kätsch Hans-Martin;04:24:59.6 +3016;Kaufmann Corrado;04:19:27.1 +3017;Kaufmann Ferdi;03:43:39.3 +3018;Kaufmann Hubert;03:04:03.6 +3019;Kaufmann Michael;02:53:19.2 +3022;Kehl Arthur;03:41:36.8 +3023;Keller Christian;02:53:05.9 +3027;Keller Michael;03:14:50.1 +3030;Kellerhals Martin;02:59:54.3 +3032;Kempter Christoph;03:47:44.2 +3034;Kerenyi Alexander;03:24:44.5 +3035;Kern Andreas;04:27:23.6 +3036;Kern Daniel;03:34:17.1 +3037;Kersten Udo;03:58:34.3 +3038;Kessler Beat;03:22:49.2 +3039;Kessler Marcel;04:36:38.0 +3040;Kessler Nicolas;02:54:36.3 +3041;Kessler Thomas;04:17:33.7 +3042;Key Matthew;03:41:19.8 +3043;Kimati Celso;04:34:19.4 +3045;Kirchmayr Wolfgang;03:36:00.5 +3047;Kirst Christian;03:06:06.1 +3048;Kiser Felix;04:31:01.6 +3049;Kistler Roger;03:26:48.5 +3051;Klaus Oliver;03:04:59.5 +3052;Kläusler Stefan;03:02:23.3 +3055;Klingelfuss Marc;03:52:57.3 +3056;Klingenberg Björn;03:11:35.5 +3057;Klopfenstein Marco;03:41:02.8 +3059;Klotz Matthias;02:53:23.2 +3060;Klotzsch Thomas;02:57:37.5 +3062;Knapp Christian;03:11:29.8 +3064;Knobel Albert;03:13:01.7 +3067;Koch Dominik;02:45:03.4 +3068;Kock Carsten;02:59:08.3 +3069;Kodlinsky Christian;04:37:31.6 +3072;Kohler Marcel;05:10:40.1 +3073;Kohler Pirmin;04:00:18.2 +3077;Koller Gerold;02:59:33.2 +3079;Kölliker Thomas;03:14:11.2 +3080;Kolly Jean-Bernard;03:13:14.0 +3081;Königbauer Stefan;03:43:36.7 +3086;Koskela Ari;03:09:54.7 +3088;Kostic Milan;03:57:18.7 +3089;Koutny Zdenek;03:23:51.1 +3091;Krähemann Thomas;03:40:47.4 +3093;Kral Philipp;04:19:30.0 +3095;Krause Rainer;03:14:44.7 +3097;Krebs Marcel;03:38:13.1 +3098;Krebs Markus;03:33:16.8 +3100;Krebs Sandro;03:47:07.4 +3101;Krebs Thomas;03:41:12.5 +3103;Kreis Pablo;04:03:57.3 +3104;Kreis Simon;03:19:31.0 +3107;Krieger Urs;02:59:44.4 +3108;Kron Marius;03:18:23.7 +3109;Krucher Daniel;03:13:52.3 +3112;Kubli Jürg;03:45:40.2 +3113;Kuczynski Roman;03:25:29.1 +3116;Kuhn Bruno;04:09:49.9 +3119;Kühne Raphael;03:23:39.4 +3121;Kuipers Dennis;02:42:30.1 +3122;Kulendik Martin;04:29:19.8 +3124;Kümin Michael;05:05:16.6 +3127;Kündig Walter;03:24:59.1 +3128;Küng Martin;03:56:01.3 +3129;Küng Ralf;04:11:58.5 +3130;Kunkel Maximilian;03:07:48.5 +3131;Kunz Dieter;04:22:50.6 +3132;Kunz Gerhard;03:09:07.6 +3133;Kunz Markus;04:40:40.0 +3136;Künzle Peter;03:16:12.1 +3137;Kupny Wojciech;05:23:35.3 +3140;Kushwaha Imran;03:12:23.2 +3141;Küttel Lars;03:45:04.6 +3142;Küttel Peter;02:58:08.2 +3143;Küttel Ruedi;03:23:20.7 +3145;Kyburz Reto;03:23:32.8 +3146;Lagotzki Andreas;04:21:42.7 +3148;Lamard David;03:36:50.7 +3149;Lambert Gerard;04:02:37.0 +3150;Lampart Remo;03:26:15.9 +3151;Landi Marco;03:23:33.8 +3152;Landtwing Martin;04:54:11.6 +3154;Langenegger Christian;03:25:43.7 +3157;Langridge James;03:43:34.7 +3158;Lanter Guido;03:39:57.9 +3159;Lanz Peter;04:07:17.9 +3161;Larsson David;03:56:14.8 +3163;Lasser Philippe;03:51:09.8 +3164;Laticevschi Dumitru;03:35:32.4 +3168;Lay Daniel;03:42:40.1 +3169;Le Quang Duc;03:59:50.7 +3170;Ledergerber Ruedi;04:32:10.3 +3171;Ledergerber Stefan;04:32:10.5 +3174;Leek Peter;02:59:20.8 +3179;Lehner Jürg;03:57:37.1 +3182;Leimgruber Jörg;03:15:32.3 +3186;Lennon Mark Antony;04:03:01.3 +3187;Lerose Luigi;03:54:21.4 +3188;Leserf Gottlieb;04:38:43.5 +3189;Letta Marco;03:24:07.6 +3190;Leuenberger Frank;03:36:30.0 +3191;Leuenberger Hans;03:54:21.9 +3192;Leuenberger Michael;03:41:23.2 +3194;Leuthold Bernhard;03:26:03.5 +3197;Liard Gilles;03:21:25.7 +3198;Lichtin Jürg;03:34:19.1 +3199;Lichtsteiner Klemens;03:51:32.0 +3200;Liechti Alexander;04:10:06.8 +3202;Lienhard Cédric;03:06:33.8 +3203;Lienhard Tobias;04:27:54.1 +3209;Lindner Jack Olav;03:26:11.1 +3210;Lindsay Luke;03:42:14.7 +3211;Lippuner Christoph;03:49:09.0 +3212;Liver Richard;03:50:15.1 +3214;Lloyd William;03:35:22.3 +3215;Locantore Paolo;04:27:21.7 +3217;Lockyer Mark;04:01:55.6 +3218;Lockyer Paul;04:30:44.9 +3220;Loher Martin;03:26:47.0 +3221;Lohri Philipp;02:52:34.0 +3222;Loiudice Giulio;04:01:09.9 +3223;Loosli Peter;03:21:24.2 +3225;Lorenz Roman;03:43:56.6 +3226;Lorenz Tino;03:50:20.8 +3230;Louis Jvan;03:39:52.0 +3231;Loye Eric;03:27:17.7 +3234;Luder Beat;02:44:46.7 +3236;Luginbühl Guy;03:36:20.6 +3238;Lüönd Urs;03:42:14.2 +3239;Lupp Bjoern;04:04:57.0 +3241;Lüscher Urs;03:00:51.0 +3242;Lustenberger Silvan;03:46:35.3 +3243;Lusti André;03:41:12.8 +3246;Lutz Hansjörg;03:47:12.2 +3248;Luzzani Roger;02:57:26.5 +3250;Maccioni Sandro;04:04:04.7 +3251;Machowetz Alex;03:49:38.8 +3253;Macquarrie Hugh;04:08:57.1 +3254;Stadler Christian;02:51:48.2 +3255;Magnenat David;03:26:51.3 +3256;Maier Jürgen;03:47:16.1 +3259;Maier Robert;03:57:45.8 +3260;Maier Thomas;05:04:51.4 +3261;Maier-Thurn Marcus;05:25:28.0 +3262;Maillard Joel;04:23:55.4 +3263;Maillefer Joël;02:45:44.7 +3264;Maio Giuseppe;03:55:33.4 +3268;Mani Simon;02:50:34.2 +3269;Mann Felix;03:38:33.8 +3272;Marchand Antoine;02:46:45.4 +3273;Marchand Tony;02:52:58.6 +3278;Mariuzzo Christian;03:27:13.4 +3279;Marrel David;03:21:55.0 +3280;Marro Alain;03:20:56.9 +3283;Marta Massimo;03:24:48.8 +3284;Martel Sylvain;03:34:24.9 +3286;Marti Michael;03:59:00.9 +3287;Martin Javier;04:33:40.7 +3289;Martin Sergio;03:37:34.2 +3291;Martino Giuseppe;03:32:26.7 +3292;Marty Patrick;03:12:04.6 +3293;Marty Philipp;04:27:48.1 +3296;Matos Gilberto;04:06:32.7 +3297;Matter Chrigi;04:41:38.8 +3298;Mattheis Hartmut;05:12:34.9 +3300;Mattle Paul;03:46:07.8 +3301;Mattmüller Martin;03:45:00.0 +3303;Maurer Heinz;03:15:31.1 +3304;Maurer Oliver;03:25:13.3 +3305;Maurer Urs;03:17:04.8 +3306;Maury Laribiere Martia;03:37:06.3 +3308;Mayer Jens;03:53:36.6 +3311;Mccreadie Murray;02:57:57.5 +3313;Mecchia Francesco;03:59:13.7 +3314;Meier Andreas;03:37:11.4 +3315;Meier Daniel;03:51:59.7 +3316;Meier Elias;03:23:41.4 +3317;Meier Franz;03:35:51.3 +3318;Meier Heinz;03:35:11.1 +3319;Meier Kusi;04:36:10.4 +3320;Meier Marcel;03:57:58.0 +3321;Meier Marcel;03:56:53.4 +3322;Meier Michael;03:24:24.0 +3323;Meier Patrick;03:45:18.5 +3325;Meier Peter;04:17:58.2 +3328;Meier Roland;03:57:37.9 +3329;Meier Simon;03:09:02.0 +3330;Meier Stefan;05:18:06.7 +3332;Meierhans Roman;03:49:47.5 +3333;Felix Manuela;04:27:31.7 +3334;Meisser Reto;03:43:24.9 +3335;Meister Roger;04:08:36.6 +3337;Mele Piero;04:17:55.5 +3338;Melzer Tino;03:01:31.3 +3339;Menghini Daniel;03:40:05.3 +3340;Menzi Micha;03:07:26.1 +3342;Merkle Othmar;03:18:39.4 +3343;Merkt Peter;02:46:41.7 +3345;Merup Christian;03:11:09.0 +3347;Mesaros Thomas;03:31:36.5 +3349;Metger Georg;04:11:15.4 +3351;Metzler Hans;03:28:18.4 +3352;Meuris Richard;03:56:30.3 +3353;Meyer Daniel;03:54:19.2 +3356;Meyer Stephan;03:39:00.0 +3358;Michel Dominique;02:53:22.9 +3359;Michel Walter;03:28:38.6 +3360;Michnac Ivan;03:17:43.2 +3361;Milesi Luca;03:29:29.2 +3362;Milic Mladen;03:50:36.8 +3363;Millius Beat;03:05:01.2 +3366;Misic Andrija;03:45:35.2 +3367;Misiek Wiktor;04:39:59.9 +3368;Mistretta Antinoo;03:22:25.9 +3369;Mittelholcz Béla;02:59:34.5 +3374;Moehlecke Thomas;03:38:22.7 +3375;Moggi Christoph;03:07:46.8 +3376;Mohring Stephan;04:14:29.0 +3377;Mollitt Andrew;03:43:01.7 +3379;Monachon Jean-Claude;03:48:13.6 +3380;Monney Roland;03:55:16.2 +3381;Montanari Matteo;03:58:59.3 +3382;Monterosso Germano;04:11:41.3 +3383;Monterosso Vincenzo;03:31:29.0 +3384;Mordasini Niccolo;03:50:29.5 +3385;Moret Eloi;04:20:10.4 +3387;Morley Tim;05:01:53.6 +3388;Moscetti Christian;04:23:30.5 +3389;Moser Felix;03:25:57.2 +3390;Moser Rudolf;03:36:15.4 +3391;Mosetti Nicolas;03:07:06.4 +3392;Mourtada Samir Paul;04:04:00.4 +3393;Mozzi Guido;04:58:45.1 +3395;Muehlethaler Adrian;03:05:54.3 +3397;Muff Christian;03:17:48.1 +3398;Muff René;02:59:55.7 +3399;Muff Roland;03:44:48.1 +3402;Müller Andreas;04:19:43.0 +3403;Müller Bruno;02:59:29.8 +3404;Müller Daniel;02:41:27.6 +3407;Müller Hans-Jörg;03:39:32.5 +3408;Müller Hansruedi;04:54:25.1 +3409;Müller Heinrich;04:50:24.5 +3412;Müller Lukas;02:58:48.0 +3414;Müller Michael;03:27:18.4 +3415;Müller Michael;04:47:25.2 +3416;Müller Patrick;03:20:42.2 +3417;Müller Rolf;03:24:52.5 +3418;Müller Ronnie;03:37:55.2 +3420;Müller Thomas;03:18:13.2 +3422;Mumenthaler Stephan;03:18:08.8 +3423;Munz Thomas;04:44:53.8 +3424;Murer Werner;04:12:53.0 +3425;Muriqi Agron;03:51:22.8 +3426;Murray Mark;03:12:56.2 +3428;Nachbaur Gerd;03:42:44.4 +3431;Nater Remo;03:15:12.2 +3432;Naylor Charles;03:55:34.7 +3433;Nazabal Alexis;03:27:10.9 +3436;Neff Armin;03:23:51.9 +3438;Neff Yanick;03:35:05.6 +3443;Neuländner Martin;03:45:52.5 +3445;Neumüller Peter;02:59:15.1 +3447;Nicolet Samuel;02:57:24.5 +3448;Niederberger Guido;05:01:39.4 +3449;Niederberger Philippe;03:11:47.0 +3450;Niederer Christian;03:44:10.4 +3451;Niedermair Uli;03:13:04.2 +3452;Niethammer Thomas;03:22:03.9 +3454;Niklaus Michael;03:26:55.0 +3457;Nobis Markus;03:30:49.1 +3460;Noli Lorenz;03:57:45.7 +3462;Notter René;04:10:33.5 +3463;Notter Stefan;03:13:32.4 +3464;Notz Ruedi;04:12:35.0 +3465;Nussbaum Walter;02:51:47.6 +3467;Nutt Reto;03:31:59.7 +3469;Nyikos Thomas;02:58:29.4 +3471;Oberkalmsteiner Karl;03:25:11.7 +3472;Oberle Adrian;03:32:21.9 +3474;Obermeit Volker;03:48:01.2 +3475;Obrecht Walter;03:41:35.5 +3476;Ochsner Daniel;03:50:44.7 +3477;Ochsner Harry;03:57:42.9 +3478;Odermatt Fredi;03:14:26.0 +3479;Odermatt Michael;02:56:50.0 +3480;Odermatt Urs;03:18:56.2 +3481;Oehninger Ernst;04:44:48.1 +3482;Oester Patrick;04:29:57.7 +3485;Omollo Omondi;03:39:25.4 +3486;Oppitz Lothar;03:30:46.4 +3487;Oppitz Ulrich;03:33:17.7 +3488;Oppliger Christophe;02:58:07.5 +3489;Oreilly David;03:22:25.4 +3490;Ortega Ilias;04:50:08.7 +3491;Ortkemper Frank;04:00:41.3 +3492;Ott Manuel;04:19:27.5 +3493;Otter Ueli;04:05:48.4 +3494;Overbeck Gernot;04:04:16.5 +3497;Overeem Joost;04:00:38.8 +3498;Paccaud Christophe;03:23:05.7 +3499;Pacozzi Romeo;03:54:08.0 +3501;Page Basile;03:24:58.5 +3503;Pagy Eilam;04:17:56.6 +3504;Palmiere Cristian;03:36:36.7 +3505;Panatti Erik;02:55:22.0 +3510;Passera Giacomo;03:58:51.6 +3512;Pauchard Patrick;03:42:45.6 +3517;Pedrini Claudio;04:34:43.7 +3518;Peinsold Martin;03:23:16.6 +3519;Pellegrini Flavio;03:19:52.9 +3520;Pellet Laurent;03:30:38.5 +3521;Peng Pierre;05:29:00.9 +3522;Pepe Pasquale;03:55:45.2 +3527;Perisset Laurent;03:27:54.1 +3531;Perseghini Mauro;03:06:10.0 +3532;Pescheta Donato;02:47:34.7 +3533;Peter Guido;04:13:58.5 +3534;Peterhans Urs;04:45:28.4 +3535;Petrig Markus;03:42:58.9 +3536;Peyer Thomas;03:43:03.0 +3537;Pfäffli Roger;04:23:41.2 +3538;Pfändler Jonas;03:23:40.4 +3540;Pfenninger Roland;04:25:03.0 +3541;Pfister Felix;03:49:12.2 +3542;Pfister Heinz;04:49:13.4 +3543;Pfister Jeremias;03:57:51.8 +3544;Pfister Samuel;04:19:00.1 +3547;Pfyffer Roland;03:18:30.6 +3548;Pfyffer Urs;03:20:18.4 +3551;Pianaro Claudio;03:17:17.1 +3557;Piguet Florian;02:44:03.2 +3558;Pillard Luc;05:12:05.1 +3560;Piras Davide;03:58:44.8 +3561;Pirrello Antonino;03:54:18.8 +3562;Pirscher Andreas;03:20:13.0 +3563;Pittet Laurent;02:48:33.8 +3564;Place Raymond;03:57:29.2 +3567;Ploetz Armin;03:36:55.6 +3568;Plum Carsten;03:28:52.6 +3569;Plüss Fabian;03:42:49.1 +3571;Porfido Franco;03:25:53.3 +3573;Portmann Hansjörg;03:18:53.2 +3574;Portmann Marco;03:53:52.0 +3575;Németh Aniko;03:38:23.1 +3576;Portmann Thomas;03:04:13.2 +3578;Praz Max;03:46:00.7 +3581;Procacci Fabio;05:27:44.8 +3582;Protze Sören;03:32:31.6 +3583;Pulizzi Antonino;04:30:16.3 +3586;Putallaz Jean-Yves;03:46:42.2 +3587;Quauka Daniel;03:24:49.4 +3588;Quirici Giulio;03:13:54.4 +3589;Raca Mirko;03:56:05.5 +3590;Raccuglia Armando;03:50:52.4 +3593;Ramer Stefan;03:47:44.9 +3595;Randegger Erwin;04:35:57.6 +3596;Ranta Tommy;03:13:32.0 +3597;Raschle Adrian;03:53:25.5 +3598;Rasquinet Patrick;05:33:14.5 +3601;Raymann Patrick;03:32:12.0 +3603;Rechsteiner Helmut;03:28:02.9 +3604;Rechsteiner Kuno;02:54:25.3 +3606;Rehm Martin;03:36:33.3 +3607;Rehmet Joachim;03:58:16.8 +3608;Reichmuth Thomas;03:43:29.9 +3611;Reinhard-Miltz Gerhard;03:39:41.8 +3612;Reinhardt Stephan;04:24:27.6 +3614;Reitbauer Stefan;03:26:39.9 +3617;Rentsch Peter;04:22:15.2 +3620;Reutemann Patrick;04:39:43.6 +3622;Rentsch Max;03:21:56.5 +3623;Rezzonico Andrea;03:27:57.2 +3625;Richter Carsten;03:15:23.8 +3627;Richter Manfred;04:25:00.3 +3628;Richterich Lukas;03:21:29.5 +3631;Riedi Mattias;04:03:12.7 +3635;Riekert Patrick;04:10:28.1 +3637;Rigoni Bruno;03:45:09.7 +3638;Rinderknecht Christoph;03:39:20.5 +3639;Rindlisbacher Martin;02:45:30.3 +3640;Rippstein Guido;03:45:54.2 +3641;Risby Lee Alexander;04:13:36.7 +3642;Risi Christoph;04:03:02.2 +3643;Ritler Roger;03:25:15.4 +3644;Ritschard Mario;03:59:14.8 +3645;Ritter Daniel;03:21:43.3 +3646;Ritz Daniel;03:19:33.6 +3647;Rizzello Roberto;04:23:05.6 +3651;Rodelli Leo;03:59:53.5 +3652;Roduit Pascal;03:38:15.8 +3653;Roduner Christoph;04:00:27.0 +3654;Roffler Markus;03:32:14.8 +3655;Rohner Marius;04:09:52.2 +3656;Rohr Stephan;02:46:41.1 +3657;Rohrer Hansruedi;03:07:34.0 +3659;Röllin Martin;04:13:18.0 +3660;Roman Emilio;03:18:19.8 +3664;Rosen Oliver;03:43:32.7 +3665;Rosic Renato;04:39:25.6 +3667;Rosset Gilles;03:43:26.7 +3668;Rossi Lorenzo;03:23:54.0 +3669;Roth Heiner;04:15:00.2 +3670;Roth Nick;03:36:42.9 +3671;Röthlisberger Andres;04:37:29.6 +3672;Röthlisberger Sergio;04:25:03.5 +3673;Röthlisberger Urs;04:16:25.6 +3676;Roulet Vincent;03:54:01.8 +3680;Rückstein Bruno;04:34:57.3 +3681;Rudaz Gérald;04:23:41.7 +3682;Rudolf Hanspeter;03:27:18.9 +3683;Rüede Christian;03:53:44.9 +3684;Rüede Nico;03:59:46.6 +3685;Rueegg Patrick Stefan;03:44:51.7 +3686;Rüegg Armin;04:53:59.0 +3687;Rüegg Walter;03:27:05.9 +3688;Rüesch Peter;03:42:38.2 +3689;Ruf Andreas;04:11:30.1 +3693;Rupper Patrick;03:56:31.2 +3694;Rusch Stefan;03:39:31.0 +3706;Safi Kamran;03:52:32.5 +3708;Sägesser Simon;03:10:45.4 +3710;Salamin Michel;03:14:35.9 +3713;Salmi Janne;02:40:56.0 +3715;Salzmann Urs;02:58:48.1 +3716;Sanchez Walter;05:02:44.7 +3718;Sano Shogo;04:07:36.9 +3721;Sara Benedé Enrique;03:49:28.4 +3723;Sauder Patrick;02:46:46.9 +3724;Saurer Werner;03:51:01.8 +3725;Sauter Markus;03:05:55.1 +3726;Savill Ian;04:04:16.3 +3727;Savola Juha;02:59:23.7 +3729;Schaad Marco;02:59:09.3 +3730;Schaad Thomas;03:31:23.0 +3731;Schaerer Bruno;04:37:21.1 +3732;Schaermeli Claudio;03:32:27.7 +3733;Schäfer Andreas;04:44:07.9 +3734;Schäfer Roger;03:54:43.3 +3735;Schäffer Beat;03:30:50.2 +3739;Schär Markus;03:25:26.7 +3740;Schärer Kurt;03:38:13.8 +3741;Schärli Christoph;04:27:06.9 +3742;Schaub Rolf;03:40:58.9 +3743;Schegg Stefan;03:53:05.2 +3745;Scheidegger René;03:34:04.4 +3746;Schelbert Armin;03:17:03.3 +3749;Schenk Felix;02:40:59.9 +3750;Schenkel Patrick;03:54:05.6 +3753;Scherer Kurt;02:48:44.0 +3757;Scherzinger Fredy;03:47:12.0 +3758;Schibig Viktor;04:14:23.6 +3763;Schilling Martin;03:26:17.5 +3765;Schläfli Matthias;03:27:33.2 +3766;Schläpfer Marco;03:41:13.5 +3767;Schlatter Adrian;02:47:58.4 +3768;Schlatter David;03:56:07.0 +3771;Schlicht Michael;03:56:54.8 +3772;Schlub Jarbas;03:32:39.0 +3773;Schlüchter Roland;04:08:56.7 +3777;Schmid Philipp;04:35:30.8 +3779;Schmid Tobias;04:24:42.1 +3780;Schmid Tom;03:50:12.9 +3781;Schmid-Erni Reto;03:54:33.1 +3785;Schmidt Roberto;03:28:11.7 +3787;Schmidt Urs;04:11:40.1 +3788;Schmidt Urs-Peter;03:24:14.3 +3789;Schmied Bruno;04:15:44.7 +3792;Schmutz Dominik;03:10:12.2 +3793;Schneckenburger Julian;03:20:55.8 +3794;Schneider Hans-Peter;03:43:26.5 +3795;Schneider Jochen;03:59:45.6 +3797;Schneider Martin;03:49:35.3 +3798;Schneider Martin;03:14:47.1 +3800;Schneider Reto;03:31:42.6 +3803;Schnüriger Erwin;03:21:49.3 +3805;Schnyder Roger;02:39:40.0 +3807;Schoch Christoph;03:45:11.6 +3808;Scholian Heinz;03:18:56.5 +3809;Scholl Hans;03:09:32.4 +3813;Schönenberger Bruno;03:44:13.9 +3814;Schönenberger Felix;04:12:40.9 +3815;Schönenberger Samuel;03:48:07.0 +3816;Schönenberger Tim;03:22:48.0 +3817;Schönenberger Urs;02:59:20.6 +3818;Schönherr Andreas;03:27:28.9 +3819;Schöni Beat;03:37:03.4 +3820;Schöni Martin;03:14:32.6 +3821;Schoppe Mathias;03:20:08.7 +3822;Schorno Enrico;03:27:34.8 +3824;Schranz Fred;03:13:16.8 +3826;Schreiber Mark;03:30:52.4 +3827;Schreiber Simon;03:24:29.2 +3829;Schröder Jan;03:45:37.6 +3832;Schüepp Daniel;03:58:33.0 +3834;Schuler Paul;03:16:16.7 +3835;Schuler Werner;04:56:45.6 +3836;Schulte Christian;03:47:49.3 +3839;Schultheiss Tobias;03:45:27.9 +3840;Schulze Elko;03:49:49.4 +3843;Schüpbach Fabian;04:19:23.7 +3844;Schütz Patrick;02:54:51.3 +3845;Schütz Reinhart;03:06:23.8 +3849;Schweitzer Pascal;04:03:43.6 +3850;Schweizer Marcel;04:37:07.7 +3851;Schwery Rolf;04:49:04.8 +3854;Scotece Gerardo;03:11:52.4 +3856;Seeger Andreas;04:15:25.0 +3859;Seiler Rico;03:19:04.9 +3860;Seipel Oliver;04:28:28.1 +3863;Seki Tomoo;04:30:38.1 +3864;Semadeni Gian Andrea;03:48:33.3 +3865;Senn Lucien;03:58:23.8 +3867;Senteler Roger;03:26:22.0 +3868;Serrano Camilo;04:25:15.4 +3870;Sgier Giusep;03:17:08.5 +3871;Sibilia Enrico;03:56:19.7 +3874;Sieber Oliver;03:44:20.5 +3875;Siegenthaler Fredy;03:38:44.8 +3877;Siegrist Thomas;03:16:43.6 +3881;Signer Martin;03:06:23.2 +3882;Signer Ueli;03:42:23.1 +3883;Sigrist Daniel;03:40:57.5 +3884;Sigrist Felix;03:07:04.2 +3886;Silberschmidt Rico;03:26:22.9 +3887;Simon Robert;04:53:49.2 +3889;Siragusa Pietro Giovan;04:03:53.2 +3890;Sitruk Yves;04:32:17.3 +3895;Smith Craig;03:27:00.7 +3898;Somerville Trevor;04:03:32.3 +3901;Soto Josetxo;03:20:56.8 +3904;Spaargaren Marco;03:06:49.2 +3905;Spaggiari Giuseppe;03:54:22.4 +3906;Späh Martin;04:06:19.7 +3907;Specht Dominique;04:03:52.9 +3908;Al-Godari Hamid;03:41:40.7 +3909;Spielhofer Hans;03:59:34.2 +3910;Spielhofer Reto;03:54:43.7 +3911;Spiess Thomas;03:10:09.5 +3912;Spilker Max;04:03:58.3 +3913;Spitteler Peter;03:18:07.2 +3914;Spitznagel Kurt;04:10:00.5 +3915;Spörndli Daniel;03:19:23.3 +3916;Sprenger Raphael;02:58:37.5 +3917;Spring Daniel;02:44:39.4 +3920;Stadelmann Marc;04:22:33.9 +3921;Maeder Walter;03:24:38.6 +3922;Stadler Marcel;03:16:27.9 +3923;Stadler Reto;03:44:02.1 +3924;Staeheli Oliver;03:57:53.2 +3925;Staffelbach Thomas;03:08:56.5 +3926;Stähli Sandro;03:45:28.5 +3927;Stamm Dominik;03:52:10.3 +3928;Stamm Franz;03:21:11.0 +3929;Stamm Urs;04:25:34.8 +3931;Stämpfli Bernhard;02:54:25.7 +3932;Kälin Kurt;03:43:37.0 +3933;Stangl Dominik;03:00:46.5 +3934;Stangl Stefan;03:04:52.5 +3935;Stäuble Roland;03:04:43.0 +3936;Staudenmann Beat;03:15:38.4 +3938;Stauffacher Ruedi;03:11:28.7 +3939;Stauffer Alexandre;04:06:21.6 +3940;Stauffer Mario;05:15:15.7 +3941;Stauffer Markus;03:42:13.0 +3942;Stebler Markus;03:02:06.8 +3943;Steffen Peter;03:10:42.4 +3946;Steigmeier Linus;04:08:41.2 +3947;Stein Martin;03:22:45.4 +3948;Steiner Armin;02:50:52.4 +3949;Steiner Daniel;03:43:36.2 +3950;Steiner Markus;03:05:14.2 +3951;Steiner Patrick;03:24:12.0 +3952;Steiner Peter;04:09:50.0 +3953;Steiner Rolf;03:09:05.2 +3954;Steiner Thomas;04:10:46.1 +3956;Steinhof Co Rosen Arne;03:47:55.7 +3958;Stern Pascal Nicolas;03:19:11.3 +3959;Stettler Roman;03:40:48.8 +3961;Stifel Peter;04:15:30.1 +3962;Stillman David;02:38:27.6 +3964;Stirnemann Paul;03:40:07.0 +3966;Stirnimann Daniel;02:41:11.4 +3968;Stocker Ueli;03:49:26.0 +3969;Stockmann Hubertus;03:25:34.4 +3973;Stoll Oliver;04:02:48.0 +3975;Storchenegger Daniel;03:42:10.7 +3977;Strähl Stefan;02:51:29.0 +3981;Strebel Philipp;02:59:26.1 +3982;Strehler Erich;03:13:55.1 +3983;Streich Daniel;04:41:40.2 +3984;Streiff Christoph;03:43:42.3 +3985;Streule Ralf;04:01:55.6 +3987;Strickler Werner;04:03:01.8 +3988;Strimer Simon;03:34:57.6 +3990;Stucker Jürg;03:46:43.0 +3992;Studer Adrian;03:15:06.9 +3993;Studer Jürg;03:44:32.3 +3994;Studer Peter;03:36:35.5 +3995;Stupp Oliver;03:26:35.1 +3996;Sturzenegger Hans-Rudo;03:28:40.3 +3997;Sturzenegger Michael;03:33:10.9 +3999;Sturzenegger Thomas;03:32:38.9 +4001;Stütz Andy;03:11:15.4 +4002;Stutz Bruno;04:20:28.5 +4003;Stutz Michael;03:26:25.5 +4004;Stutz Toni;03:46:37.2 +4005;Sulser Silvio;03:09:20.4 +4006;Sumi Arthur;04:36:55.9 +4008;Süssli Eric;03:16:24.9 +4010;Suter Jürg;03:50:56.7 +4013;Sutter Jürg;04:32:57.9 +4014;Swars Erik;03:53:42.4 +4015;Szegvary Thomas;02:51:21.5 +4016;Szentgyörgyi Istvan;04:12:33.5 +4018;Tabakovic Velid;03:48:12.8 +4019;Tacca Gianni;03:48:33.6 +4021;Tanner Marcel;03:02:51.3 +4023;Tauber Albert;03:52:15.9 +4025;Tellefsen Anders;03:49:52.4 +4026;Teshima Ryo;05:12:50.9 +4030;Thalmann Rolf;03:25:29.9 +4031;Theis Manuel;03:26:20.6 +4033;Theules Olivier;03:43:07.9 +4034;Thiel Dieter;04:13:20.5 +4036;Thoma Remo;03:23:37.5 +4037;Thoma Turi;03:17:57.7 +4044;Thür Raphaél;03:39:33.5 +4045;Thurre Jean-Daniel;04:37:23.7 +4046;Tighnavard Babak;04:11:49.9 +4047;Tobler Urs;04:26:49.9 +4054;Tourolle Bruno;05:09:51.3 +4056;Traber Fabio;04:23:21.4 +4058;Trajkovic Ivo;03:18:32.4 +4063;Tremp Christof;03:32:14.2 +4064;Tresch Reto;03:27:44.2 +4065;Triantafillou Christos;04:52:37.0 +4067;Tripolt Fabio;04:50:44.1 +4069;Troller Rolf;03:16:04.1 +4070;Trolp Frank;03:47:42.8 +4071;Troxler Andreas;03:05:43.5 +4073;Trümpler Michael;03:59:59.4 +4074;Truninger Joey;04:21:42.2 +4076;Trüssel Stefan;03:32:50.1 +4077;Tschamon Martin;04:26:02.9 +4078;Tschanz Lukas;03:50:40.1 +4079;Tschopp Silvan;03:11:38.3 +4081;Tschumper Markus;03:23:05.0 +4082;Turberg Yves;03:11:45.6 +4084;Uebbing Jürgen;03:25:51.0 +4085;Ueltschi Thomas;03:03:16.8 +4087;Ulber Wolfgang;02:56:59.8 +4088;Ullmann Rolf;04:23:43.6 +4091;Ulrich Daniel;02:47:17.1 +4093;Umbricht Niklaus;03:28:21.8 +4094;Vacheron Thierry;03:56:01.6 +4095;Vagt Toni;03:05:22.5 +4097;van Zyl Charl;03:17:57.7 +4100;Veronesi Silvio;04:04:59.4 +4101;Vetsch Matthias;03:20:04.1 +4103;Vieux Florian;02:44:19.9 +4104;Vilchez Martin;03:32:58.5 +4109;Voegeli Matthias;03:46:10.7 +4110;Vögeli Pierre;04:20:39.9 +4111;Voegeli Ueli;03:36:28.4 +4114;Vogel Hanspeter;04:59:03.8 +4115;Vogel Markus;03:42:53.5 +4116;Vogel Roland;03:59:22.0 +4117;Vögeli Bernhard;04:15:08.8 +4122;Völlmin Manuel;03:19:55.7 +4125;von Dahlen Steffen;03:47:50.9 +4126;von Holzen Christoph;03:01:28.8 +4127;von Kaenel Dominik;04:54:14.0 +4128;von Mandach Conrad;03:15:07.5 +4129;Vonarburg Christian;03:43:28.5 +4130;Vonbach Lukas;03:27:53.3 +4132;Vonplon Raymond;03:46:02.7 +4133;Votteler Michael;04:08:24.6 +4134;Vournelis Ellin;03:19:49.1 +4135;Vuillemez Samuel;03:08:05.7 +4136;Vuilleumier Cédric;04:14:26.1 +4138;Waeber Pascal;03:03:57.3 +4142;Wahl Kurt;03:53:47.6 +4143;Waldburger Hans;03:57:57.1 +4144;Walder Vitus;03:13:37.1 +4145;Waldis Stefan;02:55:28.2 +4146;Waldner Peter;03:19:31.4 +4148;Allemann Urs;03:34:53.7 +4152;Wälti Jean Pierre;03:28:59.4 +4153;Wälti Thomas;03:30:38.1 +4154;Wangler Timothy;03:43:31.5 +4155;Wanner Florian;03:27:05.3 +4156;Wanner Laurent;03:44:52.1 +4161;Weber Heinrich;04:07:24.7 +4162;Weber Jakob;03:15:35.5 +4164;Weber Peter;03:13:56.6 +4166;Weber Stefan;03:28:52.6 +4167;Wegmann Marco;02:53:05.3 +4168;Wegmann-Wittlin Andrea;03:08:13.7 +4169;Wegscheider Beat;03:13:23.5 +4170;Wehrli Fabian;03:53:27.5 +4171;Weibel Patrick;03:45:57.3 +4172;Weibel Xaver;03:20:43.3 +4173;Weiersmüller J-C;05:01:02.3 +4175;Weilenmann Pascal;04:21:39.3 +4176;Weiler Andreas;02:49:59.5 +4177;Weiler Christoph;03:53:47.9 +4181;Weiser Thomas;04:26:18.4 +4182;Weisheimer Thomas;03:21:52.9 +4183;Weisser Klaus;03:47:57.0 +4184;Welbergen Anthony;03:18:37.6 +4185;Welten Ernst;04:24:38.0 +4192;Wenger Urban;03:33:01.9 +4195;Werder Daniel;03:44:31.4 +4199;Wernli Oliver;03:27:50.9 +4200;Wernli Raphael;03:39:33.1 +4201;Wespi Marcel;03:13:52.0 +4204;Westphalen Stephan;05:24:41.6 +4205;Wettstein Erich;03:48:10.3 +4206;Wettstein Markus;03:27:17.7 +4212;Wicki Roger;03:14:34.4 +4214;Widmer Erhard;03:49:04.0 +4219;Wildhaber Walter;03:49:04.8 +4220;Wilkening Jan;03:08:18.8 +4222;Willisegger Christoph;03:25:32.0 +4223;Wilson Antony;03:48:14.0 +4224;Windmüller Stefan;03:56:11.3 +4225;Winistörfer Georges;04:20:29.0 +4226;Winkler Michael;02:44:19.7 +4230;Wirz Daniel;03:27:50.7 +4231;Wittlin Marc;03:42:46.4 +4232;Wittwer David;05:10:20.7 +4233;Wohlers Florian;03:42:07.4 +4234;Wolf Etienne;02:32:49.2 +4236;Wollnow Jörg;04:10:28.4 +4240;Wörner Mike;03:23:40.6 +4241;Wullimann Markus;02:51:35.0 +4243;Würzebesser Christian;04:26:22.1 +4246;Wüthrich Jürg;03:47:43.4 +4248;Wyler Karl;03:47:18.4 +4249;Wymann Fredi;04:30:06.6 +4250;Wymann Markus;04:43:36.1 +4251;Wyniger Lukas;03:21:22.8 +4253;Wyss Eric;02:54:59.2 +4254;Wyss Roman;02:55:54.9 +4255;Wyss Stefan;03:26:00.0 +4257;Yamashita Masato;03:43:53.9 +4258;Zabe-Kühn Martin;03:41:01.1 +4262;Zampiccoli Manuel;04:05:48.2 +4263;Zanella Bruno;04:49:35.7 +4264;Zangl Christian;03:41:31.8 +4265;Zaouia Mehdi;04:14:01.3 +4266;Zbinden Manfred;03:40:48.7 +4267;Zbinden René;03:25:40.5 +4268;Zbinden Thomas;02:54:31.5 +4269;Zeder Markus;03:11:35.9 +4270;Zeder Patrick;03:06:35.5 +4272;Zehnder Marcel;03:10:08.5 +4274;Zekhnini Ahmed;04:49:37.5 +4275;Zemp Marco;03:23:55.1 +4276;Zemp Markus;03:07:50.2 +4277;Zengaffinen Erwin;03:54:57.9 +4278;Zgraggen Franz;03:20:19.9 +4279;Ziegler Marc;04:19:45.6 +4280;Ziegler Robert;03:44:31.8 +4284;Zimmerli Thomas;03:32:23.9 +4285;Zimmermann Patrick;03:29:36.6 +4286;Zimmermann Robert;03:38:54.1 +4288;Zingg Christoph;03:02:52.0 +4290;Zink Fritz;04:07:32.2 +4293;Zoder Roland;02:53:55.6 +4294;Zoller Stefan;03:23:42.0 +4295;Zollinger Marcel;03:17:44.3 +4297;Zuber Benno;03:40:35.5 +4298;Zuber Ralf;04:35:44.6 +4299;Zubler Martin;03:22:58.5 +4300;Zulauf Stefan;04:04:22.2 +4301;Zumer Robert;03:36:37.2 +4302;Zumsteg Rene;03:45:16.9 +4303;Zurbuchen Christian;03:51:40.2 +4305;Zurflüh-Begré Daniel;03:13:49.8 +4306;Zutter Jerome;04:04:45.2 +4307;Zwahlen Beat;03:57:51.2 +4308;Zwick Jürg;03:17:10.8 +4310;Zwygart Stephan;04:01:59.8 +4311;Alvarez Fernando;03:51:14.8 +4313;Ambrosini Stefan;04:55:45.4 +4315;Ayeah Ebenezer;03:17:16.7 +4316;Bachsteffel Niklaus;03:30:01.2 +4317;Bagnoud Gérard;02:39:30.3 +4318;Bartel Marco;03:44:18.2 +4319;Barz Andreas;04:09:47.4 +4320;Baumann Rainer;03:15:53.4 +4321;Baumann Walter;02:57:59.7 +4323;Baumgartner Andreas;03:51:00.5 +4324;Beck Jan;03:03:19.3 +4327;Beer Sebastian;03:17:11.4 +4328;Beerli Urs-Peter;03:20:06.6 +4329;Beermann Stefan;03:09:44.7 +4330;Bekcic Vladimir;03:37:21.9 +4331;Benkert Fritz;03:38:32.5 +4334;Birkenmaier Claude;03:38:56.5 +4335;Blum Edgar;03:52:36.6 +4336;Bogner Walter;03:03:47.5 +4337;Bonfanti Stefan;03:17:04.7 +4341;Bronner Reto;03:52:08.1 +4342;Brönnimann Ruedi;03:24:43.9 +4343;Bucher Martin;03:07:06.7 +4344;Buehler Andreas;03:34:03.6 +4345;Buerki Fritz;04:35:05.4 +4346;Bühlmann Daniel;04:12:59.2 +4347;Burgener Hubert;03:35:04.4 +4348;Bürgi Thomas;03:06:51.1 +4350;Businger Urs;03:20:45.9 +4351;Camenzind Peter;02:54:41.7 +4354;Carisch Emanuel;03:55:06.5 +4355;Carrasco Ernesto;04:38:15.0 +4356;Casanova Lukas;03:37:50.9 +4357;Castella Jean-Marc;05:11:31.3 +4358;Caviezel Marzel;03:39:40.9 +4361;Coradi Thomas;03:57:57.3 +4362;Coray Roger;03:59:48.4 +4363;Crosara Michel;03:09:28.6 +4367;Derron Simon;04:07:34.9 +4369;Dobler Christoph;03:32:07.5 +4370;Dos Santos Nelson;04:33:45.9 +4373;Duschen Patrick;03:07:44.2 +4374;Dütschler Reto;03:57:58.0 +4375;Eckert Marc;04:24:13.0 +4376;Egger Daniel;03:12:08.4 +4377;Ehrbar Martin;03:13:13.1 +4378;Eigenmann Raffael;03:26:14.5 +4379;Enemrke Simon;03:34:52.6 +4381;Fallegger Hans-Jörg;03:26:03.3 +4383;Fessler Andreas;05:33:39.1 +4384;Forster Martin;03:57:47.7 +4385;Frei Nicola;03:18:16.7 +4386;Fritz Romeo;04:21:34.3 +4388;Geissmann Willy;04:04:51.8 +4390;Gisi Daniel;02:58:06.3 +4391;Gomez Carlos;03:09:16.6 +4392;Gossauer Andreas;04:23:59.5 +4393;Graham Colin;03:25:39.3 +4394;Grau Patrick;04:38:55.4 +4395;Grüninger Thomas;03:56:50.4 +4397;Gujer Hanspeter;04:21:31.6 +4398;Gyger Franz;03:06:10.5 +4399;Haider Thomas;02:53:41.2 +4400;Haller Heinrich;03:14:40.7 +4401;Hartmann Thomas;04:21:26.2 +4402;Haueter Max;04:12:49.0 +4403;Hauser Wolfgang;02:55:57.6 +4404;Häusler Philippe;03:26:49.3 +4406;Herren Lars;04:11:27.4 +4407;Hertach Alain;03:46:24.5 +4408;Hess Ivan;03:43:57.6 +4409;Hess Oliver;04:05:34.2 +4411;Hohler Patrick;03:56:55.4 +4412;Holenweger Michael;04:16:36.2 +4413;Hollenstein Alex;03:44:11.4 +4414;Hösli Hans;03:28:24.9 +4415;Hubacher Thomas;03:13:08.5 +4416;Huber René;04:36:47.8 +4417;Hug Rene;03:14:54.9 +4419;Humbel Jürg;03:30:52.9 +4420;Hungerbuehler Pius;03:53:02.2 +4421;Inniger Hans-Christoph;04:41:42.5 +4424;Janser Alfred;04:13:22.2 +4425;Jegen Thomas;03:57:29.2 +4426;Joller Thomas;03:23:38.6 +4428;Jutzi Stephan;04:09:25.0 +4433;Kaufmann Hanspeter;03:50:16.8 +4435;Kellenberger Stephan;03:15:43.1 +4436;Keller Daniel;03:58:39.7 +4437;Keller Ernst;02:58:15.0 +4438;Kelling Udo;03:04:50.7 +4440;Kimmerlin Thierry;03:16:52.9 +4441;Kindlimann Heinz;03:43:31.0 +4444;Kobi Peider;04:43:57.9 +4445;Kopalek Peter;03:20:33.6 +4448;Küchler Thorsten;03:22:32.7 +4449;Kuster Marcel;03:17:29.6 +4450;Kuster Matthias;03:53:57.8 +4452;Lanz Peter;02:51:38.1 +4453;Laubscher Daniel;03:35:14.5 +4454;Leach Steven;04:22:52.4 +4455;Leder Manfred;03:38:05.7 +4456;Lehmann Nik;03:08:46.4 +4457;Lehni Markus;03:51:10.8 +4458;Leiggener Christoph;04:24:27.4 +4459;Leuener Felix;03:56:31.0 +4461;Loosli Adrian;03:07:31.4 +4462;Lopes Oliveira Leonel;03:05:47.9 +4463;Lorencez Isaac;03:48:08.4 +4465;Lucas François;03:44:05.5 +4466;Lüthi Jean-Pierre;03:36:16.2 +4467;Lüthi Marc;04:06:42.3 +4468;Lüthi Markus;03:55:50.1 +4469;Maag Reto;03:30:04.5 +4470;Maegli Rolf;04:07:31.1 +4471;Maier Bernhard;03:49:12.4 +4472;Malacarne Sergio;03:57:34.6 +4475;Martel Jan;04:12:25.3 +4477;Maurer Dani;03:06:14.8 +4478;Meichtry Urs;03:14:13.7 +4479;Meier Bruno;03:03:26.5 +4480;Meier Daniel;03:28:25.1 +4481;Meier Martin;04:39:50.7 +4483;Merian Paul;03:27:56.6 +4484;Messer Markus;03:18:13.8 +4485;Metzger Bernhard;04:24:15.7 +4487;Minuscoli Patrik;03:17:11.0 +4488;Miralhos Paulo;02:42:54.8 +4490;Moncaro Andrea;04:00:17.6 +4491;Montagut Vidal Jorge;03:27:46.0 +4492;Moser Ives Jan;03:13:18.8 +4493;Moser Mario;04:25:43.7 +4494;Motavalli Masoud;04:39:41.9 +4495;Mühle Housi;03:44:56.6 +4496;Mullaney Chris;04:00:35.0 +4497;Murbach Umberto;04:44:47.0 +4499;Nehmer Raphael;04:12:31.0 +4500;Neuenschwander Hanspet;04:31:36.4 +4501;Notter Thomy;04:11:43.5 +4502;Nünlist Nüni;04:26:57.3 +4503;Nusseck Peter;03:20:19.2 +4504;Nyfeler Thomas;03:29:17.7 +4505;Oberhänsli Fabian;03:20:58.3 +4506;Obrist Beat;04:26:57.6 +4507;Obrist Fabio;04:11:19.7 +4508;Odden Lee;03:26:42.2 +4509;Odermatt Karlheinz;04:23:05.4 +4510;Oetiker Beat;04:43:15.9 +4511;Omlin Niklaus;03:39:26.4 +4512;Ommerborn Stephan;03:57:30.2 +4513;Ort Fred;03:42:06.9 +4514;Pagan Olivier;03:56:16.6 +4515;Pauli Marc;03:18:53.3 +4516;Perez De La Sota Gabri;04:08:57.6 +4517;Perren Patrick;02:42:52.6 +4519;Pfäffli Andreas;03:12:35.9 +4521;Pfister Andreas;03:11:43.3 +4522;Pfister Christian;03:51:55.3 +4523;Plattner Daniel;04:14:34.5 +4525;Poenaru Daniel;03:58:25.8 +4527;Portmann Philipp;03:33:19.1 +4529;Pravato David;03:18:04.8 +4530;Provinzano Ignazio;03:14:06.3 +4531;Racine Gabriel;04:12:19.3 +4532;Raiser Thomas;03:30:12.3 +4533;Rando Andrés;03:36:42.3 +4535;Reber Rolf;03:30:37.7 +4537;Renz Thomas;03:17:41.1 +4538;Rickenbacher Leo;03:03:42.2 +4541;Risler Martin;03:31:03.8 +4542;Romer Paul;03:16:56.2 +4544;Rüegg Roman;03:23:46.4 +4545;Russenberger Thomas;03:30:07.3 +4546;Rütimann Willy;04:06:31.0 +4547;Sadriu Kreshnik;05:17:51.5 +4548;Salisbury David;03:40:37.7 +4549;Schädeli Ernst;03:44:00.9 +4550;Schäfer Kai;03:05:08.6 +4551;Scheller Gerd;03:15:32.5 +4552;Schiavarelli Nicola;03:31:43.0 +4554;Schlepfer Roland;04:07:21.4 +4556;Schmidl Martin;03:21:19.3 +4558;Schmitt Marius Gerhard;03:43:19.3 +4559;Schuler Othmar;03:10:19.1 +4560;Schwegler Klaus;04:12:49.8 +4561;Siegenthaler Thomas;03:43:26.1 +4562;Signer Peter;03:36:24.1 +4564;Spiegel Patrick;03:11:15.1 +4565;Städler Oliver;03:32:53.0 +4568;Steiner Daniel;04:36:39.3 +4569;Steinhauser Jürg;03:55:45.8 +4570;Stephani Reto;04:14:32.2 +4571;Stoppiello Frank;04:27:04.8 +4572;Strebel Paddy;03:33:53.2 +4573;Suter Daniel;04:04:30.7 +4574;Taucher Joshua;04:22:37.3 +4576;Thode Andreas;03:34:42.0 +4577;Isler Bruno;03:33:38.7 +4578;Thomschke Till;03:33:50.5 +4579;Tobler Daniel;03:12:40.1 +4580;Tomic Slobodan Bob;04:29:48.6 +4581;Tonak Torsten;02:52:15.5 +4582;Tonolli Alberto;05:04:59.1 +4584;Tuta Niko;04:18:53.6 +4588;Vogt Roland;03:42:03.5 +4589;von Känel Hans;03:40:14.8 +4590;Vonchristen Martin;04:08:13.8 +4591;Walder Christoph;04:27:39.5 +4592;Walker Steven;03:10:20.3 +4593;Walter Martin;03:02:43.1 +4594;Wang Lei;05:21:55.4 +4596;Wehren Marcel;03:31:01.8 +4597;Wey Franz;04:08:53.7 +4598;Wey Herbert;04:01:43.8 +4599;Wey Simon;03:22:42.6 +4600;Wick Bernhard;03:50:22.0 +4602;Wille David;04:46:13.0 +4603;Wirth Thomas;04:30:41.6 +4605;Wüest Simon;03:59:02.1 +4606;Wunderli Andreas;03:38:17.9 +4607;Wyler Marco;04:21:15.1 +4608;Zähnler Bruno;04:27:22.2 +4609;Zehnder Rolf;03:58:45.5 +4610;Zehntner Daniel;03:23:23.5 +4611;Zimmermann Niklaus;03:36:50.5 +4612;Zimmermann Werner;04:37:54.2 +4613;Zumbach Charles;03:33:26.8 +4614;Ackermann Martin;03:28:06.3 +4615;Berndt Matthias;04:05:43.4 +4616;Bertucci Dario;03:51:29.8 +4619;Buchmann Remo;04:12:44.2 +4620;Flückiger Hans;03:46:16.2 +4621;Germann Peter;03:32:20.3 +4622;Hagemann Peter;03:31:09.0 +4623;Halme Tero;02:59:02.2 +4625;Huber Daniel;03:25:29.1 +4626;Jeannet Olivier;03:26:00.8 +4627;Jorge Humberto;03:38:11.0 +4629;Kälin Sepp;03:27:46.9 +4631;Kellenberger Daniel;04:33:31.9 +4632;Knupfer Stefan;02:58:32.2 +4633;Knüsel Markus;03:26:26.8 +4634;Kovar Thomas;02:59:45.9 +4636;Kuhn Matthias;03:02:55.4 +4638;Lustenberger Kurt;02:39:45.1 +4640;Mantel Rico;05:11:09.4 +4641;Martin Ludwig;03:26:31.4 +4642;Mazzotta Cosimo;03:21:14.2 +4644;Moret Raoul;03:55:48.2 +4645;Nebbe Harry;03:13:15.5 +4646;Neuenschwander Andre;04:13:30.5 +4647;Pellegrini Fausto;03:08:09.8 +4648;Pellkofer Martin;03:32:45.4 +4649;Peterli Ralph;04:26:53.4 +4650;Phan Quang Biu;03:38:30.9 +4653;Ruoss Patrick;03:17:49.2 +4654;Ryser Martin;03:22:53.6 +4655;Schmid Andreas;02:45:39.7 +4656;Schmidt Yvan;04:03:33.3 +4657;Schwarzkopf Dominik;04:57:38.5 +4660;Stoob Max;04:29:24.7 +4661;Tomczak Krzysztof;03:13:04.2 +4664;Wellington Daniel;03:57:55.6 +4665;Zgraggen Lorenzo;04:01:05.6 +4668;Häuptli Daniel;03:34:36.8 +4669;Babounakis Antonios;03:20:54.8 +4670;Di Giovanni Bruno;03:54:13.1 +4672;Böni André;04:21:43.2 +4673;Keller Christian;04:40:52.6 +4674;Briner-Weber Markus;03:43:34.2 +4676;Brenner Patrick;02:38:58.1 +4677;Oyetan Seun;04:24:23.2 +4678;Manivanan Vijay Sudhak;04:08:11.8 +4679;Lehner Markus;04:23:29.0 +4680;Stadel Joachim;03:14:49.9 +4681;Sudan Philippe;03:11:11.3 +4682;Holzapfel Helmut;04:10:32.5 +4683;Lanz Martin;02:37:54.8 +4684;Gorrie Luke;04:44:13.6 +4685;Sutter Markus;03:05:39.8 +4686;Meier Werner;03:51:16.6 +4687;Mvongo Jean-Paul;03:20:08.7 +4688;Czaykowsky Marco;03:25:26.2 +4689;Czaykowsky Yves;03:14:06.0 +4690;Kümin Otto;05:09:42.8 +4691;Thalmann Daniel;03:15:41.4 +4692;Wespi Bernhard;03:41:54.0 +4693;Geiger Christoph;04:18:19.6 +4694;Oswald Flurin;05:01:23.6 +4695;Mader Kevin;03:20:24.8 +4696;Gentile Daniele;03:26:43.6 +4698;Ahler Markus;03:58:28.3 +4700;Zuzolo Vincenzo;04:32:45.9 +4701;Lochmann Guido;04:03:18.1 +4702;Bartosch Lukas;03:54:56.4 +4703;Pfyffer Stefan;03:37:36.1 +4704;Unternährer René;03:24:40.5 +4705;Habisreutinger Thomas;03:35:27.8 +4706;Pokora Daniel;03:13:45.2 +4708;Steinbach Simon;03:44:59.6 +4709;Bischof Harald;04:06:47.0 +4710;Kohli Bernhard;03:40:30.6 +4711;Bigger Reto;03:25:21.6 +4712;Lopez Oswaldo;04:38:07.8 +4713;Ortiz Claviso Luis Alb;04:28:03.2 +4949;Richner Peter;03:29:21.3 +6003;Beinhoff Martin;03:51:58.2 +6004;Bucherer Thomas;04:07:49.2 +6005;Cupples Richard;03:34:25.9 +6006;Dorn Alexander;03:47:21.5 +6007;Frou Benoit;03:31:11.6 +6008;Gerull John-Phillip;03:23:42.2 +6010;Hertig Andi;03:59:01.1 +6011;Joss Myriam;03:33:17.7 +6012;Lichtenberger Alexande;04:10:32.4 +6013;Mimouni Didier;03:13:49.1 +6014;Moeckli Simon;03:55:15.5 +6015;Nashid Ibrahim;04:13:34.7 +6016;Ochsner Thomy;04:52:15.2 +6017;Schmid Alex;04:20:38.5 +6018;van Ulzen Manuela;03:56:48.8 +6019;Vogeli Bernhard;03:23:07.4 +6020;Waldburger Claudio;03:43:51.9 +6021;Walser Alexander;04:15:57.0 +6022;Witzel Christian;03:17:20.1 +6023;Rupp Thomas H.;03:29:09.6 +6101;Affolter Darius;03:24:44.8 +6104;Graham Angus;04:31:29.8 +6106;Lee Jon;03:55:54.6 +6107;Luessi Andreas;03:19:44.4 +6108;Melas Theocharis;05:24:59.7 +6110;Rentsch Beat;03:41:14.7 +6111;Rezk Markus;03:56:55.2 +6112;Schumacher Martin;03:44:43.2 +6113;Sieger Pascal;03:17:43.8 +6115;Sutter Andy;04:12:08.0 +6116;van Buul Peter;03:26:02.6 +6118;Wieland Lucio;04:56:57.3 +6119;Zuzak Miro;04:30:29.7 +6120;De-Vizzi Evelyn;04:52:55.3 +6121;De-Vizzi Fiona;04:26:54.7 +6122;Kläger Roland;03:15:58.8 +6201;Allard Darren;04:26:56.4 +6204;Greco Luigi;04:01:57.2 +6205;Huber Sibylle;03:52:02.2 +6206;Ostertag Andreas;03:02:03.7 +6207;Piekarz Iwona;04:05:35.5 +6208;Rodriguez José Manuel;04:26:30.9 +6210;Waelti Philippe;03:43:39.0 +6211;Ziegler Philippe;03:26:06.0 +6301;Baumgartner Rico;03:57:39.3 +6302;Cestonato Antonella;04:01:16.4 +6303;Eggenberger Kurt;03:40:38.8 +6304;Enderlin Michèle;04:41:47.1 +6305;Hauser Claudia;03:53:32.8 +6306;Litscher Daniel;04:06:55.2 +6307;Regenscheit Fabian;03:43:11.8 +6308;Sommer Martin;04:23:44.8 +6309;Mathis Stefan;03:36:46.0 +6310;Merkli Stephan;03:06:32.1 +6311;Türler Thomas;03:08:12.6 +6401;Baumann Matthias;03:31:08.5 +6402;Baumgartner Philip;03:42:46.7 +6403;Biefer Christian;03:34:56.4 +6405;Faller Sascha;04:17:10.0 +6406;Ganz Jeannette;03:52:36.6 +6407;Hari Daniel;03:01:44.4 +6408;Hüsser Zoe;04:10:43.6 +6409;Lacy David;03:26:32.1 +6411;Maag Felix;03:38:30.9 +6412;Rehal Jaspal;03:53:54.4 +6413;Sax Fredi;04:31:08.8 +6414;Schmitt Martin;03:54:46.5 +6415;Schraven Jan-Christian;05:28:19.0 +6416;Stoller Fabienne;04:38:16.1 +6417;Winkler Hansjörg;03:25:01.0 +6418;Zanotelli Reto;03:47:17.5 +6419;Hug Pascal;03:13:19.9 +6420;Pavlovic Marko;03:06:25.1 +6421;Seebach Nicole;04:18:42.6 +6422;Wegmann Joachim;04:22:49.0 +7001;Leupi Daniel;03:38:01.3 +7002;Ziegler Roger;03:16:34.3 +7003;Fässler Hildegard;03:38:29.4 +7005;Egger Urs;03:17:35.5 +7006;Egger Urs;03:35:12.7 +7007;Abele Martin;03:17:01.9 +7008;Schmidig Urs;03:25:06.6 +7009;Mayenzet Didier;03:24:19.9 +7010;Rüdisüli Pius;03:09:17.0 +7011;Lauener Nicole;03:55:59.2 +7012;Wettstein Peter;03:58:32.8 +7013;Wettstein Peter;03:33:56.4 +7014;Wettstein Peter;03:48:10.4 +7015;Welti Martin;03:21:19.9 +7016;Smits Léon;03:31:41.3 +7017;Diethelm Theri;04:17:34.0 +7018;Achermann Annemarie;04:04:04.4 +7019;Thomys Heike;03:55:56.8 +7020;Thomys Heike;04:04:24.4 +7021;Dettwiler Daniel;03:35:12.1 +7022;Zehr Bruno;03:20:21.9 +7024;Spycher Hunziker Susan;03:29:11.2 +7025;Grieder Sandra;04:03:23.1 +7026;Schumpf Nicole;04:33:36.3 +7027;Gantner Felicitas;03:39:29.7 +7028;Vaucher Pascale;03:37:56.5 +7029;Frost Elke;03:15:55.7 +7030;Vorbrodt Dominique;03:41:23.8 +7031;Koch Pascal;03:21:34.9 +7032;Ferrari-Fidel Frederic;03:21:19.8 +7033;Cloos Lis;03:42:50.9 +7034;Urosevic Aleksandra;03:36:55.0 +7035;Knaus Michèle;04:24:04.0 +7036;Flückiger Miriam;03:48:12.8 +7037;Stutz Markus;03:29:55.2 +7038;Niffenegger Viktor;03:15:01.3 +7039;Wehleit Kolja;03:37:34.4 +7040;Wehleit Kolja;03:53:06.3 +7041;Wehleit Kolja;03:38:34.9 +7042;Knecht Anina;03:28:39.7 +7043;Pfister René;04:04:57.2 +7044;Fröhlich Valérie;03:35:20.5 +7045;Blomberg Per-Inge;04:02:01.8 +7046;Lhommel Laurence;03:13:06.8 +7047;Bollinger-Könz Dieter;03:08:41.2 +7049;Brutschi Daniela;03:38:47.8 +7050;Platzer Martina;03:46:53.0 +7051;Ammann Barbara;02:58:56.3 +7052;Aubry Luzia;03:29:33.1 +7054;Stössel Daniel;03:26:15.0 +7055;Gschwend Christian;03:41:46.2 +7056;Leiser Kolja;03:37:04.8 +7057;Grütter Urs;03:05:29.8 +7058;Coester Franz;03:53:05.8 +7059;Wirz Markus;03:25:52.8 +7060;Wirz Markus;03:22:32.2 +7061;Albisser Beat;03:36:49.4 +7062;Endres Julia;03:56:24.5 +7063;Ummel Beat;03:14:20.7 +7064;Fischer Hurter Daniel;03:12:31.4 +7065;Senn Rolf;03:04:12.0 +7066;Tobler Raphael;03:17:22.0 +7067;Tobler Raphael;03:16:41.6 +7068;Tobler Raphael;03:15:21.0 +7070;Eggimann Thomas;03:25:22.5 +7071;Bartholdi Andre;03:26:19.9 +7072;Merk Gaby;03:49:16.5 +7073;Limacher Esther;03:20:57.8 +7074;Badertscher Sara;03:45:10.6 +7075;Francotte Benedicte;03:55:30.9 +7076;Boschung Bernard;04:01:42.7 +7077;Oswald Manfred;03:27:07.8 +7078;Steiner Markus;03:28:41.5 +7079;von Euw Martin;03:40:19.3 +7080;Buergi Taboada Carole;03:09:43.1 +7081;Cordey Olivier;03:44:06.7 +7082;Richinger David;03:29:20.7 +7083;Caminada Rafael;03:47:59.1 +7084;Schuermann Balz;03:14:12.4 +7085;Charrière Thomas;03:49:45.7 +7086;Vaterlaus Peter;03:34:58.1 +7087;Eggimann Andreas;03:21:26.4 +7088;Gemperle Patrik;03:40:13.6 +7090;Point Laetitia;03:24:53.5 +7091;Preisig Ueli;03:25:43.5 +7092;Huber Nadine;04:15:00.0 +7093;Friedli Corinne;03:30:37.4 +7094;Knechtli Thomas;03:26:56.1 +7095;Hasler Catherine;03:32:33.5 +7096;Böllenrücher Melanie;03:09:13.6 +7097;Oung Raymond;03:57:14.8 +7098;Hassler Daniel;03:33:44.8 +7099;Bachmann Maria;03:43:11.0 +7100;Petersen Claus Gregers;04:00:18.8 +7101;Petersen Claus Gregers;03:52:08.6 +7102;Koch Roman;03:56:38.8 +7103;Thalmann Hans-Peter;03:44:32.5 +7104;Beck Lea;03:30:28.7 +7105;Beck Lea;03:10:59.2 +7106;Beck Lea;03:27:46.3 +7107;Inderbitzin Kevin;03:30:31.4 +7108;Ledergerber Isabelle;03:26:53.5 +7109;Carnevale Vito;03:54:49.9 +7110;Nguyen Raphael;03:38:06.6 +7111;Huwyler Reto;03:49:32.6 +7112;Trappitsch Stefan;03:49:28.6 +7113;Meier David;03:55:16.3 +7114;Weisstanner Andreas;03:39:43.2 +7115;Donath Marc;03:33:25.0 +7117;Klein Tobias;03:51:55.8 +7118;Keller Claudia;03:33:02.7 +7119;Gabriel Reto;03:35:04.0 +7120;Holzinger Thomas;03:35:01.2 +7121;Frischknecht Christine;03:52:07.1 +7122;Roth Jeannine;04:01:38.6 +7123;Delahaye Benjamin;03:22:30.2 +7124;Trifari Patricia;03:34:45.5 +7125;Mühlberg Martin;03:28:10.9 +7127;Leuenberger Susanne;04:09:14.5 +7128;Lurati Laura;03:41:38.9 +7129;Cackett Joanne;03:35:02.7 +7130;Baumgartner Philipp;03:31:11.3 +7131;Altmann Andreas;03:38:29.8 +7132;Marti Gabriel;03:20:21.8 +7133;Steiger-Glocker Gaby;03:59:20.6 +7134;Ruprecht Balz;03:04:17.3 +7135;Stoessel Laura;03:39:06.5 +7136;Lauffenburger Roman;03:56:36.6 +7138;Williamson Libby;03:54:41.0 +7139;Koch Gisela;04:21:23.3 +7140;Gubelmann Patrick;03:49:50.0 +7141;Majoleth Stefan;03:16:44.7 +7142;Parro Paolo;03:23:59.2 +7143;Zollinger Reto;03:23:12.7 +7144;Gundermann Julia;04:19:35.5 +7145;Tross-Müller Marianne;04:02:29.8 +7146;Müller Anna-Katharina;03:32:55.9 +7147;Suter Lorena;03:46:31.1 +7148;Grindley Peter;03:49:28.6 +7149;Leutwiler Sara;03:40:08.6 +7150;Bachmann Beatrice;04:23:48.9 +7151;Streuli Gabriela;03:18:41.6 +7152;Stefka Daniel;03:49:46.4 +7153;Kofel Felix;03:34:29.6 +7154;Burkhard Patrick;03:06:38.8 +7155;Hess Corina;03:56:24.7 +7156;Lehmann Beat;04:18:47.4 +7157;Patkovic Slavica;04:14:22.9 +7158;Rudat Jörg;04:03:15.4 +7159;Price Robert;03:48:57.9 +7160;Imhof Nathalie;04:10:43.7 +7161;Sommer Ernesto;04:23:31.9 +7162;von Gunten Erich;03:36:42.9 +7163;Niederberger Katja;04:31:56.7 +7164;Püchel Johannes;03:43:53.3 +7165;Studer Lukas;03:20:55.7 +7167;Graf Bettina;03:32:31.9 +7168;Burckhardt Straub Caro;04:10:05.5 +7169;Camenzind Sepp;03:36:18.1 +7170;Rech Marielle;03:25:46.7 +7171;Gut Michael;03:31:07.9 +7172;Sigg Arnold;03:25:00.5 +7173;Honegger Silja;03:45:55.5 +7174;Heiz Patrick;04:12:02.0 +7175;Rais Jeanne;04:01:39.4 +7176;Beyeler Erika;03:53:31.7 +7177;Zürcher Thomas;03:33:57.9 +7178;Sutter Matthias;03:46:55.3 +7179;Sutter Matthias;03:24:44.2 +7180;Sutter Matthias;03:54:50.5 +7181;Jud Maria;03:49:48.5 +7182;Bonfranchi Riccardo;04:33:12.3 +7183;Rigamonti Alessandro;03:31:34.0 +7184;Kaufmann Patrick;03:26:30.1 +7185;Ortega Lydia;04:20:15.7 +7186;De Faveri Marisa;03:50:29.7 +7187;Ortega Lydia;03:41:42.2 +7188;Hruba Gabriela;03:35:52.7 +7189;Hruba Gabriela;03:53:28.6 +7190;Kilbert Gert;02:58:12.3 +7191;Aniol Wars;02:51:31.1 +7192;Kraus Bret;03:31:50.2 +7193;Wenger Esther;03:58:17.1 +7194;Schneeberger Ivonne;03:33:36.3 +7195;Luginbühl Carolin;03:41:17.9 +7196;Furrer Roman;03:24:42.4 +7197;Nesme Salome;03:41:42.7 +7198;Pirlet Xavier;02:51:29.0 +7199;Schneeberger Ivonne;03:55:03.3 +7200;Schneeberger Ivonne;03:30:43.7 +7201;Schneeberger Ivonne;04:34:24.8 +7202;Schneeberger Ivonne;03:40:37.1 +7203;Schneeberger Ivonne;03:13:40.7 +7204;Schneeberger Ivonne;03:50:16.8 +7205;Schneeberger Ivonne;03:54:05.3 +7206;Schneeberger Ivonne;03:14:16.9 +7207;Schneeberger Ivonne;04:05:02.7 +7208;Montanari Dani;03:01:41.2 +7209;Dolfing Henrico;02:52:39.4 +7210;Maag Ana;02:50:57.2 +7211;Hafner Markus;03:48:44.7 +7213;Schilliger Rolf;03:41:56.1 +7214;Fontanive Christian;04:39:49.0 +7215;Fontanive Christian;03:32:31.9 +7216;Fontanive Christian;03:50:43.3 +7217;Mäder Petra;04:12:24.2 +7218;Schneeberger Ivonne;04:13:15.0 +7219;Ritter Christine;03:53:54.8 +7220;Hancock Julia;04:06:52.5 +7221;Hildebrand Carmen;03:30:30.0 +7222;Reiser Evelyne;03:23:32.0 +7223;Schaller Oscar;02:58:40.7 +7224;Fäh Marco;03:03:43.9 +7225;Grogg Diana;03:08:03.7 +7226;Holdener Laura;03:57:17.3 +7227;Jud Janine;03:28:37.9 +7228;Ebnöther Reto;03:18:10.3 +7229;Thomas Astrid;04:08:52.8 +7230;Schawalder Peter;03:51:06.5 +7231;Lassmann Fredi;03:09:56.7 +7232;Hansmann Nicole;03:52:12.0 +7233;Fuhrer Susanna;03:36:22.6 +7235;Güttinger Daniel;03:34:01.3 +7236;Eugster Olivier;02:53:58.1 +7237;Fitoussi Cecile;04:32:55.9 +7238;Holzberg Nina;03:38:14.5 +7239;Zahno Andi;03:54:03.4 +7240;Gyomlay Katinka;03:40:30.9 +7241;Leitner Fabian;03:19:16.4 +7242;Reber Samuel;03:13:08.2 +7243;Marti Georg;03:33:04.8 +7244;Ruggaber Michel;03:18:31.2 +7245;Theiler Helen;04:11:34.1 +7246;Theiler Helen;03:44:07.8 +7247;Hormann Christian;03:28:45.1 +7248;Hempen Roland;03:55:05.5 +7249;Koch Gisela;03:50:52.0 +7250;Kollbrunner Rebekka;03:53:14.9 +7251;Schmid Daria;03:35:02.3 +7252;Wigger Marcel;03:32:08.3 +7253;Hirt Christian;04:11:43.3 +7254;Mühlethaler Armando;03:37:55.2 +7258;Weiss Ruth;03:45:49.1 +7259;Weisstanner Andreas;03:30:56.0 +7260;Roberts Tania;03:52:05.6 +7261;Fischer Marcel;03:21:50.0 +7262;Fischer Marcel;03:37:54.2 +7263;Blunschi Selina;04:04:23.1 +7264;Säuberli Franziska;03:50:01.9 +7265;Hürlimann Janine;04:30:01.3 +7266;Favre Guy;02:38:31.4 +7267;Wehrli Edith;03:40:23.1 +7268;Bonfils Jacqueline;03:40:51.1 +7269;Schneider Sven;03:37:03.3 +7270;Annaheim Simon;02:29:43.2 +7271;Mohenski Brigitte;04:06:01.5 +7272;Fischer Marc Pascal;03:17:03.8 +7273;Stettler Stefan;03:49:30.2 +7274;Stettler Christa;03:20:45.8 +7275;Hocher Ursula;04:09:44.0 +7276;Hager Michel;03:29:40.7 +7277;Kreppke Jan-Niklas;02:37:53.1 +7278;Grassi Grazia;04:03:01.1 +7279;Cerjak-Frei Cornelia;03:52:05.8 +7280;Suter Peter A.;03:32:10.6 +7281;Föllmi Carolyn;04:15:45.6 +7282;Bischof Simone;03:08:49.4 +7284;Ruile Stefan;02:46:27.9 +7285;Schneider Roland;03:46:04.9 +7286;Scott Steven;03:04:03.1 +7287;Hohl Isabelle;03:33:15.7 +7288;Stirnimann Ruedi;03:47:04.2 +7289;Stirnimann Ruedi;03:44:25.4 +7290;Weiss Martin;03:07:33.0 +7291;Fuccaro Alexandra;03:31:42.7 +7292;Ratjen Christian;03:33:12.7 +7293;Walter Susanna;04:09:57.4 +7294;Lucas Elise;03:29:58.8 +7295;Abbenseth Ben;03:13:55.0 +7296;Skalik Vojtech;03:25:57.6 +7297;Meier Michael;03:08:48.7 +7298;Bieler Sarah;03:57:19.5 +7299;Vetter Beat;03:02:15.8 +7300;Klinkmann Thomas;03:22:48.2 +7301;Frey Marcel;04:07:28.3 +7302;Frey Marcel;03:33:33.8 +7304;Scholz Urte;04:03:08.1 +7305;Maltry Karin;03:50:28.7 +7306;Gloor Marco;03:47:16.8 +7307;Ströbele René;04:01:34.2 +7308;Calörtscher Denise;03:37:54.9 +7309;Magee Karina;03:21:43.1 +7310;Rabenbauer Karin;03:48:48.0 +7311;Rauber-Lüthy Christine;03:58:37.3 +7312;Ballabio-Höhne Sabrina;03:52:51.5 +7314;Mächler Emil;03:36:50.7 +7315;Hausmann Nicole;04:00:49.7 +7316;Kälin Robin;04:24:31.2 +7317;Maier Sandy;04:04:36.9 +7319;Werer Karin;03:41:33.6 +7320;Schilling Stephanie;04:22:31.9 +7321;Ineichen Gerhard;03:16:54.1 +7322;Gilgen Sascha;03:27:09.1 +7323;Salinas Antoinette;03:52:57.3 +7324;Rüthemann Helen;03:25:42.5 +7325;Bracko Oliver;03:09:00.2 +7326;Schaelin Marcel;03:47:54.9 +7327;Lüllau Claus;04:07:23.3 +7328;Späni Andrea;03:41:38.7 +7329;Donner Georg;03:26:31.9 +7330;Rutz Eric;03:49:55.7 +7331;Stampfli Reto;03:10:50.2 +7332;Wloka Martin;03:32:23.2 +7333;Belguendouz Abdelmalek;03:51:14.4 +7334;Wüthrich Thomas;03:21:20.5 +7335;Schmiedler Ursula;03:25:43.0 +7336;Güldenapfel Erhard;03:41:31.0 +7337;Schönbächler Ralph;03:41:31.5 +7338;Hofmann Daniel;03:20:55.5 +7339;Traxler Sabrina;03:23:26.2 +7340;Traxler Sabrina;03:24:52.8 +7341;Schneble Max Charles;03:11:57.8 +7342;Wichmann Fabienne;03:47:39.0 +7343;Frei Stefan;03:41:43.6 +7344;Biedermann Urs;03:27:19.3 +7345;Guindo Dominique;04:17:47.1 +7346;Niehus Swaantje;03:43:50.3 +7347;Chèvre Frédéric;04:07:45.6 +7349;Mose Soren;03:43:22.5 +7350;Shtufi Lara;03:59:00.0 +7352;Müller Wenzel;03:51:13.7 +7353;Schoenholzer Beat;03:46:45.7 +7354;Schultz Tilman;04:07:14.6 +7355;Kölsky Carsten;03:40:21.6 +7356;Schieler Katrin;04:27:28.6 +7357;Schmidt Marc Andre;04:13:16.0 +7358;Kadlec Sven;03:35:45.2 +7359;Hörler Rhea;03:59:12.4 +7360;Gehri Friederike;04:01:45.4 +7361;Kaufmann Christian;03:51:07.3 +7362;Tschurr Flavian;03:20:50.2 +7363;Dörgeloh Martin;03:13:13.5 +7364;Elmer Heiri;03:23:34.2 +7365;Elmer Heiri;03:31:30.3 +7366;Elmer Heiri;03:26:55.4 +7367;Stauch Vanessa;03:11:35.6 +7368;Sieber Eva;03:57:18.3 +7369;Suter Franziska;02:59:01.5 +7370;Scattolin Pascal;03:11:31.8 +7371;Walter Thomas;03:29:40.3 +7372;Seger Holger;03:29:57.5 +7373;Ruest Erich;03:29:54.5 +7375;Sigrist Yvonne;03:28:37.3 +7376;Landolt Fridolin;03:15:18.2 +7377;Meier Anita;04:12:26.0 +7379;Bleiker Rolf;03:21:31.4 +7380;Fontolliet Daniel;03:55:58.9 +7381;Foletti Anita;03:51:07.8 +7382;Denier Claudia;04:05:17.5 +7383;Fuchs Ruth;04:28:01.9 +7384;Studer Larissa;04:07:31.6 +7385;Flückiger Reto;03:42:29.2 +7386;Egli Susanne;03:54:19.9 +7388;Bachmann Roger;03:51:44.7 +7389;Brunner Heiko;03:46:08.8 +7390;Zemp Peter;03:51:09.1 +7391;Bachmann Ruedi;03:22:08.6 +7392;Camenzind André;02:54:12.8 +7393;Steiner Sarah;03:34:59.1 +7394;Walter Urs;03:28:45.0 +7395;Curiger Andreas;03:08:36.7 +7396;Romaniuc Marcelo Rober;04:07:36.4 +7397;Fehr Jessica;03:30:09.2 +7398;Jakob Barbara;03:42:04.4 +7399;Jakob Barbara;04:00:14.3 +7400;Casali Daniela;03:54:45.6 +7401;Casali Fulvio;03:46:58.7 +7402;Felger Martin;03:38:26.5 +7403;Zürcher Toni;03:32:47.5 +7404;Flachsmann Stefan;03:03:28.0 +7405;Weiersmüller Jacquelin;04:07:45.3 +7406;Weiersmüller Jacquelin;04:06:21.6 +7407;Weiersmüller Jacquelin;04:02:38.3 +7408;Weiersmüller Jacquelin;04:27:12.0 +7410;Willi Barbara;03:20:14.4 +7411;Auf der Mauer Raphael;02:43:58.0 +7412;Kutej Stefan;03:27:40.5 +7413;Cappiello Mauro;03:28:20.4 +7414;Tatalias Melina;03:41:37.0 +7415;Sherlock Cushla;03:41:14.2 +7416;Benhauresch Abdel;03:27:43.6 +7417;Pircher Daniel;03:54:15.9 +7418;Sasso Angela;03:46:20.3 +7419;Meyer Bernhard;03:13:50.2 +7420;Olson Garrett;03:36:52.4 +7421;Künzle Doris;03:39:37.1 +7422;Knauer Anne-Juliane;03:25:26.0 +7423;Schleifer Judith;03:57:50.6 +7424;Goessler Franziska;03:43:50.0 +7425;Beeler Etienne;03:27:16.0 +7426;Wagner Mario;03:27:13.1 +7427;Niklaus Christin;03:41:38.2 +7429;Birkeland Ina;03:55:35.1 +7430;Adelmann Horst;03:41:01.5 +7431;Sommer Martin;03:55:51.4 +7432;Eltgen Johannes;03:19:10.5 +7433;Jörg Silvana;03:42:14.0 +7434;Baumann Thomas;03:47:21.1 +7435;Ulrich Barbara;03:41:15.5 +7436;Volz Andreas;03:34:37.7 +7437;Britschgi Dani;03:51:54.0 +7438;Fleetwood Rahel;03:40:22.3 +7439;Goulbourne Jane;04:06:30.0 +7440;Plüss Samuel;03:22:32.4 +7441;Fotheringham Jilly;04:39:27.5 +7442;Wirz Peter;03:05:58.8 +7443;Hall Terry;03:25:45.6 +7444;Wintsch Hanna;03:52:58.5 +7445;Götz Thomas;03:14:35.0 +7446;Götz Thomas;03:10:48.9 +7447;Krampf Eckhard;04:18:50.5 +7448;Akpinar Hakan;03:04:17.3 +7449;Bourquin Philippe;03:41:35.5 +7450;Bley Petra;03:44:29.2 +7451;Landolt Thomas;03:18:15.3 +7452;Thoma Rolf;03:11:29.2 +7453;Dickenmann Stefan;03:09:23.3 +7454;Lehner Christoph;03:37:26.4 +7455;Marxer Ruth;04:12:30.2 +7456;Koch Gisela;04:00:22.9 +7457;Hiestand Steve;04:09:43.0 +7458;Maggiulli Ivan;04:22:05.4 +7459;Wu Daye;03:43:45.0 +7460;Wantz Nadine;03:37:12.6 +7461;Müller Rolf;03:34:40.7 +7462;Locher Beatrice;03:25:04.9 +7463;Cevik Selim;03:40:55.8 +7464;Schulz Bianca;03:30:38.0 +7465;von Aesch Christoph;03:07:51.5 +7466;Borner Laura;03:19:52.4 +7467;Koch Gustav;03:21:28.8 +7468;Lendenmann Tobias;03:37:11.0 +7469;Berger Verena;03:36:21.3 +7470;Berger Verena;03:31:16.4 +7471;Berger Verena;03:35:27.7 +7472;Betschart Markus;03:27:50.5 +7473;Feroce Adrian;02:59:01.1 +7474;Meier Thomas;03:02:31.4 +7475;Müller Lothar;03:19:58.5 +7476;Böni Ralf;03:20:43.9 +7477;Koller Urs;03:23:11.9 +7478;Bründl Michael;03:46:03.5 +7479;Wicki Robin;03:10:14.0 +7480;Fisler Guido;04:16:11.0 +7481;Bonato Dario;04:00:03.7 +7482;Müller Matthias;03:49:18.0 +7483;Balz Rene;03:18:02.0 +7484;Geiger Dominik;04:10:40.8 +7485;Werder Roland;03:35:59.1 +7486;Haldemann Peter;03:47:50.5 +7487;Peterhans Renato;03:50:15.9 +7488;Heusser Daniel;03:32:16.0 +7489;Meuli Barbara;04:15:41.5 +7490;Abplanalp Beat;02:56:18.8 +7491;Hoogerwerf Erik;03:20:51.9 +7492;Feurer Olivia;03:32:15.5 +7493;Lange Otto;03:37:58.9 +7494;De Lemos Antonio;04:10:09.7 +7495;Seematter Marc;03:02:33.2 +7496;Bühlmann Sandra;04:00:50.0 +7497;Benz Fabienne;04:00:49.9 +7498;Huber Paul;03:40:27.0 +7499;Pilz Michelle M.;03:56:20.5 +7500;Walser Thomas;03:40:42.7 +7501;Senn Monika;03:40:59.4 +7502;Denneberg Jürg;03:55:59.1 +7503;Lutz Stephan;03:12:00.6 +7504;Steiner Melvin;03:59:26.5 +7505;Jetter Patrick;03:39:07.8 +7506;Isler Dominik;03:33:58.7 +7507;Kaufmann Ursula;04:14:10.7 +7508;Reimann Olivia;03:41:57.2 +7509;Ziesack Myriam;03:44:39.6 +7510;Moser-Hausammann Brigi;03:56:57.8 +7511;Moser-Hausammann Brigi;03:56:57.7 +7512;Manz Hansruedi;03:40:15.9 +7513;Manz Hansruedi;03:41:44.7 +7514;Berli Beatrice;04:01:07.5 +7515;Weiler Walter;03:05:54.9 +7516;Bos Heleen;04:43:34.3 +7517;Hoidn Anuschka;03:55:28.0 +7519;Schroeder Bernd;03:26:23.5 +7520;Barlow Mike;03:17:44.7 +7521;Müller Philippe;03:17:20.1 +7522;Grob Gabriela;03:34:51.3 +7523;Bosshardt Felix;03:33:12.2 +7524;Bührer Roger;03:55:46.8 +7526;Pletscher Thomas;03:29:04.7 +7527;Rüttimann Erhard;03:13:11.7 +7528;Janik Evelyn;03:09:22.8 +7529;Huber Peter;03:35:41.4 +7530;Federspiel Heike;03:44:35.7 +7531;Müller Patrick;03:06:35.9 +7532;Karrer Dominique;03:38:35.0 +7533;Bührer Roger;03:47:50.4 +7534;Schönbächler Pascal;04:12:22.4 +7535;Kögel Harald;03:26:37.7 +7536;Huber Nicolas;03:53:55.4 +7537;Utz Patrick;03:29:23.6 +7538;Ricardoch Ag;03:54:22.7 +7539;Ricardoch Ag;03:39:43.7 +7540;Luise Ivo;03:24:29.5 +7541;Enz Daniel;03:38:51.4 +7542;Wiederkehr Mirjam;03:33:14.0 +7543;Ricardoch Ag;03:42:17.8 +7544;Ricardoch Ag;04:04:55.3 +7545;Jäggi Jean-Pierre;04:09:59.3 +7546;Habermacher Claudia;03:21:07.0 +7547;Rey Bruno;04:04:48.9 +7548;Krismer Saskia;03:44:54.0 +7549;Greuel Wanja;03:17:44.7 +7550;Weibel Martina;04:02:34.4 +7551;Hofmann Markus;03:20:40.2 +7552;Cathrein Rene;03:39:27.6 +7553;Cathrein Rene;03:28:22.3 +7554;Badertscher Jörg;03:12:07.7 +7555;Hassler Brigitte;04:09:54.8 +7556;Gisler Sybille;03:24:08.0 +7557;Bräm Corina;03:24:43.0 +7558;Hinder Christine;03:52:37.9 +7559;Buner Sacha;03:23:47.2 +7560;Illi Liselotte;03:28:04.8 +7561;Gasser Ronny;03:03:53.1 +7562;Schefer Stefan;02:59:20.5 +7563;Carl Anna Barbla;03:43:24.5 +7564;Hottinger Nicole;03:21:51.0 +7565;Rechsteiner Simone;03:28:45.5 +7566;Rutz Miriam;03:14:39.8 +7567;Umbricht Sarah;03:15:55.8 +7568;Gonzalez Arza Jose;04:28:07.1 +7570;Tedeschi Alfonso;03:28:39.8 +7571;Krebs Michaela;03:31:25.8 +7572;Willborn Alexander;03:30:52.6 +7573;Niederbacher Martin;04:10:14.3 +7574;Langhard Markus;03:34:16.7 +7575;Blatter Samuel;03:20:59.4 +7576;Kwak Grace;03:47:04.2 +7577;Müri Michaela;03:35:15.5 +7578;Seuring Carolin;03:45:02.9 +7579;Bär Eva;03:48:23.5 +7580;Meyer Nina;04:32:29.3 +7581;Zellweger Monique;03:25:58.5 +7582;Sutter Samuel;03:30:12.4 +7583;Saar Rachel-Lee;03:52:13.9 +7584;Morf Celine;03:29:13.6 +7585;Naito Shinichi;03:24:00.8 +7586;De Boni Oliver;03:30:53.5 +7587;Keller Max;03:29:53.3 +7588;Pinchiroli Ettore;03:14:14.3 +7589;Peter Peter;02:30:28.8 +7590;Ziegler Paul;02:29:58.0 +7591;Schärer Sandra;03:36:52.0 +7592;Kessler Hannes;03:22:18.0 +7593;Fraczak Marcin;03:43:49.7 +7594;Rüegg Roger;03:32:10.6 +7595;Tschudi Michèle;03:12:09.2 +7596;Bächer Rico;03:34:27.7 +7597;Hottarek Tatjana;03:58:52.1 +7598;Blatter Samuel;03:16:14.9 +7599;Bingesser Barbara;03:24:11.3 +7600;Vaia Karin;03:53:39.9 +7601;Gellert Alexandre;03:35:09.7 +7602;Sagolla Markus;03:41:17.9 +7603;Bisgaard Jane;04:00:09.4 +7604;Beurret Hermes;03:08:37.5 +7605;Harder Daniel;03:29:57.9 +7606;Harder Daniel;03:30:32.1 +7607;Kugler Raphael;03:13:30.7 +7608;Ploskonka Elmar;03:39:46.1 +7609;Kammerer Dorothee;03:26:09.6 +7610;Kammerer Dorothee;03:02:54.5 +7611;Koch Rachelle;03:44:11.7 +7612;Bolliger Aino;03:02:42.2 +7613;Bolliger Aino;03:55:59.6 +7614;Guggisberg Michael;03:03:11.1 +7615;Winter Beatrix;04:39:01.4 +7616;Vincenz Claudia;03:30:31.1 +7617;Györvari Lars;03:50:30.3 +7618;Künzle Stefan;03:25:50.0 +7619;Dütting André;03:42:42.2 +7620;Mondini Michèle;04:09:20.5 +7621;Rohner Catherine;03:29:21.0 +7622;Ammann Beat;02:37:36.2 +7623;Kummrow Valerie;03:36:06.5 +7624;Graf Peter;03:44:18.9 +7625;Graf Peter;02:42:09.8 +7626;Winiger Benjamin;03:50:28.6 +7627;Lüthi Markus;03:24:57.6 +7628;Blatter Samuel;03:33:51.6 +7629;Gaillard Stephane;03:33:35.1 +7630;Rüegg Marco;03:23:19.8 +7631;Rüttimann Urs;03:07:43.9 +7633;Koller Markus;03:04:41.8 +7634;Flury Ernesto;03:16:30.0 +7635;Specker Marco;03:09:45.6 +7636;Niklaus Tina;03:37:33.4 +7637;Widmer Nathalie;03:49:31.9 +7638;Gröbli Susanne;03:34:44.0 +7639;Rütimann Thomas;03:26:25.4 +7640;Graf Beatrice;03:31:13.2 +7641;Steiner Elisabeth;03:45:54.0 +7642;Croset Marcel;03:25:34.8 +7643;Scherrer Rainer;03:00:26.2 +7644;Kuhn Gabriela;03:36:44.4 +7645;Bernold Roman;03:25:29.2 +7646;Insley Anne;04:01:04.7 +7647;Wirth Jessy;03:17:09.9 +7648;Soldo Lovro;03:56:04.1 +7649;Mazziotta Raffaele;03:52:18.5 +7650;Lacharite Claudie;03:51:29.9 +7651;Manz Alexander;04:14:01.7 +7652;Staub Jürg;04:12:48.2 +7653;Petrakis Stefanos;03:37:33.9 +7654;Gerber Mark;03:15:01.1 +7655;Gerber Mark;03:17:27.8 +7656;Franzi Roger;03:27:52.3 +7657;Schmid Stefanie;03:36:29.5 +7658;Mehta Sunil;04:00:20.4 +7660;Spillmann Roger;04:05:07.3 +7661;Bolli Andreas;04:02:04.2 +7662;Suter Sabrina;03:52:01.0 +7663;Meier Helen;03:57:12.2 diff --git a/src/ch/zhaw/ads/ServerFactory.java b/src/ch/zhaw/ads/ServerFactory.java new file mode 100644 index 0000000..16805ae --- /dev/null +++ b/src/ch/zhaw/ads/ServerFactory.java @@ -0,0 +1,76 @@ +package ch.zhaw.ads; + +import java.io.File; +import java.io.IOException; +import java.io.RandomAccessFile; + +/** + * Classloader that handles file path of class + */ +class MyClassLoader extends ClassLoader { + private String path; + + MyClassLoader(ClassLoader parent) { + super(parent); + } + + /** + * @param name filename of class + * return content of file as array of bytes; if file does not exist return null + */ + private byte[] getBytes(String name) { + try { + System.out.println(name); + RandomAccessFile file = new RandomAccessFile(name, "r"); + byte[] data = new byte[(int) file.length()]; + file.readFully(data); + file.close(); + return data; + } catch (IOException e) { + } + return null; + } + + /** + * @param name filename of class + */ + public Class loadClass(String name, boolean resolve) throws ClassNotFoundException { + System.out.println("load:" + name + " " + resolve); + Class clazz; + byte[] classData = getBytes(name); + if (classData != null) { + clazz = defineClass(null, classData, 0, classData.length); + path = name.substring(0, + name.length() - clazz.getName().length() - ".class".length()); + return clazz; + } + if (!resolve) { + classData = getBytes( + path + name.replace(".", File.separator) + ".class"); + if (classData != null) { + return defineClass(null, classData, 0, classData.length); + } + } + return findSystemClass(name); + } +} + +/** + * ServerFactory -- Praktikum Experimentierkasten -- + * + * @author K. Rege + * @version 1.0 -- Factory zur Erstellung von Server Objekten + * @version 2.0 -- Dynamisches Nachladen + * @version 2.01 -- Fix deprecated Functions + */ +public class ServerFactory { + public static Class loadClass(String name) throws Exception { + MyClassLoader myClassLoader = new MyClassLoader( + MyClassLoader.class.getClassLoader()); + return myClassLoader.loadClass(name, true); + } + + public static CommandExecutor createServer(String name) throws Exception { + return (CommandExecutor) loadClass(name).getConstructor(new Class[]{}).newInstance(); + } +} \ No newline at end of file