diff --git a/README.md b/README.md index d5731e0..dfe853f 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,9 @@ Kinder können durch das Lösen von Lernaufgaben, beispielsweise Mathematikaufga | Feature | Beschreibung | | :--------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **JWT-Authentifizierung** | Sichere API-Endpunkte für authentifizierte Benutzer über JSON Web Tokens (JWT). | -| **Lernaufgaben (Tasks)** | Abrufen von interaktiven Lernaufgaben mit vordefinierten Antwortmöglichkeiten und Belohnungen in Minuten. | +| **Lernaufgaben (Tasks)** | Abrufen von interaktiven Lernaufgaben mit vordefinierten Antwortmöglichkeiten, Filterung nach Fach und Alter sowie Belohnungen in Minuten. | | **Antwort-Verifizierung** | Überprüfung der vom Kind ausgewählten Antworten. Bei korrekter Antwort wird die Belohnung direkt auf die verbleibende Bildschirmzeit aufgerechnet. | +| **OER / H5P Ingestion Pipeline** | Automatisierter Live-Crawler und Batch-Import von freien Bildungsinhalten (ZUM.de / H5P) inklusive HTML-Bereinigung und Lizenzattributierung (CC-BY). | | **Bildschirmzeit-Synchronisation** | Laufender Datenabgleich der verbrauchten Bildschirmzeit. Sinkt die verbleibende Zeit auf oder unter null, wird der Status automatisch auf `isBlocked = true` gesetzt. | | **Zwei-Ebenen-Speicher** | PostgreSQL als persistente Datenbank, kombiniert mit Redis-Caching für schnelle Screentime-Abfragen. | | **Fallback-Mechanismus** | Ist Redis nicht erreichbar, fällt das System automatisch und transparent auf PostgreSQL zurück. | @@ -98,7 +99,8 @@ Prüft, ob der Backend-Server ordnungsgemäß läuft. ```json { "token": "eyJhbGciOiJIUzI1NiIsIn...", - "familyName": "Familie Schmidt" + "userId": "6380776f-88d3-4e9f-a2be-0d9cacae447e", + "message": "Registrierung erfolgreich" } ``` @@ -128,7 +130,9 @@ Prüft, ob der Backend-Server ordnungsgemäß läuft. ```json { "token": "eyJhbGciOiJIUzI1NiIsIn...", - "familyName": "Familie Schmidt" + "userId": "6380776f-88d3-4e9f-a2be-0d9cacae447e", + "familyName": "Familie Schmidt", + "childAge": 8 } ``` @@ -156,9 +160,9 @@ Authorization: Bearer **Beschreibung:** -Liefert die aktuell verbleibende Bildschirmzeit sowie den aktuellen Sperrstatus. +Liefert die aktuell verbleibende Bildschirmzeit sowie den aktuellen Sperrstatus des authentifizierten Benutzers. -**Antwort:** +**Antwort – `200 OK`:** ```json { @@ -181,29 +185,28 @@ Liefert die aktuell verbleibende Bildschirmzeit sowie den aktuellen Sperrstatus. **Beschreibung:** -Zieht die seit dem letzten Abgleich verbrauchten Sekunden von der verfügbaren Bildschirmzeit ab. +Zieht die seit dem letzten Abgleich vom Endgerät verbrauchten Sekunden von der verfügbaren Bildschirmzeit ab. **Request-Body:** ```json { - "userId": "default_user", - "usedSecondsSinceLastSync": 200 + "usedSecondsSinceLastSync": 30 } ``` -**Antwort:** +**Antwort – `200 OK`:** ```json { - "remainingSeconds": 1600, + "remainingSeconds": 1770, "isBlocked": false } ``` --- -#### 6. Alle verfügbaren Aufgaben abrufen +#### 6. Lernaufgaben abrufen (mit Fach- & Altersfilter) **Methode:** `GET` @@ -213,24 +216,42 @@ Zieht die seit dem letzten Abgleich verbrauchten Sekunden von der verfügbaren B /api/v1/tasks ``` +**Optionale Query-Parameter:** + +| Parameter | Typ | Standardwert | Beschreibung | +| :--- | :--- | :--- | :--- | +| `subject` | String | `null` | Schulfach (z. B. `Mathematik`, `Deutsch`, `Sachunterricht`, `Englisch`, `Biologie`, `Geographie`, `Geschichte`). | +| `age` | Integer | `null` | Zielalter des Kindes (filtert nach `minAge <= age AND maxAge >= age`). | +| `limit` | Integer | `10` | Maximale Anzahl an zurückgegebenen Aufgaben. | + +**Beispiel-Anfrage:** + +```text +GET /api/v1/tasks?subject=Mathematik&age=8&limit=5 +``` + **Beschreibung:** -Liefert eine Liste aller verfügbaren Lernaufgaben. +Liefert kuratierte oder aus OER/H5P importierte Lernaufgaben. Die korrekte Lösung (`correctAnswer`) wird zum Schutz vor Manipulationen serverseitig geheim gehalten und niemals an den Client übertragen. -**Antwort:** +**Antwort – `200 OK`:** ```json [ { - "id": "t1", - "question": "Was ist 12 + 15?", + "id": "zum-math-001", + "subject": "Mathematik", + "minAge": 8, + "maxAge": 9, + "question": "Was ist das Ergebnis von 6 × 8?", "options": [ - "25", - "27", - "30", - "22" + "42", + "48", + "54", + "56" ], - "rewardMinutes": 10 + "rewardMinutes": 5, + "license": "CC BY-SA 4.0" } ] ``` @@ -251,22 +272,22 @@ Liefert eine Liste aller verfügbaren Lernaufgaben. ```json { - "taskId": "t1", - "selectedAnswer": "27" + "taskId": "zum-math-001", + "selectedAnswer": "48" } ``` -**Antwort – korrekte Lösung:** +**Antwort – korrekte Lösung (`200 OK`):** ```json { "isCorrect": true, - "earnedMinutes": 10, - "message": "Super gemacht! Du hast 10 Minuten gewonnen." + "earnedMinutes": 5, + "message": "Super gemacht! Du hast 5 Minuten gewonnen." } ``` -**Antwort – falsche Lösung:** +**Antwort – falsche Lösung (`200 OK`):** ```json { @@ -278,6 +299,38 @@ Liefert eine Liste aller verfügbaren Lernaufgaben. --- +## H5P / ZUM.de Aufgaben-Import (Standalone CLI) + +Das Backend verfügt über ein integriertes CLI-Tool zum automatisierten Importieren und Crawlen interaktiver Lernaufgaben von **ZUM.de / OER (H5P)**. + +### Batch-Import ausführen + +```bash +# Alle Fächer importieren (z. B. 100 Aufgaben) +./gradlew runIngestion --args="--limit=100" + +# Gezielt ein Schulfach importieren (z. B. Mathematik) +./gradlew runIngestion --args="--subject=Mathematik --limit=50" + +# Deutsch für Grundschüler importieren +./gradlew runIngestion --args="--subject=Deutsch --limit=30" +``` + +### CLI-Optionen + +| Argument | Standardwert | Beschreibung | +| :--- | :--- | :--- | +| `--subject=` | *(alle Fächer)* | Filtert Aufgaben nach Fach (z. B. `Mathematik`, `Deutsch`, `Englisch`, `Sachunterricht`). | +| `--limit=` | `50` | Maximale Anzahl an Aufgaben, die im Durchlauf importiert/aktualisiert werden. | + +### Funktionsweise der Ingestion-Pipeline +1. **Live-Crawler & Discovery:** Durchsucht `apps.zum.de` nach interaktiven Inhalten (`H5P.MultiChoice`, `H5P.TrueFalse`, `H5P.QuestionSet`). +2. **Textbereinigung:** Entfernt störende HTML-Tags (`

`, ``, ` `) für native mobile Darstellung. +3. **Taxonomie- & Alters-Mapping:** Weist Altersgrenzen (`minAge`, `maxAge`) basierend auf Klassenstufen automatisch zu. +4. **Idempotenter Upsert:** Speichert Fragen, Optionen, geheime Lösungen und CC-Lizenzen direkt relational in PostgreSQL (`TasksTable`). Duplikate werden vermieden. + +--- + ## Projektkonfiguration und Umgebungsvariablen Die Anwendung wird über folgende Konfigurationsdatei konfiguriert: diff --git a/build.gradle.kts b/build.gradle.kts index 9868e1e..9c6ad99 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -11,6 +11,12 @@ version = "1.0.0-SNAPSHOT" application { mainClass = "io.ktor.server.netty.EngineMain" } +ktor { + openApi { + enabled = true // Aktiviert die OpenAPI-Code-Generierung + codeInferenceEnabled = true + } +} kotlin { jvmToolchain(21) @@ -20,7 +26,7 @@ dependencies { implementation(ktorLibs.server.config.yaml) implementation(ktorLibs.server.core) implementation(ktorLibs.server.netty) - + implementation("io.ktor:ktor-server-openapi") // JWT Authentication implementation("io.ktor:ktor-server-auth") implementation("io.ktor:ktor-server-auth-jwt") @@ -46,3 +52,11 @@ dependencies { // redis implementation("redis.clients:jedis:5.1.2") } + +tasks.register("runIngestion") { + group = "application" + description = "Runs the standalone H5P/ZUM task ingestion CLI tool" + mainClass.set("com.oliver.kidio.backend.ingestion.H5PIngestionCli") + classpath = sourceSets["main"].runtimeClasspath + standardInput = System.`in` +} diff --git a/build/classes/kotlin/main/META-INF/com.oliver.kidio.backend_Kidio_backend.kotlin_module b/build/classes/kotlin/main/META-INF/com.oliver.kidio.backend_Kidio_backend.kotlin_module index 734c5e9..7b8ba29 100644 Binary files a/build/classes/kotlin/main/META-INF/com.oliver.kidio.backend_Kidio_backend.kotlin_module and b/build/classes/kotlin/main/META-INF/com.oliver.kidio.backend_Kidio_backend.kotlin_module differ diff --git a/build/classes/kotlin/main/MainKt.class b/build/classes/kotlin/main/MainKt.class index 2d8f550..6754ba6 100644 Binary files a/build/classes/kotlin/main/MainKt.class and b/build/classes/kotlin/main/MainKt.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/SyncRequest$$serializer.class b/build/classes/kotlin/main/com/oliver/kidio/backend/SyncRequest$$serializer.class index f290fd1..b1cc433 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/SyncRequest$$serializer.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/SyncRequest$$serializer.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/SyncRequest$Companion.class b/build/classes/kotlin/main/com/oliver/kidio/backend/SyncRequest$Companion.class index b063410..30046ab 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/SyncRequest$Companion.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/SyncRequest$Companion.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/SyncRequest.class b/build/classes/kotlin/main/com/oliver/kidio/backend/SyncRequest.class index d2dcc75..d8a9ee7 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/SyncRequest.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/SyncRequest.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/SyncResponse$$serializer.class b/build/classes/kotlin/main/com/oliver/kidio/backend/SyncResponse$$serializer.class index 3ee8a6b..cae987d 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/SyncResponse$$serializer.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/SyncResponse$$serializer.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/SyncResponse$Companion.class b/build/classes/kotlin/main/com/oliver/kidio/backend/SyncResponse$Companion.class index d80b3f5..9561bce 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/SyncResponse$Companion.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/SyncResponse$Companion.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/SyncResponse.class b/build/classes/kotlin/main/com/oliver/kidio/backend/SyncResponse.class index 6fbc78c..627ce2c 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/SyncResponse.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/SyncResponse.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/Task$$serializer.class b/build/classes/kotlin/main/com/oliver/kidio/backend/Task$$serializer.class index 9b2720e..5b69ffb 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/Task$$serializer.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/Task$$serializer.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/Task$Companion.class b/build/classes/kotlin/main/com/oliver/kidio/backend/Task$Companion.class index ebda9ef..03695e4 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/Task$Companion.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/Task$Companion.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/Task.class b/build/classes/kotlin/main/com/oliver/kidio/backend/Task.class index 7851d33..f4e20d4 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/Task.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/Task.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyRequest$$serializer.class b/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyRequest$$serializer.class index 82a7d23..7be5612 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyRequest$$serializer.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyRequest$$serializer.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyRequest$Companion.class b/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyRequest$Companion.class index 1109755..0dbb25b 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyRequest$Companion.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyRequest$Companion.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyRequest.class b/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyRequest.class index b2dee50..c5985bb 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyRequest.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyRequest.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyResponse$$serializer.class b/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyResponse$$serializer.class index ec971d4..22f3d43 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyResponse$$serializer.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyResponse$$serializer.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyResponse$Companion.class b/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyResponse$Companion.class index b6a3228..4179a8b 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyResponse$Companion.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyResponse$Companion.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyResponse.class b/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyResponse.class index ea19ce9..245974f 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyResponse.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/TaskVerifyResponse.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/data/database/DatabaseFactory$dbQuery$2.class b/build/classes/kotlin/main/com/oliver/kidio/backend/data/database/DatabaseFactory$dbQuery$2.class index 928ba81..511c6d5 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/data/database/DatabaseFactory$dbQuery$2.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/data/database/DatabaseFactory$dbQuery$2.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/data/database/DatabaseFactory.class b/build/classes/kotlin/main/com/oliver/kidio/backend/data/database/DatabaseFactory.class index 944c89a..afd9528 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/data/database/DatabaseFactory.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/data/database/DatabaseFactory.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/data/database/RedisFactory.class b/build/classes/kotlin/main/com/oliver/kidio/backend/data/database/RedisFactory.class index 0ddd8f1..971ce58 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/data/database/RedisFactory.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/data/database/RedisFactory.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/data/database/ScreentimeTable.class b/build/classes/kotlin/main/com/oliver/kidio/backend/data/database/ScreentimeTable.class index 0852b61..0cab3e0 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/data/database/ScreentimeTable.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/data/database/ScreentimeTable.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/data/database/TasksTable.class b/build/classes/kotlin/main/com/oliver/kidio/backend/data/database/TasksTable.class index ad3234a..cdf177b 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/data/database/TasksTable.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/data/database/TasksTable.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository$getAllTasks$2.class b/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository$getAllTasks$2.class deleted file mode 100644 index 19a7849..0000000 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository$getAllTasks$2.class and /dev/null differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository$getScreentime$1.class b/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository$getScreentime$1.class index 149f4e4..f6d24ee 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository$getScreentime$1.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository$getScreentime$1.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository$getScreentime$dbSeconds$1.class b/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository$getScreentime$dbSeconds$1.class index a0f4558..af8a350 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository$getScreentime$dbSeconds$1.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository$getScreentime$dbSeconds$1.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository$getTaskAnswerAndReward$2.class b/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository$getTaskAnswerAndReward$2.class index e8fbaf3..eec12c0 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository$getTaskAnswerAndReward$2.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository$getTaskAnswerAndReward$2.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository$updateScreentime$2.class b/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository$updateScreentime$2.class index 3041b15..9c9e0f0 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository$updateScreentime$2.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository$updateScreentime$2.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository.class b/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository.class index c445bb8..e99357b 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/ExposedKidioRepository.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/InMemoryKidioRepository.class b/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/InMemoryKidioRepository.class index 461f398..026fe40 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/InMemoryKidioRepository.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/InMemoryKidioRepository.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/KidioRepository.class b/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/KidioRepository.class index e85d2e6..977cb26 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/KidioRepository.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/domain/repository/KidioRepository.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/plugins/RoutingKt$configureRouting$1$1.class b/build/classes/kotlin/main/com/oliver/kidio/backend/plugins/RoutingKt$configureRouting$1$1.class index bcc2cf1..094a41c 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/plugins/RoutingKt$configureRouting$1$1.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/plugins/RoutingKt$configureRouting$1$1.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/plugins/RoutingKt$configureRouting$1$2.class b/build/classes/kotlin/main/com/oliver/kidio/backend/plugins/RoutingKt$configureRouting$1$2.class deleted file mode 100644 index 369889a..0000000 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/plugins/RoutingKt$configureRouting$1$2.class and /dev/null differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/plugins/RoutingKt$configureRouting$1$3.class b/build/classes/kotlin/main/com/oliver/kidio/backend/plugins/RoutingKt$configureRouting$1$3.class index cc745c9..5513bf7 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/plugins/RoutingKt$configureRouting$1$3.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/plugins/RoutingKt$configureRouting$1$3.class differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/plugins/RoutingKt$configureRouting$1$4.class b/build/classes/kotlin/main/com/oliver/kidio/backend/plugins/RoutingKt$configureRouting$1$4.class deleted file mode 100644 index ca551d5..0000000 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/plugins/RoutingKt$configureRouting$1$4.class and /dev/null differ diff --git a/build/classes/kotlin/main/com/oliver/kidio/backend/plugins/RoutingKt.class b/build/classes/kotlin/main/com/oliver/kidio/backend/plugins/RoutingKt.class index 632979e..50eb7d8 100644 Binary files a/build/classes/kotlin/main/com/oliver/kidio/backend/plugins/RoutingKt.class and b/build/classes/kotlin/main/com/oliver/kidio/backend/plugins/RoutingKt.class differ diff --git a/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest$test health endpoint$1$1.class b/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest$test health endpoint$1$1.class index 81738e2..a4d3b87 100644 Binary files a/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest$test health endpoint$1$1.class and b/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest$test health endpoint$1$1.class differ diff --git a/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest$test health endpoint$1.class b/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest$test health endpoint$1.class index be7dbcc..10f2015 100644 Binary files a/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest$test health endpoint$1.class and b/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest$test health endpoint$1.class differ diff --git a/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest$test screentime sync$1$1.class b/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest$test screentime sync$1$1.class deleted file mode 100644 index d200bae..0000000 Binary files a/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest$test screentime sync$1$1.class and /dev/null differ diff --git a/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest$test screentime sync$1.class b/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest$test screentime sync$1.class deleted file mode 100644 index c104b3a..0000000 Binary files a/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest$test screentime sync$1.class and /dev/null differ diff --git a/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest$test tasks endpoint and verify$1$1.class b/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest$test tasks endpoint and verify$1$1.class deleted file mode 100644 index cd6cbc5..0000000 Binary files a/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest$test tasks endpoint and verify$1$1.class and /dev/null differ diff --git a/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest$test tasks endpoint and verify$1.class b/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest$test tasks endpoint and verify$1.class deleted file mode 100644 index 92dba32..0000000 Binary files a/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest$test tasks endpoint and verify$1.class and /dev/null differ diff --git a/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest.class b/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest.class index bd5cbc0..90b98d9 100644 Binary files a/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest.class and b/build/classes/kotlin/test/com/oliver/kidio/backend/ServerTest.class differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab index 9c1a9a9..8aad32b 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab and b/build/kotlin/compileKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab.values.at b/build/kotlin/compileKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab.values.at index 886e38e..5875372 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab.values.at and b/build/kotlin/compileKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab.values.at differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab index 9c1a9a9..8aad32b 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab and b/build/kotlin/compileKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab.values.at b/build/kotlin/compileKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab.values.at index 886e38e..5875372 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab.values.at and b/build/kotlin/compileKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab.values.at differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab index 89be4b2..1d12825 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab and b/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream b/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream index a129b12..3b0795d 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream and b/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len index ed09aa4..9b0510a 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len index fa606b6..a541356 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at b/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at index 6cc944f..c78cb32 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at and b/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i b/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i index 012909e..c529ee0 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i and b/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab index b46ebd7..b1ef4b1 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream index daadb62..3240860 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len index 409f6fc..351dd88 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len index b31f54b..709f734 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at index 79e9c0b..2c3e1c1 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i index 2ce7054..8a3f4be 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab index daaa724..3415586 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream index daadb62..3240860 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len index 409f6fc..351dd88 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len index b31f54b..709f734 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at index ed39afa..3e4a006 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i index 2ce7054..8a3f4be 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab index ac0f723..3d78f77 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream index c2c282b..8364d46 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len index e75dc27..3f067ea 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len index 31ed51e..86c9c3e 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at index 28b1107..af5570f 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i index 17e3def..6950911 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab index 3b063e8..35c0d93 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream index 42425c0..e2d6bfb 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len index 468508e..4a3c61e 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len index 93a595b..a9f80ae 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at index 41f26f4..33c7d6c 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i index 9370d4b..1e26439 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab index d153545..268b560 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream index 2a504c1..cf38dcc 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len index f48f129..eacb2a0 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len index 213dab4..b94f48d 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values index 64c36bb..14fa544 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at index 37b85cc..c851506 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.s b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.s index f012697..93f2f25 100644 --- a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.s +++ b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.s @@ -1 +1 @@ -ÉHöHÃG \ No newline at end of file +Õ~ \ No newline at end of file diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i index ca7f583..5d9ea7f 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab index d46ba2d..78f8cb1 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream index a129b12..3b0795d 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len index ed09aa4..9b0510a 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len index fa606b6..a541356 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at index 5b1e95c..111a5f9 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i index 012909e..c529ee0 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab index 37326c9..1690f27 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream index cac4596..18c9459 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at index 3f65078..261133c 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i index f70120a..02d4d32 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab index 65d4c8c..175ad3c 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream index f6810f7..a90f73f 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len index edeb18b..96ea0ef 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len index eb0b8a0..6f677df 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at index c6027a5..45f33de 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i index 2849214..d24afa4 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i and b/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/counters.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/counters.tab index e90afe8..920202f 100644 --- a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/counters.tab +++ b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/counters.tab @@ -1,2 +1,2 @@ -20 +11 0 \ No newline at end of file diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab index 17390ef..584582e 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab and b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream index e02d990..3b0795d 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream and b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len index ed09aa4..9b0510a 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len index fa606b6..a541356 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at index 29acd8d..afce831 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at and b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i index 21e6c42..c529ee0 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i and b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab index fae34cc..b24b954 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab and b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream index 173226a..b73411e 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream and b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len index c2e8349..296694d 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len index 8fe89d8..a541356 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at index ea625f0..bf6caa9 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at and b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i index 241ea8a..fd27401 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i and b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab index a3294c7..6b6bd4d 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab and b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream index 6e83f92..d30c9da 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream and b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len index 761e199..9abcafc 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.len b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.len index 585cd66..a58cfb9 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.len and b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.len differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at index 0343862..ea04a1c 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at and b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at differ diff --git a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i index b8107e1..95fc1b3 100644 Binary files a/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i and b/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i differ diff --git a/build/kotlin/compileKotlin/cacheable/last-build.bin b/build/kotlin/compileKotlin/cacheable/last-build.bin index c885ebb..e1e9a7c 100644 Binary files a/build/kotlin/compileKotlin/cacheable/last-build.bin and b/build/kotlin/compileKotlin/cacheable/last-build.bin differ diff --git a/build/kotlin/compileKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin b/build/kotlin/compileKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin index 6f6ae3a..6a7d1a3 100644 Binary files a/build/kotlin/compileKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin and b/build/kotlin/compileKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab index 3578a55..fa6854b 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab.values.at b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab.values.at index 633f193..8758b2c 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab.values.at and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/compilerPluginFiles/outputs-generated-for-plugins.tab.values.at differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab index 3578a55..fa6854b 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab.values.at b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab.values.at index 633f193..8758b2c 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab.values.at and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/compilerPluginFiles/sources-referenced-by-plugins.tab.values.at differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab index e5c2a6b..45c349b 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream index ab11e23..863ba6c 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len index 1c69ee4..76db240 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len index 2a17e6e..01bdaa1 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at index e3bdcf6..978586b 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i index c416084..3f9e15b 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab index f1bfb0a..a85d86a 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream index 2ec73d0..1617f1f 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len index 7f1939e..8d116c5 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len index 2a17e6e..01bdaa1 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at index fc0e221..3737e13 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i index 2f3a220..f0fb256 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab index 4aa297e..2c59779 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream index 2ec73d0..1617f1f 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len index 7f1939e..8d116c5 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len index 2a17e6e..01bdaa1 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at index fedce15..98700e1 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i index 2f3a220..f0fb256 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab index 32aec6f..a78326b 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream index 3465908..211fe31 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len index 466716a..d339424 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len index fa606b6..cf8a30a 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at index b43bb6c..3f10d1f 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i index 73c4bf7..98d4816 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab index 0c69b05..071fac6 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream index be1de2f..0670271 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len index 002e02c..f5fef2f 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len index 01bdaa1..a9f80ae 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at index ac4d82c..4b73a7e 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i index eaf1f81..0ddda37 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab index 50015f3..b5e2959 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream index ab11e23..863ba6c 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len index 1c69ee4..76db240 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len index 2a17e6e..01bdaa1 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at index dec83c4..31a24ad 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i index c416084..3f9e15b 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/counters.tab b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/counters.tab index 2ceb12b..4a12dea 100644 --- a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/counters.tab +++ b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/counters.tab @@ -1,2 +1,2 @@ -2 +5 0 \ No newline at end of file diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab index 5966749..753ba12 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream index ab11e23..863ba6c 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len index 1c69ee4..76db240 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len index 2a17e6e..01bdaa1 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at index 7d30a43..f6a4f17 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i index c416084..3f9e15b 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab index d51061d..82fae4b 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream index 100d205..1dd772c 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len index ccfcbf4..62f3e6f 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len index 01bdaa1..ec8f944 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at index ee7b9a3..6dfad58 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i index f768a77..e6ff6ac 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab index 7a56877..406644e 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream index f3a76d9..973fa7a 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len index 168edd0..ec58b2d 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab.len b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab.len index 9d3828a..f21a5a2 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab.len and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab.len differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at index 6424862..671d73a 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at differ diff --git a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab_i b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab_i index f27ab67..9aa3523 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab_i and b/build/kotlin/compileTestKotlin/cacheable/caches-jvm/lookups/lookups.tab_i differ diff --git a/build/kotlin/compileTestKotlin/cacheable/last-build.bin b/build/kotlin/compileTestKotlin/cacheable/last-build.bin index 13724a7..2e172ed 100644 Binary files a/build/kotlin/compileTestKotlin/cacheable/last-build.bin and b/build/kotlin/compileTestKotlin/cacheable/last-build.bin differ diff --git a/build/kotlin/compileTestKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin b/build/kotlin/compileTestKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin index 2553e43..28df943 100644 Binary files a/build/kotlin/compileTestKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin and b/build/kotlin/compileTestKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin differ diff --git a/build/libs/Kidio_backend-1.0.0-SNAPSHOT.jar b/build/libs/Kidio_backend-1.0.0-SNAPSHOT.jar index fe75680..4700cc9 100644 Binary files a/build/libs/Kidio_backend-1.0.0-SNAPSHOT.jar and b/build/libs/Kidio_backend-1.0.0-SNAPSHOT.jar differ diff --git a/build/reports/problems/problems-report.html b/build/reports/problems/problems-report.html index 0a04b5b..b4a8715 100644 --- a/build/reports/problems/problems-report.html +++ b/build/reports/problems/problems-report.html @@ -653,7 +653,7 @@ code + .copy-button { diff --git a/build/reports/tests/test/8NsLo4ikTC0/RMUSCRWfDUg.html b/build/reports/tests/test/8NsLo4ikTC0/RMUSCRWfDUg.html deleted file mode 100644 index f5228e8..0000000 --- a/build/reports/tests/test/8NsLo4ikTC0/RMUSCRWfDUg.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - -Test results - test tasks endpoint and verify - - - - - -

- -
- -
-

Gradle Test Run :test

-

test tasks endpoint and verify

-
- -
-

summary

-
-
- - - - - -
-
- - - - - - - -
-
-
1
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

skipped

-
-
-
-
0.320s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
-
-
-

standard output

- -
2026-09-02 22:23:26.448 [DefaultDispatcher-worker-2 @call-context#3] INFO  io.ktor.test - No ktor.deployment.watch patterns specified, automatic reload is not active.
-2026-09-02 22:23:26.466 [DefaultDispatcher-worker-2 @call-context#3] INFO  io.ktor.test - Application started in 0.022 seconds.
-2026-09-02 22:23:26.467 [DefaultDispatcher-worker-3 @coroutine#5] INFO  io.ktor.test - Responding at http://localhost:80
-2026-09-02 22:23:26.467 [DefaultDispatcher-worker-3 @coroutine#5] INFO  io.ktor.test - Responding at https://localhost:443
-
- -
-
-
-
-
- -
- - diff --git a/build/reports/tests/test/8NsLo4ikTC0/_9htK0Zm5DI.html b/build/reports/tests/test/8NsLo4ikTC0/_9htK0Zm5DI.html deleted file mode 100644 index d357626..0000000 --- a/build/reports/tests/test/8NsLo4ikTC0/_9htK0Zm5DI.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - -Test results - test screentime sync - - - - - -
- -
- -
-

Gradle Test Run :test

-

test screentime sync

-
- -
-

summary

-
-
- - - - - -
-
- - - - - - - -
-
-
1
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

skipped

-
-
-
-
0.007s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
-
-
-

standard output

- -
2026-09-02 22:23:26.526 [DefaultDispatcher-worker-3 @call-context#23] INFO  io.ktor.test - No ktor.deployment.watch patterns specified, automatic reload is not active.
-2026-09-02 22:23:26.526 [DefaultDispatcher-worker-3 @call-context#23] INFO  io.ktor.test - Application started in 0.0 seconds.
-2026-09-02 22:23:26.526 [DefaultDispatcher-worker-5 @coroutine#25] INFO  io.ktor.test - Responding at http://localhost:80
-2026-09-02 22:23:26.526 [DefaultDispatcher-worker-5 @coroutine#25] INFO  io.ktor.test - Responding at https://localhost:443
-
- -
-
-
-
-
- -
- - diff --git a/build/reports/tests/test/8NsLo4ikTC0/index.html b/build/reports/tests/test/8NsLo4ikTC0/index.html index 6516b8c..5e5d45a 100644 --- a/build/reports/tests/test/8NsLo4ikTC0/index.html +++ b/build/reports/tests/test/8NsLo4ikTC0/index.html @@ -41,7 +41,7 @@
-
3
+
6

tests

@@ -59,7 +59,7 @@
-
0.340s
+
0.531s

duration

@@ -90,35 +90,68 @@ +test get screentime returns current status + +test get screentime returns current status +1 +0 +0 +0.008s +100% + + + test health endpoint test health endpoint 1 0 0 -0.011s +0.003s 100% -test screentime sync +test protected endpoints reject unauthorized requests -test screentime sync +test protected endpoints reject unauthorized requests 1 0 0 -0.007s +0.004s 100% -test tasks endpoint and verify +test registration and login flow -test tasks endpoint and verify +test registration and login flow 1 0 0 -0.320s +0.131s +100% + + + +test screentime sync deducts time repeatedly + +test screentime sync deducts time repeatedly +1 +0 +0 +0.371s +100% + + + +test tasks endpoint and verify with jwt + +test tasks endpoint and verify with jwt +1 +0 +0 +0.014s 100% @@ -134,7 +167,7 @@ Generated by -Gradle 9.5.1 at 02.09.2026, 22:23:26

+Gradle 9.5.1 at 14.09.2026, 23:12:41

diff --git a/build/reports/tests/test/8NsLo4ikTC0/jeQlZocklF8.html b/build/reports/tests/test/8NsLo4ikTC0/jeQlZocklF8.html index 702ca15..6ae4e65 100644 --- a/build/reports/tests/test/8NsLo4ikTC0/jeQlZocklF8.html +++ b/build/reports/tests/test/8NsLo4ikTC0/jeQlZocklF8.html @@ -63,7 +63,7 @@
-
0.011s
+
0.003s

duration

@@ -85,10 +85,10 @@

standard output

-
2026-09-02 22:23:26.533 [DefaultDispatcher-worker-7 @call-context#39] INFO  io.ktor.test - No ktor.deployment.watch patterns specified, automatic reload is not active.
-2026-09-02 22:23:26.534 [DefaultDispatcher-worker-7 @call-context#39] INFO  io.ktor.test - Application started in 0.001 seconds.
-2026-09-02 22:23:26.534 [DefaultDispatcher-worker-3 @coroutine#41] INFO  io.ktor.test - Responding at http://localhost:80
-2026-09-02 22:23:26.534 [DefaultDispatcher-worker-3 @coroutine#41] INFO  io.ktor.test - Responding at https://localhost:443
+
2026-09-14 23:12:41.276 [DefaultDispatcher-worker-5 @call-context#63] INFO  io.ktor.test - No ktor.deployment.watch patterns specified, automatic reload is not active.
+2026-09-14 23:12:41.277 [DefaultDispatcher-worker-5 @call-context#63] INFO  io.ktor.test - Application started in 0.001 seconds.
+2026-09-14 23:12:41.277 [DefaultDispatcher-worker-4 @coroutine#65] INFO  io.ktor.test - Responding at http://localhost:80
+2026-09-14 23:12:41.277 [DefaultDispatcher-worker-4 @coroutine#65] INFO  io.ktor.test - Responding at https://localhost:443
 
@@ -103,7 +103,7 @@
Generated by -Gradle 9.5.1 at 02.09.2026, 22:23:26

+Gradle 9.5.1 at 14.09.2026, 23:12:41

diff --git a/build/reports/tests/test/index.html b/build/reports/tests/test/index.html index 3544341..ba72c5d 100644 --- a/build/reports/tests/test/index.html +++ b/build/reports/tests/test/index.html @@ -38,7 +38,7 @@
-
3
+
13

tests

@@ -56,7 +56,7 @@
-
0.658s
+
9.223s

duration

@@ -87,13 +87,24 @@ +H5PParserTest + +com.oliver.kidio.backend.H5PParserTest +7 +0 +0 +8.403s +100% + + + ServerTest com.oliver.kidio.backend.ServerTest -3 +6 0 0 -0.340s +0.531s 100% @@ -109,7 +120,7 @@ Generated by -Gradle 9.5.1 at 02.09.2026, 22:23:26

+Gradle 9.5.1 at 14.09.2026, 23:12:41

diff --git a/build/resources/main/application.yaml b/build/resources/main/application.yaml index 25c97a3..cf8b828 100644 --- a/build/resources/main/application.yaml +++ b/build/resources/main/application.yaml @@ -1,14 +1,14 @@ ktor: deployment: - port: 8080 + port: 8081 application: modules: - MainKt.module storage: driverClassName: "org.postgresql.Driver" - host: "82.165.11.162" + host: "localhost" port: "5432" database: "kidio_db" - username: "postgres" - password: "Julian__98" + username: "kidio_admin" + password: "learning" diff --git a/build/test-results/test/TEST-com.oliver.kidio.backend.ServerTest.xml b/build/test-results/test/TEST-com.oliver.kidio.backend.ServerTest.xml index 9c3b6db..3b6f123 100644 --- a/build/test-results/test/TEST-com.oliver.kidio.backend.ServerTest.xml +++ b/build/test-results/test/TEST-com.oliver.kidio.backend.ServerTest.xml @@ -1,21 +1,36 @@ - + - - - - + + + + + + diff --git a/build/test-results/test/binary/output-events.bin b/build/test-results/test/binary/output-events.bin index 77a6fc5..9e4c701 100644 Binary files a/build/test-results/test/binary/output-events.bin and b/build/test-results/test/binary/output-events.bin differ diff --git a/build/test-results/test/binary/results-generic.bin b/build/test-results/test/binary/results-generic.bin index a39836a..a4717ef 100644 Binary files a/build/test-results/test/binary/results-generic.bin and b/build/test-results/test/binary/results-generic.bin differ diff --git a/docs/.swagger-codegen-ignore b/docs/.swagger-codegen-ignore new file mode 100644 index 0000000..c5fa491 --- /dev/null +++ b/docs/.swagger-codegen-ignore @@ -0,0 +1,23 @@ +# Swagger Codegen Ignore +# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/docs/.swagger-codegen/VERSION b/docs/.swagger-codegen/VERSION new file mode 100644 index 0000000..2680502 --- /dev/null +++ b/docs/.swagger-codegen/VERSION @@ -0,0 +1 @@ +3.0.81 \ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..0d0c426 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,4987 @@ + + + + + Untitled API + + + + + + + + + + + + + +
+
+ +
+
+
+

Untitled API

+
+
+
+ +
+
+

Default

+
+
+
+

apiV1AuthLoginPost

+

+
+
+
+

+

+

+
+
/api/v1/auth/login
+

+

Usage and SDK Samples

+

+ + +
+
+
curl -X POST\
+-H "Accept: application/json"\
+-H "Content-Type: application/json"\
+"//api/v1/auth/login"
+
+
+
import io.swagger.client.*;
+import io.swagger.client.auth.*;
+import io.swagger.client.model.*;
+import io.swagger.client.api.DefaultApi;
+
+import java.io.File;
+import java.util.*;
+
+public class DefaultApiExample {
+
+    public static void main(String[] args) {
+        
+        DefaultApi apiInstance = new DefaultApi();
+        LoginRequest body = ; // LoginRequest | 
+        try {
+            AuthResponse result = apiInstance.apiV1AuthLoginPost(body);
+            System.out.println(result);
+        } catch (ApiException e) {
+            System.err.println("Exception when calling DefaultApi#apiV1AuthLoginPost");
+            e.printStackTrace();
+        }
+    }
+}
+
+ +
+
import io.swagger.client.api.DefaultApi;
+
+public class DefaultApiExample {
+
+    public static void main(String[] args) {
+        DefaultApi apiInstance = new DefaultApi();
+        LoginRequest body = ; // LoginRequest | 
+        try {
+            AuthResponse result = apiInstance.apiV1AuthLoginPost(body);
+            System.out.println(result);
+        } catch (ApiException e) {
+            System.err.println("Exception when calling DefaultApi#apiV1AuthLoginPost");
+            e.printStackTrace();
+        }
+    }
+}
+
+ +
+
LoginRequest *body = ; //  (optional)
+
+DefaultApi *apiInstance = [[DefaultApi alloc] init];
+
+[apiInstance apiV1AuthLoginPostWith:body
+              completionHandler: ^(AuthResponse output, NSError* error) {
+                            if (output) {
+                                NSLog(@"%@", output);
+                            }
+                            if (error) {
+                                NSLog(@"Error: %@", error);
+                            }
+                        }];
+
+
+ +
+
var UntitledApi = require('untitled_api');
+
+var api = new UntitledApi.DefaultApi()
+var opts = { 
+  'body':  // {{LoginRequest}} 
+};
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully. Returned data: ' + data);
+  }
+};
+api.apiV1AuthLoginPost(opts, callback);
+
+
+ + +
+
using System;
+using System.Diagnostics;
+using IO.Swagger.Api;
+using IO.Swagger.Client;
+using IO.Swagger.Model;
+
+namespace Example
+{
+    public class apiV1AuthLoginPostExample
+    {
+        public void main()
+        {
+
+            var apiInstance = new DefaultApi();
+            var body = new LoginRequest(); // LoginRequest |  (optional) 
+
+            try
+            {
+                AuthResponse result = apiInstance.apiV1AuthLoginPost(body);
+                Debug.WriteLine(result);
+            }
+            catch (Exception e)
+            {
+                Debug.Print("Exception when calling DefaultApi.apiV1AuthLoginPost: " + e.Message );
+            }
+        }
+    }
+}
+
+
+ +
+
<?php
+require_once(__DIR__ . '/vendor/autoload.php');
+
+$api_instance = new Swagger\Client\ApiDefaultApi();
+$body = ; // LoginRequest | 
+
+try {
+    $result = $api_instance->apiV1AuthLoginPost($body);
+    print_r($result);
+} catch (Exception $e) {
+    echo 'Exception when calling DefaultApi->apiV1AuthLoginPost: ', $e->getMessage(), PHP_EOL;
+}
+?>
+
+ +
+
use Data::Dumper;
+use WWW::SwaggerClient::Configuration;
+use WWW::SwaggerClient::DefaultApi;
+
+my $api_instance = WWW::SwaggerClient::DefaultApi->new();
+my $body = WWW::SwaggerClient::Object::LoginRequest->new(); # LoginRequest | 
+
+eval { 
+    my $result = $api_instance->apiV1AuthLoginPost(body => $body);
+    print Dumper($result);
+};
+if ($@) {
+    warn "Exception when calling DefaultApi->apiV1AuthLoginPost: $@\n";
+}
+
+ +
+
from __future__ import print_statement
+import time
+import swagger_client
+from swagger_client.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = swagger_client.DefaultApi()
+body =  # LoginRequest |  (optional)
+
+try: 
+    api_response = api_instance.api_v1_auth_login_post(body=body)
+    pprint(api_response)
+except ApiException as e:
+    print("Exception when calling DefaultApi->apiV1AuthLoginPost: %s\n" % e)
+
+
+ +

Parameters

+ + + +
Body parameters
+ + + + + + + + +
NameDescription
body + + + +
+
+ + + +

Responses

+

Status: 400 -

+ + + +
+
+
+ +
+ +
+
+ +

Status: 401 -

+ + + +
+
+
+ +
+ +
+
+ +

Status: 200 -

+ + + +
+
+
+ +
+ +
+
+ +
+
+
+
+
+
+

apiV1AuthRegisterPost

+

+
+
+
+

+

+

+
+
/api/v1/auth/register
+

+

Usage and SDK Samples

+

+ + +
+
+
curl -X POST\
+-H "Accept: application/json"\
+-H "Content-Type: application/json"\
+"//api/v1/auth/register"
+
+
+
import io.swagger.client.*;
+import io.swagger.client.auth.*;
+import io.swagger.client.model.*;
+import io.swagger.client.api.DefaultApi;
+
+import java.io.File;
+import java.util.*;
+
+public class DefaultApiExample {
+
+    public static void main(String[] args) {
+        
+        DefaultApi apiInstance = new DefaultApi();
+        RegisterRequest body = ; // RegisterRequest | 
+        try {
+            apiInstance.apiV1AuthRegisterPost(body);
+        } catch (ApiException e) {
+            System.err.println("Exception when calling DefaultApi#apiV1AuthRegisterPost");
+            e.printStackTrace();
+        }
+    }
+}
+
+ +
+
import io.swagger.client.api.DefaultApi;
+
+public class DefaultApiExample {
+
+    public static void main(String[] args) {
+        DefaultApi apiInstance = new DefaultApi();
+        RegisterRequest body = ; // RegisterRequest | 
+        try {
+            apiInstance.apiV1AuthRegisterPost(body);
+        } catch (ApiException e) {
+            System.err.println("Exception when calling DefaultApi#apiV1AuthRegisterPost");
+            e.printStackTrace();
+        }
+    }
+}
+
+ +
+
RegisterRequest *body = ; //  (optional)
+
+DefaultApi *apiInstance = [[DefaultApi alloc] init];
+
+[apiInstance apiV1AuthRegisterPostWith:body
+              completionHandler: ^(NSError* error) {
+                            if (error) {
+                                NSLog(@"Error: %@", error);
+                            }
+                        }];
+
+
+ +
+
var UntitledApi = require('untitled_api');
+
+var api = new UntitledApi.DefaultApi()
+var opts = { 
+  'body':  // {{RegisterRequest}} 
+};
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully.');
+  }
+};
+api.apiV1AuthRegisterPost(opts, callback);
+
+
+ + +
+
using System;
+using System.Diagnostics;
+using IO.Swagger.Api;
+using IO.Swagger.Client;
+using IO.Swagger.Model;
+
+namespace Example
+{
+    public class apiV1AuthRegisterPostExample
+    {
+        public void main()
+        {
+
+            var apiInstance = new DefaultApi();
+            var body = new RegisterRequest(); // RegisterRequest |  (optional) 
+
+            try
+            {
+                apiInstance.apiV1AuthRegisterPost(body);
+            }
+            catch (Exception e)
+            {
+                Debug.Print("Exception when calling DefaultApi.apiV1AuthRegisterPost: " + e.Message );
+            }
+        }
+    }
+}
+
+
+ +
+
<?php
+require_once(__DIR__ . '/vendor/autoload.php');
+
+$api_instance = new Swagger\Client\ApiDefaultApi();
+$body = ; // RegisterRequest | 
+
+try {
+    $api_instance->apiV1AuthRegisterPost($body);
+} catch (Exception $e) {
+    echo 'Exception when calling DefaultApi->apiV1AuthRegisterPost: ', $e->getMessage(), PHP_EOL;
+}
+?>
+
+ +
+
use Data::Dumper;
+use WWW::SwaggerClient::Configuration;
+use WWW::SwaggerClient::DefaultApi;
+
+my $api_instance = WWW::SwaggerClient::DefaultApi->new();
+my $body = WWW::SwaggerClient::Object::RegisterRequest->new(); # RegisterRequest | 
+
+eval { 
+    $api_instance->apiV1AuthRegisterPost(body => $body);
+};
+if ($@) {
+    warn "Exception when calling DefaultApi->apiV1AuthRegisterPost: $@\n";
+}
+
+ +
+
from __future__ import print_statement
+import time
+import swagger_client
+from swagger_client.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = swagger_client.DefaultApi()
+body =  # RegisterRequest |  (optional)
+
+try: 
+    api_instance.api_v1_auth_register_post(body=body)
+except ApiException as e:
+    print("Exception when calling DefaultApi->apiV1AuthRegisterPost: %s\n" % e)
+
+
+ +

Parameters

+ + + +
Body parameters
+ + + + + + + + +
NameDescription
body + + + +
+
+ + + +

Responses

+

Status: 400 -

+ + + +
+
+
+ +
+ +
+
+ +

Status: 409 -

+ + + +
+
+
+ +
+ +
+
+ +

Status: 201 -

+ + + +
+
+
+ +
+ +
+
+ +
+
+
+
+
+
+

apiV1HealthGet

+

Health-Check

+
+
+
+

+

+

+
+
/api/v1/health
+

+

Usage and SDK Samples

+

+ + +
+
+
curl -X GET\
+-H "Accept: application/json"\
+"//api/v1/health"
+
+
+
import io.swagger.client.*;
+import io.swagger.client.auth.*;
+import io.swagger.client.model.*;
+import io.swagger.client.api.DefaultApi;
+
+import java.io.File;
+import java.util.*;
+
+public class DefaultApiExample {
+
+    public static void main(String[] args) {
+        
+        DefaultApi apiInstance = new DefaultApi();
+        try {
+            apiInstance.apiV1HealthGet();
+        } catch (ApiException e) {
+            System.err.println("Exception when calling DefaultApi#apiV1HealthGet");
+            e.printStackTrace();
+        }
+    }
+}
+
+ +
+
import io.swagger.client.api.DefaultApi;
+
+public class DefaultApiExample {
+
+    public static void main(String[] args) {
+        DefaultApi apiInstance = new DefaultApi();
+        try {
+            apiInstance.apiV1HealthGet();
+        } catch (ApiException e) {
+            System.err.println("Exception when calling DefaultApi#apiV1HealthGet");
+            e.printStackTrace();
+        }
+    }
+}
+
+ +
+

+DefaultApi *apiInstance = [[DefaultApi alloc] init];
+
+// Health-Check
+[apiInstance apiV1HealthGetWithCompletionHandler: 
+              ^(NSError* error) {
+                            if (error) {
+                                NSLog(@"Error: %@", error);
+                            }
+                        }];
+
+
+ +
+
var UntitledApi = require('untitled_api');
+
+var api = new UntitledApi.DefaultApi()
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully.');
+  }
+};
+api.apiV1HealthGet(callback);
+
+
+ + +
+
using System;
+using System.Diagnostics;
+using IO.Swagger.Api;
+using IO.Swagger.Client;
+using IO.Swagger.Model;
+
+namespace Example
+{
+    public class apiV1HealthGetExample
+    {
+        public void main()
+        {
+
+            var apiInstance = new DefaultApi();
+
+            try
+            {
+                // Health-Check
+                apiInstance.apiV1HealthGet();
+            }
+            catch (Exception e)
+            {
+                Debug.Print("Exception when calling DefaultApi.apiV1HealthGet: " + e.Message );
+            }
+        }
+    }
+}
+
+
+ +
+
<?php
+require_once(__DIR__ . '/vendor/autoload.php');
+
+$api_instance = new Swagger\Client\ApiDefaultApi();
+
+try {
+    $api_instance->apiV1HealthGet();
+} catch (Exception $e) {
+    echo 'Exception when calling DefaultApi->apiV1HealthGet: ', $e->getMessage(), PHP_EOL;
+}
+?>
+
+ +
+
use Data::Dumper;
+use WWW::SwaggerClient::Configuration;
+use WWW::SwaggerClient::DefaultApi;
+
+my $api_instance = WWW::SwaggerClient::DefaultApi->new();
+
+eval { 
+    $api_instance->apiV1HealthGet();
+};
+if ($@) {
+    warn "Exception when calling DefaultApi->apiV1HealthGet: $@\n";
+}
+
+ +
+
from __future__ import print_statement
+import time
+import swagger_client
+from swagger_client.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = swagger_client.DefaultApi()
+
+try: 
+    # Health-Check
+    api_instance.api_v1_health_get()
+except ApiException as e:
+    print("Exception when calling DefaultApi->apiV1HealthGet: %s\n" % e)
+
+
+ +

Parameters

+ + + + + + +

Responses

+

Status: 200 -

+ + + +
+
+
+ +
+ +
+
+ +
+
+
+
+
+
+

apiV1ScreentimeGet

+

+
+
+
+

+

+

+
+
/api/v1/screentime
+

+

Usage and SDK Samples

+

+ + +
+
+
curl -X GET\
+ -H "Authorization: Bearer [[accessToken]]"\
+-H "Accept: application/json"\
+"//api/v1/screentime"
+
+
+
import io.swagger.client.*;
+import io.swagger.client.auth.*;
+import io.swagger.client.model.*;
+import io.swagger.client.api.DefaultApi;
+
+import java.io.File;
+import java.util.*;
+
+public class DefaultApiExample {
+
+    public static void main(String[] args) {
+        ApiClient defaultClient = Configuration.getDefaultApiClient();
+
+
+        DefaultApi apiInstance = new DefaultApi();
+        try {
+            SyncResponse result = apiInstance.apiV1ScreentimeGet();
+            System.out.println(result);
+        } catch (ApiException e) {
+            System.err.println("Exception when calling DefaultApi#apiV1ScreentimeGet");
+            e.printStackTrace();
+        }
+    }
+}
+
+ +
+
import io.swagger.client.api.DefaultApi;
+
+public class DefaultApiExample {
+
+    public static void main(String[] args) {
+        DefaultApi apiInstance = new DefaultApi();
+        try {
+            SyncResponse result = apiInstance.apiV1ScreentimeGet();
+            System.out.println(result);
+        } catch (ApiException e) {
+            System.err.println("Exception when calling DefaultApi#apiV1ScreentimeGet");
+            e.printStackTrace();
+        }
+    }
+}
+
+ +
+
Configuration *apiConfig = [Configuration sharedConfig];
+
+DefaultApi *apiInstance = [[DefaultApi alloc] init];
+
+[apiInstance apiV1ScreentimeGetWithCompletionHandler: 
+              ^(SyncResponse output, NSError* error) {
+                            if (output) {
+                                NSLog(@"%@", output);
+                            }
+                            if (error) {
+                                NSLog(@"Error: %@", error);
+                            }
+                        }];
+
+
+ +
+
var UntitledApi = require('untitled_api');
+var defaultClient = UntitledApi.ApiClient.instance;
+
+
+var api = new UntitledApi.DefaultApi()
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully. Returned data: ' + data);
+  }
+};
+api.apiV1ScreentimeGet(callback);
+
+
+ + +
+
using System;
+using System.Diagnostics;
+using IO.Swagger.Api;
+using IO.Swagger.Client;
+using IO.Swagger.Model;
+
+namespace Example
+{
+    public class apiV1ScreentimeGetExample
+    {
+        public void main()
+        {
+
+
+            var apiInstance = new DefaultApi();
+
+            try
+            {
+                SyncResponse result = apiInstance.apiV1ScreentimeGet();
+                Debug.WriteLine(result);
+            }
+            catch (Exception e)
+            {
+                Debug.Print("Exception when calling DefaultApi.apiV1ScreentimeGet: " + e.Message );
+            }
+        }
+    }
+}
+
+
+ +
+
<?php
+require_once(__DIR__ . '/vendor/autoload.php');
+
+
+$api_instance = new Swagger\Client\ApiDefaultApi();
+
+try {
+    $result = $api_instance->apiV1ScreentimeGet();
+    print_r($result);
+} catch (Exception $e) {
+    echo 'Exception when calling DefaultApi->apiV1ScreentimeGet: ', $e->getMessage(), PHP_EOL;
+}
+?>
+
+ +
+
use Data::Dumper;
+use WWW::SwaggerClient::Configuration;
+use WWW::SwaggerClient::DefaultApi;
+
+
+my $api_instance = WWW::SwaggerClient::DefaultApi->new();
+
+eval { 
+    my $result = $api_instance->apiV1ScreentimeGet();
+    print Dumper($result);
+};
+if ($@) {
+    warn "Exception when calling DefaultApi->apiV1ScreentimeGet: $@\n";
+}
+
+ +
+
from __future__ import print_statement
+import time
+import swagger_client
+from swagger_client.rest import ApiException
+from pprint import pprint
+
+
+# create an instance of the API class
+api_instance = swagger_client.DefaultApi()
+
+try: 
+    api_response = api_instance.api_v1_screentime_get()
+    pprint(api_response)
+except ApiException as e:
+    print("Exception when calling DefaultApi->apiV1ScreentimeGet: %s\n" % e)
+
+
+ +

Parameters

+ + + + + + +

Responses

+

Status: 401 -

+ + + +
+
+
+ +
+ +
+
+ +

Status: 200 -

+ + + +
+
+
+ +
+ +
+
+ +
+
+
+
+
+
+

apiV1ScreentimeSyncPost

+

3. Bildschirmzeit synchronisieren

+
+
+
+

+

+

+
+
/api/v1/screentime/sync
+

+

Usage and SDK Samples

+

+ + +
+
+
curl -X POST\
+ -H "Authorization: Bearer [[accessToken]]"\
+-H "Accept: application/json"\
+-H "Content-Type: application/json"\
+"//api/v1/screentime/sync"
+
+
+
import io.swagger.client.*;
+import io.swagger.client.auth.*;
+import io.swagger.client.model.*;
+import io.swagger.client.api.DefaultApi;
+
+import java.io.File;
+import java.util.*;
+
+public class DefaultApiExample {
+
+    public static void main(String[] args) {
+        ApiClient defaultClient = Configuration.getDefaultApiClient();
+
+
+        DefaultApi apiInstance = new DefaultApi();
+        SyncRequest body = ; // SyncRequest | 
+        try {
+            SyncResponse result = apiInstance.apiV1ScreentimeSyncPost(body);
+            System.out.println(result);
+        } catch (ApiException e) {
+            System.err.println("Exception when calling DefaultApi#apiV1ScreentimeSyncPost");
+            e.printStackTrace();
+        }
+    }
+}
+
+ +
+
import io.swagger.client.api.DefaultApi;
+
+public class DefaultApiExample {
+
+    public static void main(String[] args) {
+        DefaultApi apiInstance = new DefaultApi();
+        SyncRequest body = ; // SyncRequest | 
+        try {
+            SyncResponse result = apiInstance.apiV1ScreentimeSyncPost(body);
+            System.out.println(result);
+        } catch (ApiException e) {
+            System.err.println("Exception when calling DefaultApi#apiV1ScreentimeSyncPost");
+            e.printStackTrace();
+        }
+    }
+}
+
+ +
+
Configuration *apiConfig = [Configuration sharedConfig];
+SyncRequest *body = ; //  (optional)
+
+DefaultApi *apiInstance = [[DefaultApi alloc] init];
+
+// 3. Bildschirmzeit synchronisieren
+[apiInstance apiV1ScreentimeSyncPostWith:body
+              completionHandler: ^(SyncResponse output, NSError* error) {
+                            if (output) {
+                                NSLog(@"%@", output);
+                            }
+                            if (error) {
+                                NSLog(@"Error: %@", error);
+                            }
+                        }];
+
+
+ +
+
var UntitledApi = require('untitled_api');
+var defaultClient = UntitledApi.ApiClient.instance;
+
+
+var api = new UntitledApi.DefaultApi()
+var opts = { 
+  'body':  // {{SyncRequest}} 
+};
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully. Returned data: ' + data);
+  }
+};
+api.apiV1ScreentimeSyncPost(opts, callback);
+
+
+ + +
+
using System;
+using System.Diagnostics;
+using IO.Swagger.Api;
+using IO.Swagger.Client;
+using IO.Swagger.Model;
+
+namespace Example
+{
+    public class apiV1ScreentimeSyncPostExample
+    {
+        public void main()
+        {
+
+
+            var apiInstance = new DefaultApi();
+            var body = new SyncRequest(); // SyncRequest |  (optional) 
+
+            try
+            {
+                // 3. Bildschirmzeit synchronisieren
+                SyncResponse result = apiInstance.apiV1ScreentimeSyncPost(body);
+                Debug.WriteLine(result);
+            }
+            catch (Exception e)
+            {
+                Debug.Print("Exception when calling DefaultApi.apiV1ScreentimeSyncPost: " + e.Message );
+            }
+        }
+    }
+}
+
+
+ +
+
<?php
+require_once(__DIR__ . '/vendor/autoload.php');
+
+
+$api_instance = new Swagger\Client\ApiDefaultApi();
+$body = ; // SyncRequest | 
+
+try {
+    $result = $api_instance->apiV1ScreentimeSyncPost($body);
+    print_r($result);
+} catch (Exception $e) {
+    echo 'Exception when calling DefaultApi->apiV1ScreentimeSyncPost: ', $e->getMessage(), PHP_EOL;
+}
+?>
+
+ +
+
use Data::Dumper;
+use WWW::SwaggerClient::Configuration;
+use WWW::SwaggerClient::DefaultApi;
+
+
+my $api_instance = WWW::SwaggerClient::DefaultApi->new();
+my $body = WWW::SwaggerClient::Object::SyncRequest->new(); # SyncRequest | 
+
+eval { 
+    my $result = $api_instance->apiV1ScreentimeSyncPost(body => $body);
+    print Dumper($result);
+};
+if ($@) {
+    warn "Exception when calling DefaultApi->apiV1ScreentimeSyncPost: $@\n";
+}
+
+ +
+
from __future__ import print_statement
+import time
+import swagger_client
+from swagger_client.rest import ApiException
+from pprint import pprint
+
+
+# create an instance of the API class
+api_instance = swagger_client.DefaultApi()
+body =  # SyncRequest |  (optional)
+
+try: 
+    # 3. Bildschirmzeit synchronisieren
+    api_response = api_instance.api_v1_screentime_sync_post(body=body)
+    pprint(api_response)
+except ApiException as e:
+    print("Exception when calling DefaultApi->apiV1ScreentimeSyncPost: %s\n" % e)
+
+
+ +

Parameters

+ + + +
Body parameters
+ + + + + + + + +
NameDescription
body + + + +
+
+ + + +

Responses

+

Status: 200 -

+ + + +
+
+
+ +
+ +
+
+ +
+
+
+
+
+
+

apiV1TasksGet

+

1. Alle verfügbaren Aufgaben abrufen (mit optionaler Filterung nach Fach und Alter)

+
+
+
+

+

+

+
+
/api/v1/tasks
+

+

Usage and SDK Samples

+

+ + +
+
+
curl -X GET\
+ -H "Authorization: Bearer [[accessToken]]"\
+-H "Accept: application/json"\
+"//api/v1/tasks?subject=&age=&limit="
+
+
+
import io.swagger.client.*;
+import io.swagger.client.auth.*;
+import io.swagger.client.model.*;
+import io.swagger.client.api.DefaultApi;
+
+import java.io.File;
+import java.util.*;
+
+public class DefaultApiExample {
+
+    public static void main(String[] args) {
+        ApiClient defaultClient = Configuration.getDefaultApiClient();
+
+
+        DefaultApi apiInstance = new DefaultApi();
+         subject = ; //  | 
+         age = ; //  | 
+         limit = ; //  | 
+        try {
+            apiInstance.apiV1TasksGet(subject, age, limit);
+        } catch (ApiException e) {
+            System.err.println("Exception when calling DefaultApi#apiV1TasksGet");
+            e.printStackTrace();
+        }
+    }
+}
+
+ +
+
import io.swagger.client.api.DefaultApi;
+
+public class DefaultApiExample {
+
+    public static void main(String[] args) {
+        DefaultApi apiInstance = new DefaultApi();
+         subject = ; //  | 
+         age = ; //  | 
+         limit = ; //  | 
+        try {
+            apiInstance.apiV1TasksGet(subject, age, limit);
+        } catch (ApiException e) {
+            System.err.println("Exception when calling DefaultApi#apiV1TasksGet");
+            e.printStackTrace();
+        }
+    }
+}
+
+ +
+
Configuration *apiConfig = [Configuration sharedConfig];
+ *subject = ; //  (optional)
+ *age = ; //  (optional)
+ *limit = ; //  (optional)
+
+DefaultApi *apiInstance = [[DefaultApi alloc] init];
+
+// 1. Alle verfügbaren Aufgaben abrufen (mit optionaler Filterung nach Fach und Alter)
+[apiInstance apiV1TasksGetWith:subject
+    age:age
+    limit:limit
+              completionHandler: ^(NSError* error) {
+                            if (error) {
+                                NSLog(@"Error: %@", error);
+                            }
+                        }];
+
+
+ +
+
var UntitledApi = require('untitled_api');
+var defaultClient = UntitledApi.ApiClient.instance;
+
+
+var api = new UntitledApi.DefaultApi()
+var opts = { 
+  'subject': , // {{}} 
+  'age': , // {{}} 
+  'limit':  // {{}} 
+};
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully.');
+  }
+};
+api.apiV1TasksGet(opts, callback);
+
+
+ + +
+
using System;
+using System.Diagnostics;
+using IO.Swagger.Api;
+using IO.Swagger.Client;
+using IO.Swagger.Model;
+
+namespace Example
+{
+    public class apiV1TasksGetExample
+    {
+        public void main()
+        {
+
+
+            var apiInstance = new DefaultApi();
+            var subject = new (); //  |  (optional) 
+            var age = new (); //  |  (optional) 
+            var limit = new (); //  |  (optional) 
+
+            try
+            {
+                // 1. Alle verfügbaren Aufgaben abrufen (mit optionaler Filterung nach Fach und Alter)
+                apiInstance.apiV1TasksGet(subject, age, limit);
+            }
+            catch (Exception e)
+            {
+                Debug.Print("Exception when calling DefaultApi.apiV1TasksGet: " + e.Message );
+            }
+        }
+    }
+}
+
+
+ +
+
<?php
+require_once(__DIR__ . '/vendor/autoload.php');
+
+
+$api_instance = new Swagger\Client\ApiDefaultApi();
+$subject = ; //  | 
+$age = ; //  | 
+$limit = ; //  | 
+
+try {
+    $api_instance->apiV1TasksGet($subject, $age, $limit);
+} catch (Exception $e) {
+    echo 'Exception when calling DefaultApi->apiV1TasksGet: ', $e->getMessage(), PHP_EOL;
+}
+?>
+
+ +
+
use Data::Dumper;
+use WWW::SwaggerClient::Configuration;
+use WWW::SwaggerClient::DefaultApi;
+
+
+my $api_instance = WWW::SwaggerClient::DefaultApi->new();
+my $subject = ; #  | 
+my $age = ; #  | 
+my $limit = ; #  | 
+
+eval { 
+    $api_instance->apiV1TasksGet(subject => $subject, age => $age, limit => $limit);
+};
+if ($@) {
+    warn "Exception when calling DefaultApi->apiV1TasksGet: $@\n";
+}
+
+ +
+
from __future__ import print_statement
+import time
+import swagger_client
+from swagger_client.rest import ApiException
+from pprint import pprint
+
+
+# create an instance of the API class
+api_instance = swagger_client.DefaultApi()
+subject =  #  |  (optional)
+age =  #  |  (optional)
+limit =  #  |  (optional)
+
+try: 
+    # 1. Alle verfügbaren Aufgaben abrufen (mit optionaler Filterung nach Fach und Alter)
+    api_instance.api_v1_tasks_get(subject=subject, age=age, limit=limit)
+except ApiException as e:
+    print("Exception when calling DefaultApi->apiV1TasksGet: %s\n" % e)
+
+
+ +

Parameters

+ + + + + +
Query parameters
+ + + + + + + + + + + + + + +
NameDescription
subject + + +
+
+
+ + + + +
+
+
+
age + + +
+
+
+ + + + +
+
+
+
limit + + +
+
+
+ + + + +
+
+
+
+ +

Responses

+

Status: 200 -

+ + + +
+
+
+ +
+ +
+
+ +
+
+
+
+
+
+

apiV1TasksVerifyPost

+

2. Antwort auf eine Aufgabe überprüfen

+
+
+
+

+

+

+
+
/api/v1/tasks/verify
+

+

Usage and SDK Samples

+

+ + +
+
+
curl -X POST\
+ -H "Authorization: Bearer [[accessToken]]"\
+-H "Accept: application/json"\
+-H "Content-Type: application/json"\
+"//api/v1/tasks/verify"
+
+
+
import io.swagger.client.*;
+import io.swagger.client.auth.*;
+import io.swagger.client.model.*;
+import io.swagger.client.api.DefaultApi;
+
+import java.io.File;
+import java.util.*;
+
+public class DefaultApiExample {
+
+    public static void main(String[] args) {
+        ApiClient defaultClient = Configuration.getDefaultApiClient();
+
+
+        DefaultApi apiInstance = new DefaultApi();
+        TaskVerifyRequest body = ; // TaskVerifyRequest | 
+        try {
+            TaskVerifyResponse result = apiInstance.apiV1TasksVerifyPost(body);
+            System.out.println(result);
+        } catch (ApiException e) {
+            System.err.println("Exception when calling DefaultApi#apiV1TasksVerifyPost");
+            e.printStackTrace();
+        }
+    }
+}
+
+ +
+
import io.swagger.client.api.DefaultApi;
+
+public class DefaultApiExample {
+
+    public static void main(String[] args) {
+        DefaultApi apiInstance = new DefaultApi();
+        TaskVerifyRequest body = ; // TaskVerifyRequest | 
+        try {
+            TaskVerifyResponse result = apiInstance.apiV1TasksVerifyPost(body);
+            System.out.println(result);
+        } catch (ApiException e) {
+            System.err.println("Exception when calling DefaultApi#apiV1TasksVerifyPost");
+            e.printStackTrace();
+        }
+    }
+}
+
+ +
+
Configuration *apiConfig = [Configuration sharedConfig];
+TaskVerifyRequest *body = ; //  (optional)
+
+DefaultApi *apiInstance = [[DefaultApi alloc] init];
+
+// 2. Antwort auf eine Aufgabe überprüfen
+[apiInstance apiV1TasksVerifyPostWith:body
+              completionHandler: ^(TaskVerifyResponse output, NSError* error) {
+                            if (output) {
+                                NSLog(@"%@", output);
+                            }
+                            if (error) {
+                                NSLog(@"Error: %@", error);
+                            }
+                        }];
+
+
+ +
+
var UntitledApi = require('untitled_api');
+var defaultClient = UntitledApi.ApiClient.instance;
+
+
+var api = new UntitledApi.DefaultApi()
+var opts = { 
+  'body':  // {{TaskVerifyRequest}} 
+};
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully. Returned data: ' + data);
+  }
+};
+api.apiV1TasksVerifyPost(opts, callback);
+
+
+ + +
+
using System;
+using System.Diagnostics;
+using IO.Swagger.Api;
+using IO.Swagger.Client;
+using IO.Swagger.Model;
+
+namespace Example
+{
+    public class apiV1TasksVerifyPostExample
+    {
+        public void main()
+        {
+
+
+            var apiInstance = new DefaultApi();
+            var body = new TaskVerifyRequest(); // TaskVerifyRequest |  (optional) 
+
+            try
+            {
+                // 2. Antwort auf eine Aufgabe überprüfen
+                TaskVerifyResponse result = apiInstance.apiV1TasksVerifyPost(body);
+                Debug.WriteLine(result);
+            }
+            catch (Exception e)
+            {
+                Debug.Print("Exception when calling DefaultApi.apiV1TasksVerifyPost: " + e.Message );
+            }
+        }
+    }
+}
+
+
+ +
+
<?php
+require_once(__DIR__ . '/vendor/autoload.php');
+
+
+$api_instance = new Swagger\Client\ApiDefaultApi();
+$body = ; // TaskVerifyRequest | 
+
+try {
+    $result = $api_instance->apiV1TasksVerifyPost($body);
+    print_r($result);
+} catch (Exception $e) {
+    echo 'Exception when calling DefaultApi->apiV1TasksVerifyPost: ', $e->getMessage(), PHP_EOL;
+}
+?>
+
+ +
+
use Data::Dumper;
+use WWW::SwaggerClient::Configuration;
+use WWW::SwaggerClient::DefaultApi;
+
+
+my $api_instance = WWW::SwaggerClient::DefaultApi->new();
+my $body = WWW::SwaggerClient::Object::TaskVerifyRequest->new(); # TaskVerifyRequest | 
+
+eval { 
+    my $result = $api_instance->apiV1TasksVerifyPost(body => $body);
+    print Dumper($result);
+};
+if ($@) {
+    warn "Exception when calling DefaultApi->apiV1TasksVerifyPost: $@\n";
+}
+
+ +
+
from __future__ import print_statement
+import time
+import swagger_client
+from swagger_client.rest import ApiException
+from pprint import pprint
+
+
+# create an instance of the API class
+api_instance = swagger_client.DefaultApi()
+body =  # TaskVerifyRequest |  (optional)
+
+try: 
+    # 2. Antwort auf eine Aufgabe überprüfen
+    api_response = api_instance.api_v1_tasks_verify_post(body=body)
+    pprint(api_response)
+except ApiException as e:
+    print("Exception when calling DefaultApi->apiV1TasksVerifyPost: %s\n" % e)
+
+
+ +

Parameters

+ + + +
Body parameters
+ + + + + + + + +
NameDescription
body + + + +
+
+ + + +

Responses

+

Status: 401 -

+ + + +
+
+
+ +
+ +
+
+ +

Status: 200 -

+ + + +
+
+
+ +
+ +
+
+ +
+
+
+
+
+ +
+
+
+ + + + + + + + + diff --git a/src/main/kotlin/com/oliver/kidio/backend/ingestion/H5PIngestionCli.kt b/src/main/kotlin/com/oliver/kidio/backend/ingestion/H5PIngestionCli.kt index bcd4ed6..6ed6b2b 100644 --- a/src/main/kotlin/com/oliver/kidio/backend/ingestion/H5PIngestionCli.kt +++ b/src/main/kotlin/com/oliver/kidio/backend/ingestion/H5PIngestionCli.kt @@ -22,22 +22,17 @@ object H5PIngestionCli { ): Int = runBlocking { var importedCount = 0 - val items = client.getCuratedOerItems(subject = subject, limit = limit) + val items = client.fetchLiveOerItems(subject = subject, limit = limit) for (item in items) { - var parsed: ParsedH5PTask? = null + var parsedList = emptyList() - // 1. Try downloading H5P archive if reachable - val h5pBytes = client.downloadH5P(item.downloadUrl) - if (h5pBytes != null) { - parsed = H5PParser.parseH5PZip(ByteArrayInputStream(h5pBytes), item.id, item.downloadUrl) - } - - // 2. Fallback to raw content.json if remote download is not available - if (parsed == null && item.rawJsonContent != null) { - parsed = - H5PParser.parseContentJson( + // 1. Try parsing JSON content directly (fast, no ZIP decompression needed) + if (item.rawJsonContent != null) { + parsedList = + H5PParser.parseAllTasks( contentJson = item.rawJsonContent, + library = item.library ?: "H5P.MultiChoice", taskId = item.id, title = item.title, license = item.license, @@ -45,7 +40,18 @@ object H5PIngestionCli { ) } - if (parsed != null) { + // 2. Fallback to downloading .h5p ZIP archive if remote archive is specified + if (parsedList.isEmpty() && item.downloadUrl.endsWith(".h5p", ignoreCase = true)) { + val h5pBytes = client.downloadH5P(item.downloadUrl) + if (h5pBytes != null) { + val single = H5PParser.parseH5PZip(ByteArrayInputStream(h5pBytes), item.id, item.downloadUrl) + if (single != null) { + parsedList = listOf(single) + } + } + } + + for (parsed in parsedList) { val (minAge, maxAge) = ZumApiClient.mapGradeToAgeRange(item.grade) val task = ImportedTask( @@ -66,6 +72,9 @@ object H5PIngestionCli { val success = repository.upsertTask(task) if (success) { importedCount++ + val shortQ = task.question.take(30) + val ageRange = "${task.minAge}-${task.maxAge}" + println(" -> [Importiert] ${task.id} (${task.subject}, $ageRange): \"$shortQ...\"") } } } diff --git a/src/main/kotlin/com/oliver/kidio/backend/ingestion/H5PParser.kt b/src/main/kotlin/com/oliver/kidio/backend/ingestion/H5PParser.kt index dbc58a5..32f1a4a 100644 --- a/src/main/kotlin/com/oliver/kidio/backend/ingestion/H5PParser.kt +++ b/src/main/kotlin/com/oliver/kidio/backend/ingestion/H5PParser.kt @@ -128,6 +128,60 @@ object H5PParser { return parseMultiChoice(element, taskId, title, library, license, sourceUrl) } + /** + * Parses one or multiple tasks from content.json (supports MultiChoice, TrueFalse, and QuestionSet). + */ + fun parseAllTasks( + contentJson: String, + library: String = "H5P.MultiChoice", + taskId: String = "task-1", + title: String = "H5P Task", + license: String = "CC BY-SA 4.0", + sourceUrl: String? = null, + ): List { + val element = + try { + json.parseToJsonElement(contentJson).jsonObject + } catch (e: Exception) { + return emptyList() + } + + if (library.contains("QuestionSet", ignoreCase = true) && element.containsKey("questions")) { + val questionsArray = element["questions"]?.jsonArray ?: return emptyList() + val results = mutableListOf() + + for ((idx, qElement) in questionsArray.withIndex()) { + val qObj = qElement.jsonObject + val subLib = qObj["library"]?.jsonPrimitive?.contentOrNull ?: "H5P.MultiChoice" + val subParams = qObj["params"]?.jsonObject ?: continue + val subId = "$taskId-q${idx + 1}" + + val isTrueFalse = + subLib.contains("TrueFalse", ignoreCase = true) || + (subParams.containsKey("correct") && !subParams.containsKey("answers")) + val isMultiChoice = + subLib.contains("MultiChoice", ignoreCase = true) || subParams.containsKey("answers") + + val parsedSub = + if (isTrueFalse) { + parseTrueFalse(subParams, subId, "$title #${idx + 1}", subLib, license, sourceUrl) + } else if (isMultiChoice) { + parseMultiChoice(subParams, subId, "$title #${idx + 1}", subLib, license, sourceUrl) + } else { + null + } + + if (parsedSub != null) { + results.add(parsedSub) + } + } + return results + } + + val single = parseContentJson(contentJson, library, taskId, title, license, sourceUrl) + return if (single != null) listOf(single) else emptyList() + } + private fun parseMultiChoice( element: JsonObject, taskId: String, @@ -136,7 +190,10 @@ object H5PParser { license: String, sourceUrl: String?, ): ParsedH5PTask? { - val questionRaw = element["question"]?.jsonPrimitive?.contentOrNull ?: return null + val questionRaw = + element["question"]?.jsonPrimitive?.contentOrNull + ?: element["text"]?.jsonPrimitive?.contentOrNull + ?: return null val questionClean = stripHtml(questionRaw) if (questionClean.isBlank()) return null @@ -181,7 +238,10 @@ object H5PParser { license: String, sourceUrl: String?, ): ParsedH5PTask? { - val questionRaw = element["question"]?.jsonPrimitive?.contentOrNull ?: return null + val questionRaw = + element["question"]?.jsonPrimitive?.contentOrNull + ?: element["text"]?.jsonPrimitive?.contentOrNull + ?: return null val questionClean = stripHtml(questionRaw) if (questionClean.isBlank()) return null diff --git a/src/main/kotlin/com/oliver/kidio/backend/ingestion/ZumApiClient.kt b/src/main/kotlin/com/oliver/kidio/backend/ingestion/ZumApiClient.kt index 795b546..89315a9 100644 --- a/src/main/kotlin/com/oliver/kidio/backend/ingestion/ZumApiClient.kt +++ b/src/main/kotlin/com/oliver/kidio/backend/ingestion/ZumApiClient.kt @@ -1,6 +1,8 @@ package com.oliver.kidio.backend.ingestion +import kotlinx.serialization.json.* import java.net.URI +import java.net.URLEncoder import java.net.http.HttpClient import java.net.http.HttpRequest import java.net.http.HttpResponse @@ -13,6 +15,7 @@ data class ZumOerItem( val grade: Int? = null, val downloadUrl: String, val license: String = "CC BY-SA 4.0", + val library: String? = null, val rawJsonContent: String? = null, ) @@ -23,17 +26,28 @@ class ZumApiClient( .followRedirects(HttpClient.Redirect.NORMAL) .build(), ) { + private val json = + Json { + ignoreUnknownKeys = true + isLenient = true + } + companion object { fun mapSubject(raw: String): String { val lower = raw.trim().lowercase() return when { lower.contains("mathe") -> "Mathematik" lower.contains("deutsch") || lower.contains("german") -> "Deutsch" - lower.contains("sach") || lower.contains("hsu") || lower.contains("natur") -> "Sachunterricht" + lower.contains("sach") || lower.contains("hsu") || lower.contains("natur") || lower.contains("heimat") -> "Sachunterricht" lower.contains("englisch") || lower.contains("english") -> "Englisch" lower.contains("bio") -> "Biologie" lower.contains("geo") || lower.contains("erdkunde") -> "Geographie" lower.contains("gesch") -> "Geschichte" + lower.contains("chemie") -> "Chemie" + lower.contains("physik") -> "Physik" + lower.contains("musik") -> "Musik" + lower.contains("kunst") -> "Kunst" + lower.contains("informatik") -> "Informatik" else -> raw.trim().replaceFirstChar { if (it.isLowerCase()) it.titlecase() else it.toString() } } } @@ -48,6 +62,9 @@ class ZumApiClient( 6 -> 11 to 12 7 -> 12 to 13 8 -> 13 to 14 + 9 -> 14 to 15 + 10 -> 15 to 16 + 11, 12, 13 -> 16 to 18 else -> 6 to 12 } } @@ -62,7 +79,7 @@ class ZumApiClient( HttpRequest.newBuilder() .uri(URI.create(downloadUrl)) .timeout(Duration.ofSeconds(15)) - .header("User-Agent", "Kidio-OER-Ingest/1.0 (Educational Non-Profit)") + .header("User-Agent", "Mozilla/5.0 (compatible; KidioBot/1.0; +https://kidio.oliver.com)") .GET() .build() @@ -78,6 +95,216 @@ class ZumApiClient( } } + /** + * Fetches live OER items from apps.zum.de via search and Drupal settings extraction. + * Falls back to curated items if remote catalog is unreachable or returns 0 matching interactive items. + */ + fun fetchLiveOerItems( + subject: String? = null, + limit: Int = 50, + maxPages: Int = 5, + ): List { + val results = mutableListOf() + val seenAppIds = mutableSetOf() + + println("[ZUM-Apps Live] Starte Live-Abfrage auf apps.zum.de (Fach: ${subject ?: "Alle Fächer"}, Limit: $limit)...") + + for (page in 0 until maxPages) { + if (results.size >= limit) break + + val searchUrl = + if (subject.isNullOrBlank()) { + "https://apps.zum.de/apps?page=$page" + } else { + val encoded = URLEncoder.encode(subject, "UTF-8") + "https://apps.zum.de/apps?keys=$encoded&page=$page" + } + + val html = fetchString(searchUrl) + if (html == null) { + println("[ZUM-Apps Live] Warnung: Seite $page konnte nicht geladen werden ($searchUrl)") + continue + } + + val appIds = + Regex("""href=["']/apps/(\d+)["']""") + .findAll(html) + .map { it.groupValues[1] } + .distinct() + .filter { it !in seenAppIds } + .toList() + + if (appIds.isEmpty()) { + println("[ZUM-Apps Live] Keine weiteren Apps auf Seite $page gefunden.") + break + } + + for (appId in appIds) { + if (results.size >= limit) break + seenAppIds.add(appId) + + val item = fetchAppDetails(appId, subject) + if (item != null) { + results.add(item) + println("[ZUM-Apps Live] App #$appId erfasst: \"${item.title}\" (${item.library ?: "H5P"}) [Fach: ${item.subject}]") + } + } + } + + if (results.isEmpty()) { + println("[ZUM-Apps Live] Keine Live-Inhalte gefunden oder Seite nicht erreichbar. Nutze kuratierte OER-Fallback-Daten.") + return getCuratedOerItems(subject = subject, limit = limit) + } + + println("[ZUM-Apps Live] ${results.size} interaktive Aufgaben erfolgreich von apps.zum.de geladen.") + return results + } + + private fun fetchAppDetails( + appId: String, + fallbackSubject: String?, + ): ZumOerItem? { + val appUrl = "https://apps.zum.de/apps/$appId" + val html = fetchString(appUrl) ?: return null + + val settingsMatch = Regex("""data-drupal-selector="drupal-settings-json">([^<]+)<""").find(html) ?: return null + val jsonStr = settingsMatch.groupValues[1] + + val drupalSettings = + try { + json.parseToJsonElement(jsonStr).jsonObject + } catch (_: Exception) { + return null + } + + val h5pContents = + drupalSettings["h5p"]?.jsonObject + ?.get("H5PIntegration")?.jsonObject + ?.get("contents")?.jsonObject + ?: return null + + val contentObj = + h5pContents["cid-$appId"]?.jsonObject + ?: h5pContents.values.firstOrNull()?.jsonObject + ?: return null + + val library = contentObj["library"]?.jsonPrimitive?.contentOrNull ?: "" + if (!library.contains("MultiChoice", ignoreCase = true) && + !library.contains("TrueFalse", ignoreCase = true) && + !library.contains("QuestionSet", ignoreCase = true) + ) { + return null + } + + val jsonContent = contentObj["jsonContent"]?.jsonPrimitive?.contentOrNull ?: return null + val metadata = contentObj["metadata"]?.jsonObject + val title = + metadata?.get("title")?.jsonPrimitive?.contentOrNull + ?: Regex("""(.*?)(?:\|.*)?""").find(html)?.groupValues?.get(1)?.trim() + ?: "ZUM App #$appId" + + val rawLicense = metadata?.get("license")?.jsonPrimitive?.contentOrNull + val license = + when { + rawLicense == "U" || rawLicense == null || rawLicense.isBlank() -> "CC BY-SA 4.0" + rawLicense.contains("CC", ignoreCase = true) -> rawLicense + else -> "CC BY-SA 4.0 ($rawLicense)" + } + + val exportUrl = contentObj["exportUrl"]?.jsonPrimitive?.contentOrNull ?: appUrl + + val tags = + Regex("""href="[^"]*(?:taxonomy|fach|tags|schulstufe)[^"]*"[^>]*>([^<]+)<""") + .findAll(html) + .map { it.groupValues[1].trim() } + .filter { it.isNotBlank() } + .toList() + + val subject = inferSubject(title, tags, fallbackSubject) + val grade = inferGrade(title, tags) + + return ZumOerItem( + id = "zum-$appId", + title = title, + subject = subject, + grade = grade, + downloadUrl = exportUrl, + license = license, + library = library, + rawJsonContent = jsonContent, + ) + } + + private fun inferSubject( + title: String, + tags: List, + fallbackSubject: String?, + ): String { + for (tag in tags) { + val mapped = mapSubject(tag) + if (mapped != tag || + tag.equals("Mathematik", ignoreCase = true) || + tag.equals("Deutsch", ignoreCase = true) || + tag.equals("Biologie", ignoreCase = true) || + tag.equals("Englisch", ignoreCase = true) + ) { + return mapped + } + } + if (!fallbackSubject.isNullOrBlank()) { + return mapSubject(fallbackSubject) + } + return mapSubject(title) + } + + private fun inferGrade( + title: String, + tags: List, + ): Int? { + val combined = (tags + title).joinToString(" ") + val gradeMatch = Regex("""\b(\d+)\.\s*(?:Klasse|Schuljahr)\b""", RegexOption.IGNORE_CASE).find(combined) + if (gradeMatch != null) { + return gradeMatch.groupValues[1].toIntOrNull() + } + if (combined.contains("Primarstufe", ignoreCase = true) || combined.contains("Grundschule", ignoreCase = true)) { + return 3 + } + if (combined.contains("Sekundarstufe I", ignoreCase = true) || combined.contains("Sek I", ignoreCase = true)) { + return 6 + } + val isSek2 = + combined.contains("Sekundarstufe II", ignoreCase = true) || + combined.contains("Gymnasium", ignoreCase = true) || + combined.contains("Abitur", ignoreCase = true) + if (isSek2) { + return 10 + } + return null + } + + private fun fetchString(url: String): String? { + return try { + val request = + HttpRequest.newBuilder() + .uri(URI.create(url)) + .timeout(Duration.ofSeconds(12)) + .header("User-Agent", "Mozilla/5.0 (compatible; KidioBot/1.0; +https://kidio.oliver.com)") + .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") + .header("Accept-Language", "de-DE,de;q=0.9,en;q=0.8") + .GET() + .build() + + val response = httpClient.send(request, HttpResponse.BodyHandlers.ofString(Charsets.UTF_8)) + if (response.statusCode() == 200) { + response.body() + } else { + null + } + } catch (e: Exception) { + null + } + } + /** * Returns curated ZUM/OER sample metadata items, filterable by subject. */ diff --git a/src/main/kotlin/com/oliver/kidio/backend/plugins/Routing.kt b/src/main/kotlin/com/oliver/kidio/backend/plugins/Routing.kt index 6b51fcd..108ec42 100644 --- a/src/main/kotlin/com/oliver/kidio/backend/plugins/Routing.kt +++ b/src/main/kotlin/com/oliver/kidio/backend/plugins/Routing.kt @@ -10,6 +10,7 @@ import io.ktor.server.auth.principal import io.ktor.server.request.* import io.ktor.server.response.* import io.ktor.server.routing.* +import io.ktor.server.plugins.openapi.* import org.mindrot.jbcrypt.BCrypt import java.util.UUID @@ -18,6 +19,8 @@ fun Application.configureRouting( jwtService: JwtService, ) { routing { + openAPI(path = "openapi") + post("/api/v1/auth/register") { val registerRequest = call.receive() if (registerRequest.email.isBlank() || registerRequest.passwordPlain.isBlank()) { diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 875ae05..cf8b828 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -1,6 +1,6 @@ ktor: deployment: - port: 8080 + port: 8081 application: modules: - MainKt.module diff --git a/src/test/kotlin/H5PParserTest.kt b/src/test/kotlin/H5PParserTest.kt index 02d31b9..1434094 100644 --- a/src/test/kotlin/H5PParserTest.kt +++ b/src/test/kotlin/H5PParserTest.kt @@ -109,6 +109,47 @@ class H5PParserTest { assertEquals("CC BY-SA 4.0", parsed.license) } + @Test + fun `test parse QuestionSet with multiple questions`() { + val json = + """ + { + "questions": [ + { + "library": "H5P.MultiChoice 1.16", + "params": { + "question": "

Wie viel ist 5 + 5?

", + "answers": [ + {"text": "10", "correct": true}, + {"text": "11", "correct": false} + ] + } + }, + { + "library": "H5P.TrueFalse 1.8", + "params": { + "question": "

Wasser kocht bei 100 Grad Celsius.

", + "correct": true + } + } + ] + } + """.trimIndent() + + val parsedList = H5PParser.parseAllTasks(json, library = "H5P.QuestionSet", taskId = "qs-1", title = "Mini Quiz") + assertEquals(2, parsedList.size) + + val q1 = parsedList[0] + assertEquals("qs-1-q1", q1.id) + assertEquals("Wie viel ist 5 + 5?", q1.question) + assertEquals("10", q1.correctAnswer) + + val q2 = parsedList[1] + assertEquals("qs-1-q2", q2.id) + assertEquals("Wasser kocht bei 100 Grad Celsius.", q2.question) + assertEquals("Wahr", q2.correctAnswer) + } + @Test fun `test taxonomy and grade mapping`() { assertEquals("Mathematik", ZumApiClient.mapSubject("mathe"))