summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThunderbolt <git@tforge.de>2018-04-26 10:09:34 +0200
committerThunderbolt <git@tforge.de>2018-04-26 10:09:34 +0200
commita439d29d8ff0bbee2d7c92c7594729c13c87baf8 (patch)
tree10f5bbdc749bbaefffb0c3fb5fb0a5354cc40bcd
downloadsplus-a439d29d8ff0bbee2d7c92c7594729c13c87baf8.tar.gz
splus-a439d29d8ff0bbee2d7c92c7594729c13c87baf8.zip
Initial commit
-rw-r--r--GoogleCalendar.ts90
-rw-r--r--LICENSE.md9
-rw-r--r--SplusParser.ts160
-rw-r--r--index.ts57
-rw-r--r--package-lock.json518
-rw-r--r--package.json20
-rw-r--r--sample.htm1247
-rw-r--r--tsconfig.json11
8 files changed, 2112 insertions, 0 deletions
diff --git a/GoogleCalendar.ts b/GoogleCalendar.ts
new file mode 100644
index 0000000..2376c6b
--- /dev/null
+++ b/GoogleCalendar.ts
@@ -0,0 +1,90 @@
+import * as fs from 'fs';
+import * as readline from 'readline';
+import {google} from "googleapis";
+
+const OAuth2Client = google.auth.OAuth2;
+const scopes = ['https://www.googleapis.com/auth/calendar'];
+
+const credentialsPath = 'client_secret.json';
+const tokenPath = 'credentials.json';
+
+export const clientPromise = new Promise((resolve, reject) => {
+ fs.readFile(credentialsPath, (err, data) => {
+ if (err) return reject(err);
+
+ const credentials = JSON.parse(data.toString());
+ const {client_secret, client_id, redirect_uris} = credentials.installed;
+
+ const client = new OAuth2Client(client_id, client_secret, redirect_uris[0]);
+
+ fs.readFile(tokenPath, (err, data) => {
+ if (err) {
+ const authUrl = client.generateAuthUrl({
+ access_type: 'offline',
+ scope: scopes,
+ });
+
+ console.log('Authorize this app by visiting this url:', authUrl);
+
+ const rl = readline.createInterface({
+ input: process.stdin,
+ output: process.stdout,
+ });
+
+ rl.question('Enter the code from that page here: ', code => {
+ rl.close();
+ client.getToken(code, (err, token) => {
+ if (err) return reject(err);
+ fs.writeFile(tokenPath, JSON.stringify(token), err => err ? console.error(err) : 0);
+ client.setCredentials(token);
+ resolve(client);
+ });
+ });
+ }
+ else {
+ client.setCredentials(JSON.parse(data.toString()));
+ resolve(client);
+ }
+ });
+ });
+});
+
+export const calendarPromise = clientPromise.then(auth => google.calendar({version: 'v3', auth}));
+
+
+export async function listEvents() {
+ const calendar = await calendarPromise;
+ calendar.events.list({
+ calendarId: 'primary',
+ timeMin: (new Date()).toISOString(),
+ maxResults: 10,
+ singleEvents: true,
+ orderBy: 'startTime',
+ }, (err, data) => {
+ if (err) return console.log('The API returned an error: ' + err);
+ const events = data.data.items;
+ if (events.length) {
+ console.log('Upcoming 10 events:');
+ events.map((event, i) => {
+ const start = event.start.dateTime || event.start.date;
+ console.log(`${start} - ${event.summary}`);
+ });
+ } else {
+ console.log('No upcoming events found.');
+ }
+ });
+}
+
+export function createEvent(event, calendarId = 'primary') {
+ return calendarPromise.then(calendar => {
+ return new Promise((resolve, reject) => {
+ calendar.events.insert({
+ calendarId: calendarId,
+ resource: event,
+ }, function (err, event) {
+ if (err) return reject(err);
+ resolve(event);
+ });
+ })
+ });
+}
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000..51aaf09
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,9 @@
+The MIT License (MIT)
+
+Copyright (c) 2018 Thunderbolt
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/SplusParser.ts b/SplusParser.ts
new file mode 100644
index 0000000..be693fd
--- /dev/null
+++ b/SplusParser.ts
@@ -0,0 +1,160 @@
+import {load} from 'cheerio';
+
+interface IBlock {
+ title: string;
+ durationHours: number;
+ durationSlots: number;
+ info: string;
+ room: string;
+ lecturer: string
+}
+
+export interface ILecture {
+ title: string;
+ day: number;
+ begin: number;
+ end: number;
+ info: string;
+ room: string,
+ lecturer: string;
+}
+
+export class SplusParser {
+ private readonly startHour = 7;
+
+ private readonly $: CheerioStatic;
+ private readonly $table: Cheerio;
+ private readonly $rows: Cheerio;
+
+ private colWidths: number[] = [];
+ private colBlocked: number[] = [];
+
+ private blocks: IBlock[][][] = [];
+
+ constructor(data: string) {
+ this.$ = load(data);
+
+ this.$table = this.$(this.$('table.grid-border-args')[0]);
+ this.$rows = this.$table.find('> tbody > tr');
+
+ this.parseColWidths();
+ this.parseTable();
+ }
+
+ getLectures(filter?: (lecture: ILecture) => boolean): ILecture[] {
+ let lectures: ILecture[] = [];
+
+ for (let i = 0; i < this.blocks.length; i++) {
+ const begin = this.startHour + i * 0.25;
+
+ const slot = this.blocks[i];
+ for (let j = 0; j < slot.length; j++) {
+ const day = slot[j];
+ for (let k = 0; k < day.length; k++) {
+ const block = day[k];
+
+ const lecture = {
+ title: block.title,
+ day: j,
+ begin: begin,
+ end: begin + block.durationHours,
+ info: block.info,
+ room: block.room,
+ lecturer: block.lecturer
+ };
+
+ if(!filter || filter(lecture)) {
+ lectures.push(lecture);
+ }
+ }
+ }
+ }
+
+ return lectures;
+ }
+
+ private getDay(col: number) {
+ return this.colWidths.findIndex(width => (col -= width) < 0);
+ }
+
+ private parseColWidths() {
+ const $cols = this.$(this.$rows[0]).find('td:not(:first-child)');
+
+ for (let i = 0; i < $cols.length; i++) {
+ const $col = this.$($cols[i]);
+ this.colWidths[i] = parseInt($col.attr('colspan'));
+ }
+
+ let index = 0;
+ for (let i = 0; i < this.colWidths.length; i++) {
+ for (let j = 0; j < this.colWidths[i]; i++) {
+ this.colBlocked[index++] = 0;
+ }
+ }
+ }
+
+ private parseTable() {
+ for (let i = 0; i < this.$rows.length - 1; i++) {
+ // i + 1 to skip the columns row
+ const $row = this.$(this.$rows[i + 1]);
+
+ this.colBlocked = this.colBlocked.map(v => v > 0 ? v - 1 : 0);
+
+ this.blocks.push(this.parseRow($row));
+ }
+ }
+
+ private parseRow($row: Cheerio) {
+ const $cols = $row.find('> td:not(:first-child)');
+ const blocks: IBlock[][] = [];
+
+ let offset = 0;
+ for (let i = 0; i < $cols.length; i++) {
+ while (this.colBlocked[i + offset] > 0) {
+ const day = this.getDay(i + offset);
+ if (blocks[day] === undefined) {
+ blocks[day] = [];
+ }
+
+ offset++;
+ }
+
+ const day = this.getDay(i + offset);
+ if (blocks[day] === undefined) {
+ blocks[day] = [];
+ }
+
+ const $c = this.$($cols[i]);
+ if ($c.hasClass('object-cell-border')) {
+ const block = this.parseBlock($c);
+ blocks[day].push(block);
+
+ this.colBlocked[i + offset] = block.durationSlots;
+ }
+ }
+
+ return blocks;
+ }
+
+ private parseBlock($block: Cheerio): IBlock {
+ const $tblTitle = $block.find('table:nth-child(1)');
+ const $tblInfo = $block.find('table:nth-child(2)');
+ const $tblLocation = $block.find('table:nth-child(3)');
+
+ const $tdRoom = $tblLocation.find('td:nth-child(1)');
+ const $tdLecturer = $tblLocation.find('td:nth-child(2)');
+
+ // Remove the Modulhandbuch "mhb" link
+ $tblTitle.find('br + strong').remove();
+
+ const slots = parseInt($block.attr('rowspan'));
+ return {
+ title: $tblTitle.text().trim(),
+ durationHours: slots / 4,
+ durationSlots: slots,
+ info: $tblInfo.text().trim(),
+ room: $tdRoom.text().trim(),
+ lecturer: $tdLecturer.text().trim()
+ };
+ }
+}
diff --git a/index.ts b/index.ts
new file mode 100644
index 0000000..04af68a
--- /dev/null
+++ b/index.ts
@@ -0,0 +1,57 @@
+import {get} from 'http';
+import {readFile} from 'fs';
+import {SplusParser} from './SplusParser';
+import {createEvent, listEvents} from "./GoogleCalendar";
+
+const splusUrl = 'http://splus.ostfalia.de/semesterplan123.php?id=1362F014835FFFD0F67159E302EC1A3C&identifier=%23SPLUS7A3292';
+
+/*
+get(splusUrl, (res) => {
+ let data = '';
+ res.on('data', chunk => data += chunk);
+ res.on('end', () => TODO);
+});
+*/
+
+const baseDate = new Date(2018, 3, 23);
+
+readFile('sample.htm', (err, data) => {
+ const lectures = new SplusParser(data.toString()).getLectures(lecture => {
+ // Filter some lectures out
+ if (lecture.title === '') return false;
+ if (lecture.title.indexOf('Mathe-Cafe') !== -1) return false;
+ if (lecture.title.indexOf('Mathe-Repetitorium') !== -1) return false;
+ if (lecture.title.indexOf('Informatik-Lounge') !== -1) return false;
+ if (lecture.title.indexOf('Reservierung') !== -1) return false;
+ return lecture.title.indexOf('Kompetenzen') === -1;
+ });
+
+ lectures.forEach(lec => {
+ let beginDate = new Date(baseDate);
+
+ beginDate.setDate(beginDate.getDate() + lec.day);
+ beginDate.setMinutes(beginDate.getMinutes() + lec.begin * 60);
+
+ let endDate = new Date(baseDate);
+ endDate.setDate(endDate.getDate() + lec.day);
+ endDate.setMinutes(endDate.getMinutes() + lec.end * 60);
+
+ console.log(lec.title, beginDate.toISOString(), endDate.toISOString());
+
+ createEvent({
+ summary: lec.title,
+ description: lec.lecturer + (lec.info !== '' ? ' - ' : '') + lec.info,
+ location: lec.room,
+ start: {
+ dateTime: beginDate.toISOString()
+ },
+ end: {
+ dateTime: endDate.toISOString()
+ },
+ reminders: {
+ useDefault: false
+ }
+ });
+ })
+});
+
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..fff7d9e
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,518 @@
+{
+ "name": "splus",
+ "version": "1.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@types/cheerio": {
+ "version": "0.22.7",
+ "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.7.tgz",
+ "integrity": "sha512-+T9qBbqe/jXtTjzVddArZExahoPPmt8eq3O1ZuCKZXjBVxf/ciUYNXrIDZJEVgYvpELnv6VlPRCfLzufRxpAag==",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "9.6.6",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.6.tgz",
+ "integrity": "sha512-SJe0g5cZeGNDP5sD8mIX3scb+eq8LQQZ60FXiKZHipYSeEFZ5EKml+NNMiO76F74TY4PoMWlNxF/YRY40FOvZQ=="
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.1"
+ }
+ },
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true
+ },
+ "axios": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
+ "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
+ "requires": {
+ "follow-redirects": "1.4.1",
+ "is-buffer": "1.1.6"
+ }
+ },
+ "base64url": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz",
+ "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs="
+ },
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
+ },
+ "buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
+ },
+ "chalk": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.0.tgz",
+ "integrity": "sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.4.0"
+ }
+ },
+ "cheerio": {
+ "version": "1.0.0-rc.2",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz",
+ "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=",
+ "requires": {
+ "css-select": "1.2.0",
+ "dom-serializer": "0.1.0",
+ "entities": "1.1.1",
+ "htmlparser2": "3.9.2",
+ "lodash": "4.17.10",
+ "parse5": "3.0.3"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
+ "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ },
+ "css-select": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
+ "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
+ "requires": {
+ "boolbase": "1.0.0",
+ "css-what": "2.1.0",
+ "domutils": "1.5.1",
+ "nth-check": "1.0.1"
+ }
+ },
+ "css-what": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz",
+ "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0="
+ },
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "diff": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
+ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+ "dev": true
+ },
+ "dom-serializer": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
+ "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
+ "requires": {
+ "domelementtype": "1.1.3",
+ "entities": "1.1.1"
+ },
+ "dependencies": {
+ "domelementtype": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
+ "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs="
+ }
+ }
+ },
+ "domelementtype": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
+ "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI="
+ },
+ "domhandler": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz",
+ "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=",
+ "requires": {
+ "domelementtype": "1.3.0"
+ }
+ },
+ "domutils": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
+ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+ "requires": {
+ "dom-serializer": "0.1.0",
+ "domelementtype": "1.3.0"
+ }
+ },
+ "ecdsa-sig-formatter": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz",
+ "integrity": "sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE=",
+ "requires": {
+ "base64url": "2.0.0",
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "entities": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
+ "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA="
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "extend": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
+ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
+ },
+ "follow-redirects": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz",
+ "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==",
+ "requires": {
+ "debug": "3.1.0"
+ }
+ },
+ "gcp-metadata": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.6.3.tgz",
+ "integrity": "sha512-MSmczZctbz91AxCvqp9GHBoZOSbJKAICV7Ow/AIWSJZRrRchUd5NL1b2P4OfP+4m490BEUPhhARfpHdqCxuCvg==",
+ "requires": {
+ "axios": "0.18.0",
+ "extend": "3.0.1",
+ "retry-axios": "0.3.2"
+ }
+ },
+ "google-auth-library": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-1.4.0.tgz",
+ "integrity": "sha512-vWRx6pJulK7Y5V/Xyr7MPMlx2mWfmrUVbcffZ7hpq8ElFg5S8WY6PvjMovdcr6JfuAwwpAX4R0I1XOcyWuBcUw==",
+ "requires": {
+ "axios": "0.18.0",
+ "gcp-metadata": "0.6.3",
+ "gtoken": "2.3.0",
+ "jws": "3.1.4",
+ "lodash.isstring": "4.0.1",
+ "lru-cache": "4.1.2",
+ "retry-axios": "0.3.2"
+ }
+ },
+ "google-p12-pem": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.2.tgz",
+ "integrity": "sha512-+EuKr4CLlGsnXx4XIJIVkcKYrsa2xkAmCvxRhX2HsazJzUBAJ35wARGeApHUn4nNfPD03Vl057FskNr20VaCyg==",
+ "requires": {
+ "node-forge": "0.7.5",
+ "pify": "3.0.0"
+ }
+ },
+ "googleapis": {
+ "version": "27.0.0",
+ "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-27.0.0.tgz",
+ "integrity": "sha512-Cz0BRsZmewc21N50x5nAUW5cqaGhJ9ETQKZMGqGL4BxmCV7ETELazSqmNi4oCDeRwM4Iub/fIJWAWZk2i6XLCg==",
+ "requires": {
+ "google-auth-library": "1.4.0",
+ "pify": "3.0.0",
+ "qs": "6.5.1",
+ "string-template": "1.0.0",
+ "uuid": "3.2.1"
+ }
+ },
+ "gtoken": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.3.0.tgz",
+ "integrity": "sha512-Jc9/8mV630cZE9FC5tIlJCZNdUjwunvlwOtCz6IDlaiB4Sz68ki29a1+q97sWTnTYroiuF9B135rod9zrQdHLw==",
+ "requires": {
+ "axios": "0.18.0",
+ "google-p12-pem": "1.0.2",
+ "jws": "3.1.4",
+ "mime": "2.3.1",
+ "pify": "3.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "htmlparser2": {
+ "version": "3.9.2",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz",
+ "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=",
+ "requires": {
+ "domelementtype": "1.3.0",
+ "domhandler": "2.4.1",
+ "domutils": "1.5.1",
+ "entities": "1.1.1",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "jwa": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.5.tgz",
+ "integrity": "sha1-oFUs4CIHQs1S4VN3SjKQXDDnVuU=",
+ "requires": {
+ "base64url": "2.0.0",
+ "buffer-equal-constant-time": "1.0.1",
+ "ecdsa-sig-formatter": "1.0.9",
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "jws": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.4.tgz",
+ "integrity": "sha1-+ei5M46KhHJ31kRLFGT2GIDgUKI=",
+ "requires": {
+ "base64url": "2.0.0",
+ "jwa": "1.1.5",
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "lodash": {
+ "version": "4.17.10",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
+ "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg=="
+ },
+ "lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
+ },
+ "lru-cache": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz",
+ "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==",
+ "requires": {
+ "pseudomap": "1.0.2",
+ "yallist": "2.1.2"
+ }
+ },
+ "make-error": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz",
+ "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==",
+ "dev": true
+ },
+ "mime": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz",
+ "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg=="
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ }
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "node-forge": {
+ "version": "0.7.5",
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz",
+ "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ=="
+ },
+ "nth-check": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz",
+ "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=",
+ "requires": {
+ "boolbase": "1.0.0"
+ }
+ },
+ "parse5": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz",
+ "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==",
+ "requires": {
+ "@types/node": "9.6.6"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
+ },
+ "qs": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
+ "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "2.0.0",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.1.1",
+ "util-deprecate": "1.0.2"
+ }
+ },
+ "retry-axios": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/retry-axios/-/retry-axios-0.3.2.tgz",
+ "integrity": "sha512-jp4YlI0qyDFfXiXGhkCOliBN1G7fRH03Nqy8YdShzGqbY5/9S2x/IR6C88ls2DFkbWuL3ASkP7QD3pVrNpPgwQ=="
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "source-map-support": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz",
+ "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==",
+ "dev": true,
+ "requires": {
+ "source-map": "0.6.1"
+ }
+ },
+ "string-template": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/string-template/-/string-template-1.0.0.tgz",
+ "integrity": "sha1-np8iM9wA8hhxjsN5oopWc+zKi5Y="
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "supports-color": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
+ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+ "dev": true,
+ "requires": {
+ "has-flag": "3.0.0"
+ }
+ },
+ "ts-node": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-6.0.0.tgz",
+ "integrity": "sha512-+CQev+4J7BAUNUnW9piRzSfSZZWeFCjgUjMSgGs4+dJ2RZa86NVW9MOlP4e6/kEHTyOqdxHxcIMd7KgmY/ynVw==",
+ "dev": true,
+ "requires": {
+ "arrify": "1.0.1",
+ "chalk": "2.4.0",
+ "diff": "3.5.0",
+ "make-error": "1.3.4",
+ "minimist": "1.2.0",
+ "mkdirp": "0.5.1",
+ "source-map-support": "0.5.4",
+ "yn": "2.0.0"
+ }
+ },
+ "typescript": {
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.3.tgz",
+ "integrity": "sha512-K7g15Bb6Ra4lKf7Iq2l/I5/En+hLIHmxWZGq3D4DIRNFxMNV6j2SHSvDOqs2tGd4UvD/fJvrwopzQXjLrT7Itw==",
+ "dev": true
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "uuid": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
+ "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA=="
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
+ },
+ "yn": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz",
+ "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=",
+ "dev": true
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..ba71cd4
--- /dev/null
+++ b/package.json
@@ -0,0 +1,20 @@
+{
+ "name": "splus",
+ "version": "1.0.0",
+ "description": "",
+ "private": true,
+ "main": "index.js",
+ "license": "UNLICENSED",
+ "scripts": {
+ "start": "ts-node index.ts"
+ },
+ "dependencies": {
+ "cheerio": "^1.0.0-rc.2",
+ "googleapis": "^27.0.0"
+ },
+ "devDependencies": {
+ "@types/cheerio": "^0.22.7",
+ "ts-node": "^6.0.0",
+ "typescript": "^2.8.3"
+ }
+}
diff --git a/sample.htm b/sample.htm
new file mode 100644
index 0000000..6e4f0d9
--- /dev/null
+++ b/sample.htm
@@ -0,0 +1,1247 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
+ <head>
+ <title>Ostfalia Hochschule f&uuml;r angewandte Wissenschaften</title>
+ <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-15" />
+ <!-- (en) Add your meta data here -->
+
+ <script src="/sws/js/jquery-1.8.0.min.js"></script>
+ <script src="/sws/jquery_ui/ui/jquery.ui.core.js"></script>
+ <script src="/sws/jquery_ui/ui/jquery.ui.widget.js"></script>
+ <script src="/sws/jquery_ui/ui/jquery.ui.datepicker.js"></script>
+ <script src="/sws/jquery_ui/ui/i18n/jquery.ui.datepicker-de.js"></script>
+ <link rel="stylesheet" href="/sws/jquery_ui/themes/cupertino/jquery.ui.all.css">
+ <link rel="stylesheet" href="/sws/jquery_ui/themes/cupertino/jquery.ui.datepicker.css">
+ <script>
+ $(function() {
+ $( "#datepicker" ).datepicker({
+ showOn: "button",
+ buttonImage: "images/calendar1.gif",
+ showWeek: true,
+ firstDay: 1
+ });
+ });
+ </script>
+
+ <link href="sws_neu.css" rel="stylesheet" type="text/css" />
+ <link href="swstimetable.css" rel="stylesheet" type="text/css" />
+
+ <!--[if lte IE 7]>
+ <link href="https://pwa.ostfalia.de/resources/css/patches/patch_layout.css" rel="stylesheet" type="text/css" />
+
+ <![endif]-->
+ </head><body>
+ <div id="page_margins">
+ <div id="page">
+ <div id="header">
+ <div id="topnav">
+ <a class="skip" title="skip link" href="#navigation">Skip to the navigation </a>
+ <span class="hideme">.</span>
+ <a class="skip" title="skip link" href="#content">Skip to the content</a>
+ <span class="hideme">.</span>
+ </div>
+ <div class="fh-header">
+ <h1>Stundenplanung (SS 2018) - Fk Informatik</h1>
+ <img src='images/logo.jpg' alt="Ostfalia f&uuml;r Hochschule f&uuml;r angewandte Wissenschaften" />
+ </div>
+ </div>
+ <div id="nav">
+ <div id="nav_main">
+
+<a target="_self" href="index.php">Startseite </a>&nbsp;&#8211;&nbsp;
+<a target="_self" href="bereich123.php?id=1362F014835FFFD0F67159E302EC1A3C">Fk Informatik</a>&nbsp;&#8211;&nbsp;
+<a id="current" target="_self" href="semesterplan123.php?id=1362F014835FFFD0F67159E302EC1A3C">Semesterpl&auml;ne</a>
+
+ </div>
+ </div>
+ <div id="main">
+
+
+<div class="tabelle">
+<table>
+<tr><td>Auswahl</td><td colspan="2">Kalenderwoche </td><td>Anfang</td><td>Ende</td><td>Wochentage</td></tr>
+<tr><td>
+<form name='form3' method='POST' action='/semesterplan123.php?id=1362F014835FFFD0F67159E302EC1A3C&amp;identifier=%23SPLUS7A3292' ><select name='identifier[]' id='identifier[]' size='1' onchange='document.form3.submit()' <option value=''>ausw&auml;hlen ...</option><option value='#SPLUS2C408F' > I:-Infos zu WPF M.Sc. 3+4 Semester&nbsp;&nbsp;</option>
+<option value='#SPLUS2C4092' > I:-Infos zu WPF und UWPF für B.Sc. 3-6 Semester&nbsp;&nbsp;</option>
+<option value='#SPLUS2C4090' > I:-Infos zu WPF und UWPF für ITM 3-6 Semester&nbsp;&nbsp;</option>
+<option value='#SPLUS2C4093' > I:-Infos zu WPF Wirtschaftsinformatik 4. Semster&nbsp;&nbsp;</option>
+<option value='#SPLUS087146' > Alle UWPF (I-Alle UWPF)&nbsp;&nbsp;</option>
+<option value='#SPLUS087145' > Alle WPF (I-Alle WPF)&nbsp;&nbsp;</option>
+<option value='#SPLUS7A3292' selected > B.Sc. - 1. Sem.. Informatik (I-B-I1)&nbsp;&nbsp;</option>
+<option value='#SPLUS7A3280' > B.Sc. - 2. Sem. - Computer Engineering (CE) (I-B-I2-CE)&nbsp;&nbsp;</option>
+<option value='#SPLUS7A327F' > B.Sc. - 2. Sem. - Information Engineering (IE) (I-B-I2-IE)&nbsp;&nbsp;</option>
+<option value='#SPLUSD05645' > B.Sc. - 2. Sem. - Medieninformatik (MEI) (I-B-I2-MEI)&nbsp;&nbsp;</option>
+<option value='#SPLUS7A3281' > B.Sc. - 2. Sem. - Software Engineering (SOE) (I-B-I2-SOE)&nbsp;&nbsp;</option>
+<option value='#SPLUS7EEB0C' > B.Sc. - 2. Sem. - System Engineering (SYE) (I-B-I2-SYE)&nbsp;&nbsp;</option>
+<option value='#SPLUS7A3282' > B.Sc. - 3 Sem. - Computer Engineering (CE) (I-B-I3-CE)&nbsp;&nbsp;</option>
+<option value='#SPLUS7A3283' > B.Sc. - 3. Sem. - Information Engineering (IE) (I-B-I3-IE)&nbsp;&nbsp;</option>
+<option value='#SPLUSD05646' > B.Sc. - 3. Sem. - Medieninformatik (MEI) (I-B-I3-MEI)&nbsp;&nbsp;</option>
+<option value='#SPLUS7A3284' > B.Sc. - 3. Sem. - Software Engineering (SOE) (I-B-I3-SOE)&nbsp;&nbsp;</option>
+<option value='#SPLUS7EEB0A' > B.Sc. - 3. Sem. - System Engineering (SYE) (I-B-I3-SYE)&nbsp;&nbsp;</option>
+<option value='#SPLUS48FCE9' > B.Sc. - 4. Sem. - Computer Engineering (CE) (I-B-I4-CE)&nbsp;&nbsp;</option>
+<option value='#SPLUS7A3285' > B.Sc. - 4. Sem. - Information Engineering (IE) (I-B-I4-IE)&nbsp;&nbsp;</option>
+<option value='#SPLUS48FCE7' > B.Sc. - 4. Sem. - Medieninformatik (MEI) (I-B-I4-MEI)&nbsp;&nbsp;</option>
+<option value='#SPLUS48FCE8' > B.Sc. - 4. Sem. - Software Engineering (SOE) (I-B-I4-SOE)&nbsp;&nbsp;</option>
+<option value='#SPLUS7EEB0B' > B.Sc. - 4. Sem. - System Engineering (SYE) (I-B-I4-SYE)&nbsp;&nbsp;</option>
+<option value='#SPLUS38FDAE' > B.Sc. - 5. Sem. - alle (I-B-I5)&nbsp;&nbsp;</option>
+<option value='#SPLUS2EF0F4' > B.A. - 2. Sem. - IT-Management (I-B-ITM2)&nbsp;&nbsp;</option>
+<option value='#SPLUS38FDB4' > B.A. - 4. Sem. - IT-Management (I-B-ITM4)&nbsp;&nbsp;</option>
+<option value='#SPLUSAF5336' > B.Sc. - 2. Sem. - Wirtschaftsinformatik (I-B-WI2)&nbsp;&nbsp;</option>
+<option value='#SPLUSCBC74A' > B.Sc. - 4. Sem. - Wirtschaftsinformatik (I-B-WI4)&nbsp;&nbsp;</option>
+<option value='#SPLUS707BC4' > M. Sc. 1. Sem. - Information Engineering (I-M1-IE)&nbsp;&nbsp;</option>
+<option value='#SPLUSC78341' > M. Sc. 1. Sem. - Mobile System Engineering (I-M1-SYE)&nbsp;&nbsp;</option>
+<option value='#SPLUS38FDB7' > M. Sc. 2. Sem. - Information Engineering (I-M2-IE)&nbsp;&nbsp;</option>
+<option value='#SPLUSC78342' > M. Sc. 2. Sem. - Mobile System Engineering (I-M2-SYE)&nbsp;&nbsp;</option>
+<option value='#SPLUSDE2F6F' > M. Sc. 3. Sem. - Information Engineering (I-M3-IE)&nbsp;&nbsp;</option>
+<option value='#SPLUSC78343' > M. Sc. 3. Sem. - Mobile System Engineering (I-M3-SYE)&nbsp;&nbsp;</option>
+<option value='#SPLUS38FDB9' > M. Sc. 4. Sem. - Information Engineering (I-M4-IE)&nbsp;&nbsp;</option>
+<option value='#SPLUSC78344' > M. Sc. 4. Sem. - Mobile System Engineering (I-M4-SYE)&nbsp;&nbsp;</option>
+<option value='#SPLUSF4F4F9' > VFH-Ma.Sc. - 1. Sem. Medieninformatik (I-VFH-MA-MI-1)&nbsp;&nbsp;</option>
+<option value='#SPLUSF4F4F8' > VFH-Ma.Sc. - 2. Sem. Medieninformatik (I-VFH-MA-MI-2)&nbsp;&nbsp;</option>
+<option value='#SPLUS19351E' > VFH-Ma.Sc. - 3. Sem. Medieninformatik (I-VFH-MA-MI-3)&nbsp;&nbsp;</option>
+<option value='#SPLUSF4F4FB' > VFH-Ma.Sc. - 1. Sem. Wirtschaftinformatik (I-VFH-MA-WI-1)&nbsp;&nbsp;</option>
+<option value='#SPLUS129E72' > VFH-Ma.Sc. - 2. Sem. Wirtschaftinformatik (I-VFH-MA-WI-2)&nbsp;&nbsp;</option>
+<option value='#SPLUSF4F4FA' > VFH-Ma.Sc. - 3. Sem. Wirtschaftinformatik (I-VFH-MA-WI-3)&nbsp;&nbsp;</option>
+<option value='#SPLUSF0BA74' > VFH-B.Sc. - 1. Sem. Medieninformatik (I-VFH-MI1)&nbsp;&nbsp;</option>
+<option value='#SPLUSF37515' > VFH-B.Sc. - 2. Sem. Medieninformatik (I-VFH-MI2)&nbsp;&nbsp;</option>
+<option value='#SPLUSF0BA75' > VFH-B.Sc. - 3. Sem. Medieninformatik (I-VFH-MI3)&nbsp;&nbsp;</option>
+<option value='#SPLUS23E37C' > VFH-B.Sc. - 4. Sem. Medieninformatik (I-VFH-MI4)&nbsp;&nbsp;</option>
+<option value='#SPLUSF0BA79' > VFH-B.Sc. - 5. Sem. Medieninformatik (I-VFH-MI5)&nbsp;&nbsp;</option>
+<option value='#SPLUS23E37B' > VFH-B.Sc. - 6. Sem. Medieninformatik (I-VFH-MI6)&nbsp;&nbsp;</option>
+<option value='#SPLUSF0BA77' > VFH-B.Sc. - 1. Sem. Wirtschaftsinformatik (I-VFH-WI1)&nbsp;&nbsp;</option>
+<option value='#SPLUSF37516' > VFH-B.Sc. - 2. Sem. Wirtschaftsinformatik (I-VFH-WI2)&nbsp;&nbsp;</option>
+<option value='#SPLUSF0BA76' > VFH-B.Sc. - 3. Sem. Wirtschaftsinformatik (I-VFH-WI3)&nbsp;&nbsp;</option>
+<option value='#SPLUS23E37D' > VFH-B.Sc. - 4. Sem. Wirtschaftsinformatik (I-VFH-WI4)&nbsp;&nbsp;</option>
+<option value='#SPLUSF0BA78' > VFH-B.Sc. - 5. Sem. Wirtschaftsinformatik (I-VFH-WI5)&nbsp;&nbsp;</option>
+<option value='#SPLUS34F1A5' > VFH-B.Sc. - 6. Sem. Wirtschaftsinformatik (I-VFH-WI6)&nbsp;&nbsp;</option>
+</select></form>
+</td><td><form name="formdatepicker" method="POST" action="/semesterplan123.php"><input name="datumswahl" type="text" style="max-width:2px;" size="1" id="datepicker" onchange="document.formdatepicker.submit()" ></form></td><td><table><tr><td>
+<form name='form44' method='POST' action='/semesterplan123.php'><select name='weeks' size='1' onchange='document.form44.submit()'><option value='1' >01.01.2018
+-07.01.2018
+(KW1)</option><option value='2' >08.01.2018
+-14.01.2018
+(KW2)</option><option value='3' >15.01.2018
+-21.01.2018
+(KW3)</option><option value='4' >22.01.2018
+-28.01.2018
+(KW4)</option><option value='5' >29.01.2018
+-04.02.2018
+(KW5)</option><option value='6' >05.02.2018
+-11.02.2018
+(KW6)</option><option value='7' >12.02.2018
+-18.02.2018
+(KW7)</option><option value='8' >19.02.2018
+-25.02.2018
+(KW8)</option><option value='9' >26.02.2018
+-04.03.2018
+(KW9)</option><option value='10' >05.03.2018
+-11.03.2018
+(KW10)</option><option value='11' >12.03.2018
+-18.03.2018
+(KW11)</option><option value='12' >19.03.2018
+-25.03.2018
+(KW12)</option><option value='13' >26.03.2018
+-01.04.2018
+(KW13)</option><option value='14' >02.04.2018
+-08.04.2018
+(KW14)</option><option value='15' >09.04.2018
+-15.04.2018
+(KW15)</option><option value='16' >16.04.2018
+-22.04.2018
+(KW16)</option><option value='17' selected>23.04.2018
+-29.04.2018
+(KW17)</option><option value='18' >30.04.2018
+-06.05.2018
+(KW18)</option><option value='19' >07.05.2018
+-13.05.2018
+(KW19)</option><option value='20' >14.05.2018
+-20.05.2018
+(KW20)</option><option value='21' >21.05.2018
+-27.05.2018
+(KW21)</option><option value='22' >28.05.2018
+-03.06.2018
+(KW22)</option><option value='23' >04.06.2018
+-10.06.2018
+(KW23)</option><option value='24' >11.06.2018
+-17.06.2018
+(KW24)</option><option value='25' >18.06.2018
+-24.06.2018
+(KW25)</option><option value='26' >25.06.2018
+-01.07.2018
+(KW26)</option><option value='27' >02.07.2018
+-08.07.2018
+(KW27)</option><option value='28' >09.07.2018
+-15.07.2018
+(KW28)</option><option value='29' >16.07.2018
+-22.07.2018
+(KW29)</option><option value='30' >23.07.2018
+-29.07.2018
+(KW30)</option><option value='31' >30.07.2018
+-05.08.2018
+(KW31)</option><option value='32' >06.08.2018
+-12.08.2018
+(KW32)</option><option value='33' >13.08.2018
+-19.08.2018
+(KW33)</option><option value='34' >20.08.2018
+-26.08.2018
+(KW34)</option><option value='35' >27.08.2018
+-02.09.2018
+(KW35)</option><option value='36' >03.09.2018
+-09.09.2018
+(KW36)</option><option value='37' >10.09.2018
+-16.09.2018
+(KW37)</option><option value='38' >17.09.2018
+-23.09.2018
+(KW38)</option><option value='39' >24.09.2018
+-30.09.2018
+(KW39)</option><option value='40' >01.10.2018
+-07.10.2018
+(KW40)</option><option value='41' >08.10.2018
+-14.10.2018
+(KW41)</option><option value='42' >15.10.2018
+-21.10.2018
+(KW42)</option><option value='43' >22.10.2018
+-28.10.2018
+(KW43)</option><option value='44' >29.10.2018
+-04.11.2018
+(KW44)</option><option value='45' >05.11.2018
+-11.11.2018
+(KW45)</option><option value='46' >12.11.2018
+-18.11.2018
+(KW46)</option><option value='47' >19.11.2018
+-25.11.2018
+(KW47)</option><option value='48' >26.11.2018
+-02.12.2018
+(KW48)</option><option value='49' >03.12.2018
+-09.12.2018
+(KW49)</option><option value='50' >10.12.2018
+-16.12.2018
+(KW50)</option><option value='51' >17.12.2018
+-23.12.2018
+(KW51)</option><option value='52' >24.12.2018
+-30.12.2018
+(KW52)</option><option value='53' >31.12.2018
+-06.01.2019
+(KW53)</option><option value='54' >07.01.2019
+-13.01.2019
+(KW54)</option><option value='55' >14.01.2019
+-20.01.2019
+(KW55)</option><option value='56' >21.01.2019
+-27.01.2019
+(KW56)</option><option value='57' >28.01.2019
+-03.02.2019
+(KW57)</option><option value='58' >04.02.2019
+-10.02.2019
+(KW58)</option><option value='59' >11.02.2019
+-17.02.2019
+(KW59)</option><option value='60' >18.02.2019
+-24.02.2019
+(KW60)</option><option value='61' >25.02.2019
+-03.03.2019
+(KW61)</option><option value='62' >04.03.2019
+-10.03.2019
+(KW62)</option><option value='63' >11.03.2019
+-17.03.2019
+(KW63)</option><option value='64' >18.03.2019
+-24.03.2019
+(KW64)</option><option value='65' >25.03.2019
+-31.03.2019
+(KW65)</option></select>&nbsp; <input type='submit' class='mausdrueber' name='back' id='back' value='<' >&nbsp;<input type='submit' class='mausdrueber' name='fwd' id='fwd' value='>'>&nbsp; </form>
+</td><td>
+
+</td></tr></table>
+</td><td>
+<form name='form5' method='POST' action='/semesterplan123.php' ><select name='anfangszeit' size='1' onchange='document.form5.submit()'><option value='1' selected>7:00</option><option value='2' >7:15</option><option value='3' >7:30</option><option value='4' >7:45</option><option value='5' >8:00</option><option value='6' >8:15</option><option value='7' >8:30</option><option value='8' >8:45</option><option value='9' >9:00</option><option value='10' >9:15</option><option value='11' >9:30</option><option value='12' >9:45</option></select></form>
+</td><td>
+<form name='form6' method='POST' action='/semesterplan123.php' ><select name='endzeit' size='1' onchange='document.form6.submit()'><option value='21' >12:00</option><option value='22' >12:15</option><option value='23' >12:30</option><option value='24' >12:45</option><option value='25' >13:00</option><option value='26' >13:15</option><option value='27' >13:30</option><option value='28' >13:45</option><option value='29' >14:00</option><option value='30' >14:15</option><option value='31' >14:30</option><option value='32' >14:45</option><option value='33' >15:00</option><option value='34' >15:15</option><option value='35' >15:30</option><option value='36' >15:45</option><option value='37' >16:00</option><option value='38' >16:15</option><option value='39' >16:30</option><option value='40' >16:45</option><option value='41' >17:00</option><option value='42' >17:15</option><option value='43' >17:30</option><option value='44' >17:45</option><option value='45' >18:00</option><option value='46' >18:15</option><option value='47' >18:30</option><option value='48' >18:45</option><option value='49' >19:00</option><option value='50' >19:15</option><option value='51' >19:30</option><option value='52' >19:45</option><option value='53' selected>20:00</option><option value='54' >20:15</option><option value='55' >20:30</option><option value='56' >20:45</option><option value='57' >21:00</option><option value='58' >21:15</option><option value='59' >21:30</option><option value='60' >21:45</option></select></form>
+</td><td>
+
+<form name="form99" method="post" action="/semesterplan123.php">
+<fieldset style="border: 0px solid rgb(0, 107, 156); padding-left: 10px;">
+<input type="checkbox" value="1" onclick="this.form.submit()" checked="checked" name="nselecteddays[1]"/>Mo
+<input type="checkbox" value="1" onclick="this.form.submit()" checked="checked" name="nselecteddays[2]"/>Di
+<input type="checkbox" value="1" onclick="this.form.submit()" checked="checked" name="nselecteddays[3]"/>Mi
+<input type="checkbox" value="1" onclick="this.form.submit()" checked="checked" name="nselecteddays[4]"/>Do
+<input type="checkbox" value="1" onclick="this.form.submit()" checked="checked" name="nselecteddays[5]"/>Fr
+<input type="checkbox" value="1" onclick="this.form.submit()" checked="checked" name="nselecteddays[6]"/>Sa
+<input type="checkbox" value="1" onclick="this.form.submit()" name="nselecteddays[7]"/>So
+</fieldset>
+</form>
+
+</td><td>
+</td>
+</tr>
+<td> <div align="left"> </div></td>
+<td></td>
+</table>
+</div>
+
+
+<div class="c50r">
+
+</div>
+
+
+ </div>
+
+ </div>
+ </div>
+<div id="tabelle"><a href=print_it1.php target="_blank"><img src="img/document-print.png">&nbsp;drucken ...</a><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml'>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Individual_Semester</title>
+<link rel='Stylesheet' href='http://splus.ostfalia.de/sws/swstimetable_print.css' type='text/css'>
+</head>
+
+<body>
+
+<!-- START REPORT HEADER -->
+<table class='header-border-args' border='0' cellspacing='0' width='100%'><tr>
+<td>
+<table cellspacing='0' border='0' width='100%' class='header-0-args'>
+<col align='left' /><col align='center' /><col align='right' />
+ <tr>
+ <td></td><td><span class='header-0-1-0'>Semester </span><span class='header-0-1-1'>B.Sc. - 1. Sem.. Informatik</span></td><td></td>
+ </tr>
+</table>
+</td>
+</tr><tr>
+<td>
+<table cellspacing='0' border='0' width='100%' class='header-1-args'>
+<col align='left' /><col align='center' /><col align='right' />
+ <tr>
+ <td></td><td></td><td></td>
+ </tr>
+</table>
+</td>
+</tr><tr>
+<td>
+<table cellspacing='0' border='0' width='100%' class='header-2-args'>
+<col align='left' /><col align='center' /><col align='right' />
+ <tr>
+ <td></td><td></td><td></td>
+ </tr>
+</table>
+</td>
+</tr><tr>
+<td>
+<table cellspacing='0' border='0' width='100%' class='header-3-args'>
+<col align='left' /><col align='center' /><col align='right' />
+ <tr>
+ <td></td><td><span class='header-3-1-0'>Plan ist g&uuml;ltig von </span><span class='header-3-1-1'>23</span><span class='header-3-1-2'>.</span><span class='header-3-1-3'>04</span><span class='header-3-1-4'>.</span><span class='header-3-1-5'>2018</span><span class='header-3-1-6'> bis </span><span class='header-3-1-7'>29</span><span class='header-3-1-8'>.</span><span class='header-3-1-9'>04</span><span class='header-3-1-10'>.</span><span class='header-3-1-11'>2018</span></td><td></td>
+ </tr>
+</table>
+</td>
+</tr><tr>
+<td>
+<table cellspacing='0' border='0' width='100%' class='header-4-args'>
+<col align='left' /><col align='center' /><col align='right' />
+ <tr>
+ <td></td><td></td><td></td>
+ </tr>
+</table>
+</td>
+</tr>
+</table>
+<!-- END REPORT HEADER -->
+
+<table bgcolor='#ffffff' class='grid-border-args' cellspacing='0' >
+
+<!-- START COLUMN LABELS ONE -->
+<tr>
+ <td></td>
+
+ <td class='col-label-one' colspan='2'>Mo</td>
+ <td class='col-label-one' colspan='1'>Di</td>
+ <td class='col-label-one' colspan='1'>Mi</td>
+ <td class='col-label-one' colspan='1'>Do</td>
+ <td class='col-label-one' colspan='1'>Fr</td>
+ <td class='col-label-one' colspan='1'>Sa</td>
+</tr>
+
+<!-- END COLUMN LABELS ONE -->
+
+<!-- START ROW OUTPUT -->
+<tr >
+ <td rowspan='1' class='row-label-one'>7:00</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>7:15</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>7:30</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>7:45</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>8:00</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>8:15</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='object-cell-border' colspan='1' rowspan='6' >
+<!-- START OBJECT-CELL -->
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-0-1' />
+<tr>
+ <td align='center'>Grundlagen des Programmierens - VL<br><strong><a href="https://www.ostfalia.de/cms/de/i/pruefungsangelegenheiten/modulhandbuch/grundlagen_des_programmierens.html">mhb</a></strong></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-1-1' />
+<tr>
+ <td align='center'></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-2-0' />
+ <col class='object-cell-2-2' />
+<tr>
+ <td align='left'>H&ouml;rsaal 252</td>
+ <td align='right'>Prof. Dr. J. Weimar</td>
+</tr>
+</table>
+<!-- END OBJECT-CELL -->
+ </td>
+ <td class='object-cell-border' colspan='1' rowspan='6' >
+<!-- START OBJECT-CELL -->
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-0-1' />
+<tr>
+ <td align='center'>Mathe-Cafe 1. Sem.</td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-1-1' />
+<tr>
+ <td align='center'></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-2-0' />
+ <col class='object-cell-2-2' />
+<tr>
+ <td align='left'>H&ouml;rsaal 223</td>
+ <td align='right'>Dr. S. Bellmer</td>
+</tr>
+</table>
+<!-- END OBJECT-CELL -->
+ </td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>8:30</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>8:45</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>9:00</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>9:15</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>9:30</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='object-cell-border' colspan='1' rowspan='8' >
+<!-- START OBJECT-CELL -->
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-0-1' />
+<tr>
+ <td align='center'>CS-Kompetenzen f&uuml;r die Informatik<br><strong><a href="https://www.ostfalia.de/cms/de/i/pruefungsangelegenheiten/modulhandbuch/kompetenzen_fuer_die_informatik.html">mhb</a></strong></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-1-1' />
+<tr>
+ <td align='center'></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-2-0' />
+ <col class='object-cell-2-2' />
+<tr>
+ <td align='left'>Seminarraum 136</td>
+ <td align='right'>Fr. J. Schwiebert</td>
+</tr>
+</table>
+<!-- END OBJECT-CELL -->
+ </td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>9:45</td>
+ <td class='object-cell-border' colspan='1' rowspan='9' >
+<!-- START OBJECT-CELL -->
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-0-1' />
+<tr>
+ <td align='center'>CS-Kompetenzen f&uuml;r die Informatik<br><strong><a href="https://www.ostfalia.de/cms/de/i/pruefungsangelegenheiten/modulhandbuch/kompetenzen_fuer_die_informatik.html">mhb</a></strong></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-1-1' />
+<tr>
+ <td align='center'></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-2-0' />
+ <col class='object-cell-2-2' />
+<tr>
+ <td align='left'>11/5 Ex</td>
+ <td align='right'>Prof. Dr. D. Justen</td>
+</tr>
+</table>
+<!-- END OBJECT-CELL -->
+ </td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>10:00</td>
+ <td class='object-cell-border' colspan='1' rowspan='6' >
+<!-- START OBJECT-CELL -->
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-0-1' />
+<tr>
+ <td align='center'>Mathe-Repetitorium</td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-1-1' />
+<tr>
+ <td align='center'></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-2-0' />
+ <col class='object-cell-2-2' />
+<tr>
+ <td align='left'>H&ouml;rsaal 223</td>
+ <td align='right'>Dr. S. Bellmer</td>
+</tr>
+</table>
+<!-- END OBJECT-CELL -->
+ </td>
+ <td class='object-cell-border' colspan='1' rowspan='6' >
+<!-- START OBJECT-CELL -->
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-0-1' />
+<tr>
+ <td align='center'>Reservierung Prof . Riegler</td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-1-1' />
+<tr>
+ <td align='center'></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-2-0' />
+ <col class='object-cell-2-2' />
+<tr>
+ <td align='left'>Scale Up - Raum 201</td>
+ <td align='right'></td>
+</tr>
+</table>
+<!-- END OBJECT-CELL -->
+ </td>
+ <td class='object-cell-border' colspan='1' rowspan='6' >
+<!-- START OBJECT-CELL -->
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-0-1' />
+<tr>
+ <td align='center'>Diskrete Strukturen<br><strong><a href="https://www.ostfalia.de/cms/de/i/pruefungsangelegenheiten/modulhandbuch/diskrete_strukturen.html">mhb</a></strong></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-1-1' />
+<tr>
+ <td align='center'></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-2-0' />
+ <col class='object-cell-2-2' />
+<tr>
+ <td align='left'>H&ouml;rsaal 252</td>
+ <td align='right'>Prof. Dr. P. Riegler</td>
+</tr>
+</table>
+<!-- END OBJECT-CELL -->
+ </td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>10:15</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>10:30</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>10:45</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>11:00</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>11:15</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>11:30</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>11:45</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>12:00</td>
+ <td class='object-cell-border' colspan='1' rowspan='8' >
+<!-- START OBJECT-CELL -->
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-0-1' />
+<tr>
+ <td align='center'>CS-Kompetenzen f&uuml;r die Informatik<br><strong><a href="https://www.ostfalia.de/cms/de/i/pruefungsangelegenheiten/modulhandbuch/kompetenzen_fuer_die_informatik.html">mhb</a></strong></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-1-1' />
+<tr>
+ <td align='center'></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-2-0' />
+ <col class='object-cell-2-2' />
+<tr>
+ <td align='left'>Seminarraum 136</td>
+ <td align='right'>Fr. J. Schwiebert</td>
+</tr>
+</table>
+<!-- END OBJECT-CELL -->
+ </td>
+ <td class='object-cell-border' colspan='1' rowspan='9' >
+<!-- START OBJECT-CELL -->
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-0-1' />
+<tr>
+ <td align='center'>CS-Kompetenzen f&uuml;r die Informatik<br><strong><a href="https://www.ostfalia.de/cms/de/i/pruefungsangelegenheiten/modulhandbuch/kompetenzen_fuer_die_informatik.html">mhb</a></strong></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-1-1' />
+<tr>
+ <td align='center'></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-2-0' />
+ <col class='object-cell-2-2' />
+<tr>
+ <td align='left'>11/5 Ex</td>
+ <td align='right'>Prof. Dr. D. Justen</td>
+</tr>
+</table>
+<!-- END OBJECT-CELL -->
+ </td>
+ <td class='object-cell-border' colspan='1' rowspan='6' >
+<!-- START OBJECT-CELL -->
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-0-1' />
+<tr>
+ <td align='center'>Grundlagen des Programmierens - Labor<br><strong><a href="https://www.ostfalia.de/cms/de/i/pruefungsangelegenheiten/modulhandbuch/grundlagen_des_programmierens.html">mhb</a></strong></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-1-1' />
+<tr>
+ <td align='center'>Findet ab KW11 (13.3.) statt, also nicht am 6.3.</td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-2-0' />
+ <col class='object-cell-2-2' />
+<tr>
+ <td align='left'>P4, P3, P2, P1</td>
+ <td align='right'>Prof. Dr. J. Weimar</td>
+</tr>
+</table>
+<!-- END OBJECT-CELL -->
+ </td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='object-cell-border' colspan='1' rowspan='6' >
+<!-- START OBJECT-CELL -->
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-0-1' />
+<tr>
+ <td align='center'>Informatik-Lounge 1. Sem</td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-1-1' />
+<tr>
+ <td align='center'></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-2-0' />
+ <col class='object-cell-2-2' />
+<tr>
+ <td align='left'>Poolraum 132</td>
+ <td align='right'>Dipl.-Inf. D.Dick-Anwander</td>
+</tr>
+</table>
+<!-- END OBJECT-CELL -->
+ </td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>12:15</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>12:30</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>12:45</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>13:00</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>13:15</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>13:30</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>13:45</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>14:00</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>14:15</td>
+ <td class='object-cell-border' colspan='1' rowspan='6' >
+<!-- START OBJECT-CELL -->
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-0-1' />
+<tr>
+ <td align='center'>Technische Grundlagen der Informatik - VL<br><strong><a href="https://www.ostfalia.de/cms/de/i/pruefungsangelegenheiten/modulhandbuch/technik_der_informatik.html">mhb</a></strong></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-1-1' />
+<tr>
+ <td align='center'></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-2-0' />
+ <col class='object-cell-2-2' />
+<tr>
+ <td align='left'>11/1</td>
+ <td align='right'>Dipl.-Ing. K. Dammann</td>
+</tr>
+</table>
+<!-- END OBJECT-CELL -->
+ </td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='object-cell-border' colspan='1' rowspan='6' >
+<!-- START OBJECT-CELL -->
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-0-1' />
+<tr>
+ <td align='center'>Grundlagen des Programmierens - Labor<br><strong><a href="https://www.ostfalia.de/cms/de/i/pruefungsangelegenheiten/modulhandbuch/grundlagen_des_programmierens.html">mhb</a></strong></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-1-1' />
+<tr>
+ <td align='center'>Findet ab KW11 (13.3.) statt, also nicht am 6.3.</td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-2-0' />
+ <col class='object-cell-2-2' />
+<tr>
+ <td align='left'>P4, P3, P2, P1</td>
+ <td align='right'>Prof. Dr. J. Weimar</td>
+</tr>
+</table>
+<!-- END OBJECT-CELL -->
+ </td>
+ <td class='object-cell-border' colspan='1' rowspan='6' >
+<!-- START OBJECT-CELL -->
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-0-1' />
+<tr>
+ <td align='center'>Technische Grundlagen der Informatik - VL<br><strong><a href="https://www.ostfalia.de/cms/de/i/pruefungsangelegenheiten/modulhandbuch/technik_der_informatik.html">mhb</a></strong></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-1-1' />
+<tr>
+ <td align='center'>Achtung, Veranstaltung findet unregelm&auml;ssig statt. W&ouml;chentlich Stundenplan beachten!</td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-2-0' />
+ <col class='object-cell-2-2' />
+<tr>
+ <td align='left'>11/1</td>
+ <td align='right'>Dipl.-Ing. K. Dammann</td>
+</tr>
+</table>
+<!-- END OBJECT-CELL -->
+ </td>
+ <td class='object-cell-border' colspan='1' rowspan='6' >
+<!-- START OBJECT-CELL -->
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-0-1' />
+<tr>
+ <td align='center'>Grundlagen des Programmierens - VL<br><strong><a href="https://www.ostfalia.de/cms/de/i/pruefungsangelegenheiten/modulhandbuch/grundlagen_des_programmierens.html">mhb</a></strong></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-1-1' />
+<tr>
+ <td align='center'></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-2-0' />
+ <col class='object-cell-2-2' />
+<tr>
+ <td align='left'>H&ouml;rsaal 026</td>
+ <td align='right'>Prof. Dr. J. Weimar</td>
+</tr>
+</table>
+<!-- END OBJECT-CELL -->
+ </td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>14:30</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>14:45</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>15:00</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>15:15</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>15:30</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>15:45</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>16:00</td>
+ <td class='object-cell-border' colspan='1' rowspan='6' >
+<!-- START OBJECT-CELL -->
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-0-1' />
+<tr>
+ <td align='center'>Einf&uuml;hrung in die Informatik<br><strong><a href="https://www.ostfalia.de/de/i/pruefungsangelegenheiten/modulhandbuch/einfuehrung_in_die_informatik.html">mhb</a></strong></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-1-1' />
+<tr>
+ <td align='center'></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-2-0' />
+ <col class='object-cell-2-2' />
+<tr>
+ <td align='left'>11/1</td>
+ <td align='right'>Prof. Dr. W. Pekrun</td>
+</tr>
+</table>
+<!-- END OBJECT-CELL -->
+ </td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='object-cell-border' colspan='1' rowspan='6' >
+<!-- START OBJECT-CELL -->
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-0-1' />
+<tr>
+ <td align='center'>Diskrete Strukturen<br><strong><a href="https://www.ostfalia.de/cms/de/i/pruefungsangelegenheiten/modulhandbuch/diskrete_strukturen.html">mhb</a></strong></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-1-1' />
+<tr>
+ <td align='center'></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-2-0' />
+ <col class='object-cell-2-2' />
+<tr>
+ <td align='left'>H&ouml;rsaal 252</td>
+ <td align='right'>Prof. Dr. P. Riegler</td>
+</tr>
+</table>
+<!-- END OBJECT-CELL -->
+ </td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='object-cell-border' colspan='1' rowspan='9' >
+<!-- START OBJECT-CELL -->
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-0-1' />
+<tr>
+ <td align='center'></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-1-1' />
+<tr>
+ <td align='center'></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-2-0' />
+ <col class='object-cell-2-2' />
+<tr>
+ <td align='left'>11/5 Ex</td>
+ <td align='right'>Prof. Dr. D. Justen</td>
+</tr>
+</table>
+<!-- END OBJECT-CELL -->
+ </td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>16:15</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>16:30</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>16:45</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>17:00</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>17:15</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>17:30</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>17:45</td>
+ <td class='object-cell-border' colspan='1' rowspan='6' >
+<!-- START OBJECT-CELL -->
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-0-1' />
+<tr>
+ <td align='center'>Einf&uuml;hrung in die Informatik<br><strong><a href="https://www.ostfalia.de/de/i/pruefungsangelegenheiten/modulhandbuch/einfuehrung_in_die_informatik.html">mhb</a></strong></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-1-1' />
+<tr>
+ <td align='center'></td>
+</tr>
+</table>
+<table class='object-cell-args' cellspacing='0' border='0' width='100%'>
+ <col class='object-cell-2-0' />
+ <col class='object-cell-2-2' />
+<tr>
+ <td align='left'>11/1</td>
+ <td align='right'>Prof. Dr. W. Pekrun</td>
+</tr>
+</table>
+<!-- END OBJECT-CELL -->
+ </td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>18:00</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>18:15</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>18:30</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>18:45</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>19:00</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>19:15</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>19:30</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>19:45</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+<tr >
+ <td rowspan='1' class='row-label-one'>20:00</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+ <td class='cell-border'>&nbsp;</td>
+</tr>
+
+<!-- END ROW OUTPUT -->
+</table>
+
+<!-- START REPORT FOOTER -->
+<table class='footer-border-args' border='0' cellspacing='0' width='100%'><tr>
+<td>
+<table cellspacing='0' border='0' width='100%' class='footer-0-args'>
+<col align='left' /><col align='center' /><col align='right' />
+ <tr>
+ <td class='left'><span class='footer-0-0-0'>Stand vom </span><span class='footer-0-0-1'>25</span><span class='footer-0-0-2'>.</span><span class='footer-0-0-3'>04</span><span class='footer-0-0-4'>.</span><span class='footer-0-0-5'>2018</span><span class='footer-0-0-6'>, </span><span class='footer-0-0-7'>10:18</span></td><td></td><td></td>
+ </tr>
+</table>
+</td>
+</tr>
+</table>
+<!-- END REPORT FOOTER -->
+<hr />
+</body>
+</html></div>
+
+</body>
+</html> \ No newline at end of file
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..a4a0da2
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,11 @@
+{
+ "compilerOptions": {
+ "outDir": "dist/",
+ "moduleResolution": "node",
+ "target": "es2016",
+ "sourceMap": true
+ },
+ "exclude": [
+ "node_modules"
+ ]
+} \ No newline at end of file