{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.model.Cause$UserIdCause",
          "shortDescription" : "Started by user Pooja Ravi",
          "userId" : "pooja",
          "userName" : "Pooja Ravi"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/curriculum-mapping" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 3,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "1663bc90faa7c35a818122706cc5f32163d2f303",
            "branch" : [
              {
                "SHA1" : "1663bc90faa7c35a818122706cc5f32163d2f303",
                "name" : "refs/remotes/origin/curriculum-mapping"
              }
            ]
          },
          "revision" : {
            "SHA1" : "1663bc90faa7c35a818122706cc5f32163d2f303",
            "branch" : [
              {
                "SHA1" : "1663bc90faa7c35a818122706cc5f32163d2f303",
                "name" : "refs/remotes/origin/curriculum-mapping"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "1663bc90faa7c35a818122706cc5f32163d2f303",
        "branch" : [
          {
            "SHA1" : "1663bc90faa7c35a818122706cc5f32163d2f303",
            "name" : "refs/remotes/origin/curriculum-mapping"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/UstadMobile/Respect.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    {
      "displayPath" : "respect-cli.zip",
      "fileName" : "respect-cli.zip",
      "relativePath" : "respect-cli/build/distributions/respect-cli.zip"
    }
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#3",
  "duration" : 189841,
  "estimatedDuration" : 120275,
  "executor" : None,
  "fullDisplayName" : "RESPECT-curriculum-mapping #3",
  "id" : "3",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 3,
  "queueId" : 3363,
  "result" : "SUCCESS",
  "timestamp" : 1753940766730,
  "url" : "https://devserver3.ustadmobile.com/jenkins/view/all/job/RESPECT-curriculum-mapping/3/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/images/RespectImage.kt",
          "composeApp/src/desktopMain/resources/img/spix_logo.png",
          "composeApp/src/commonMain/kotlin/world/respect/navigation/NavCommand.kt",
          "composeApp/src/desktopMain/resources/img/respect_logo.png",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppIcon.kt",
          "composeApp/src/commonMain/kotlin/world/respect/navigation/RespectComposeNavController.kt",
          "composeApp/src/desktopMain/kotlin/world/respect/images/RespectImage.desktop.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/acknowledgement/AcknowledgementScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/acknowledgement/AcknowledgementViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/splash/SplashScreen.kt",
          "composeApp/src/androidMain/res/drawable/spix_logo.webp",
          "composeApp/src/androidMain/res/drawable/respect_logo.webp",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt",
          "composeApp/src/commonMain/composeResources/values/strings.xml",
          "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/splash/SplashViewModel.kt",
          "composeApp/src/desktopMain/kotlin/world/respect/app/app/AppIcon.desktop.kt",
          "composeApp/src/androidMain/kotlin/world/respect/app/app/AppIcon.android.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/androidMain/kotlin/world/respect/images/RespectImage.android.kt"
        ],
        "commitId" : "9e0e3401a3032021f5be76261ae2ced59c2162ee",
        "timestamp" : 1752128147000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "splash and Acknowledgement screen added\u000a",
        "date" : "2025-07-10 11:45:47 +0530",
        "id" : "9e0e3401a3032021f5be76261ae2ced59c2162ee",
        "msg" : "splash and Acknowledgement screen added",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/navigation/RespectComposeNavController.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/androidMain/res/drawable/spix_logo.webp"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/splash/SplashScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/images/RespectImage.android.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/acknowledgement/AcknowledgementViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppIcon.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/desktopMain/resources/img/respect_logo.png"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/desktopMain/resources/img/spix_logo.png"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/androidMain/res/drawable/respect_logo.webp"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/navigation/NavCommand.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/acknowledgement/AcknowledgementScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/app/app/AppIcon.android.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/splash/SplashViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/images/RespectImage.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/desktopMain/kotlin/world/respect/images/RespectImage.desktop.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/desktopMain/kotlin/world/respect/app/app/AppIcon.desktop.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-credentials/src/main/java/world/respect/credentials/passkey/model/PublicKeyCredentialRpEntity.kt",
          "respect-credentials/src/main/AndroidManifest.xml",
          "respect-credentials/proguard-rules.pro",
          "respect-credentials/src/main/java/world/respect/credentials/passkey/model/PublicKeyCredentialParameters.kt",
          "respect-credentials/src/main/java/world/respect/credentials/passkey/model/PublicKeyCredentialDescriptorJSON.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/manageuser/JoinClazzWithCodeViewModel.kt",
          "respect-credentials/src/main/java/world/respect/credentials/passkey/model/AuthenticationExtensionsClientOutputsJSON.kt",
          "respect-credentials/src/main/java/world/respect/credentials/passkey/model/PublicKeyCredentialUserEntityJSON.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/manageuser/JoinClazzWithCodeScreen.kt",
          "respect-credentials/src/main/java/world/respect/credentials/passkey/model/ClientDataJSON.kt",
          "respect-credentials/src/main/java/world/respect/credentials/passkey/model/AuthenticatorAssertionResponseJSON.kt",
          "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/RandomString.kt",
          "respect-credentials/.gitignore",
          "settings.gradle.kts",
          "respect-credentials/build.gradle.kts",
          "respect-credentials/src/main/java/world/respect/credentials/passkey/model/AuthenticationExtensionsPRFOutputsJSON.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt",
          "composeApp/src/commonMain/composeResources/values/strings.xml",
          "respect-credentials/src/main/java/world/respect/credentials/passkey/model/PublicKeyCredentialRequestOptionsJSON.kt",
          "respect-credentials/src/main/java/world/respect/credentials/passkey/model/AuthenticationResponseJSON.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-credentials/src/main/java/world/respect/credentials/passkey/model/PublicKeyCredentialCreationOptionsJSON.kt",
          "respect-credentials/src/main/java/world/respect/credentials/passkey/model/AuthenticatorSelectionCriteria.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
        ],
        "commitId" : "ad6d2af67332afe5ccc1f7143e4d3e76191fa525",
        "timestamp" : 1752152112000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "respect credential module added\u000a",
        "date" : "2025-07-10 18:25:12 +0530",
        "id" : "ad6d2af67332afe5ccc1f7143e4d3e76191fa525",
        "msg" : "respect credential module added",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-credentials/src/main/java/world/respect/credentials/passkey/model/AuthenticationResponseJSON.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-credentials/src/main/java/world/respect/credentials/passkey/model/AuthenticatorAssertionResponseJSON.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-credentials/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-credentials/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-credentials/src/main/java/world/respect/credentials/passkey/model/AuthenticationExtensionsPRFOutputsJSON.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-credentials/src/main/java/world/respect/credentials/passkey/model/PublicKeyCredentialCreationOptionsJSON.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-credentials/src/main/java/world/respect/credentials/passkey/model/PublicKeyCredentialDescriptorJSON.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-credentials/src/main/java/world/respect/credentials/passkey/model/PublicKeyCredentialParameters.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-credentials/src/main/java/world/respect/credentials/passkey/model/PublicKeyCredentialRequestOptionsJSON.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/manageuser/JoinClazzWithCodeViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-credentials/src/main/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/RandomString.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/manageuser/JoinClazzWithCodeScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-credentials/src/main/java/world/respect/credentials/passkey/model/AuthenticationExtensionsClientOutputsJSON.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-credentials/src/main/java/world/respect/credentials/passkey/model/AuthenticatorSelectionCriteria.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-credentials/src/main/java/world/respect/credentials/passkey/model/PublicKeyCredentialUserEntityJSON.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-credentials/proguard-rules.pro"
          },
          {
            "editType" : "add",
            "file" : "respect-credentials/src/main/java/world/respect/credentials/passkey/model/PublicKeyCredentialRpEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-credentials/src/main/java/world/respect/credentials/passkey/model/ClientDataJSON.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt",
          "composeApp/src/commonMain/composeResources/values/strings.xml",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/manageuser/login/LoginViewModel.kt",
          "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/splash/SplashViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/manageuser/login/LoginScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/manageuser/JoinClazzWithCodeViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/splash/SplashScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/components/ModifierExt.kt"
        ],
        "commitId" : "d3f2d443817c873999747c06566535403039ab53",
        "timestamp" : 1752558568000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "added login screen\u000a",
        "date" : "2025-07-15 11:19:28 +0530",
        "id" : "d3f2d443817c873999747c06566535403039ab53",
        "msg" : "added login screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/manageuser/JoinClazzWithCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/manageuser/login/LoginViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/splash/SplashScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/components/ModifierExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/manageuser/login/LoginScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/splash/SplashViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/JoinClazzWithCodeViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/images/RespectImage.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/app/AppIcon.android.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/manageuser/login/LoginScreen.kt",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/images/RespectImage.desktop.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/manageuser/JoinClazzWithCodeViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/acknowledgement/AcknowledgementScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/manageuser/JoinClazzWithCodeScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/components/ModifierExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/images/RespectImage.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavCommand.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "composeApp/src/androidMain/kotlin/world/respect/app/app/AppIcon.android.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/login/LoginScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/JoinClazzWithCodeScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/ModifierExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/manageuser/login/LoginViewModel.kt",
          "composeApp/src/desktopMain/kotlin/world/respect/images/RespectImage.desktop.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/acknowledgement/AcknowledgementScreen.kt",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/app/app/AppIcon.desktop.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/acknowledgement/AcknowledgementViewModel.kt",
          "composeApp/src/desktopMain/kotlin/world/respect/app/app/AppIcon.desktop.kt",
          "composeApp/src/androidMain/kotlin/world/respect/images/RespectImage.android.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/images/RespectImage.android.kt"
        ],
        "commitId" : "cbb3589d734b9f7b7d5ac2e6f49671f963169a33",
        "timestamp" : 1752565661000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "merged main branch\u000a",
        "date" : "2025-07-15 13:17:41 +0530",
        "id" : "cbb3589d734b9f7b7d5ac2e6f49671f963169a33",
        "msg" : "merged main branch",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/manageuser/JoinClazzWithCodeViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/manageuser/login/LoginScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/desktopMain/kotlin/world/respect/images/RespectImage.desktop.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/ModifierExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/app/AppIcon.desktop.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/images/RespectImage.android.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/manageuser/JoinClazzWithCodeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/acknowledgement/AcknowledgementScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/components/ModifierExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/JoinClazzWithCodeScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/JoinClazzWithCodeViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/images/RespectImage.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/acknowledgement/AcknowledgementScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/images/RespectImage.desktop.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/images/RespectImage.android.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavCommand.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/app/app/AppIcon.android.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/images/RespectImage.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/desktopMain/kotlin/world/respect/app/app/AppIcon.desktop.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/manageuser/login/LoginViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/app/AppIcon.android.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/login/LoginScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/acknowledgement/AcknowledgementViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MergedHeaders.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/StringResponse.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HttpHeadersImpl.kt",
          "respect-lib-ihttp-core/build.gradle.kts",
          "respect-lib-ihttp-iostreams/src/commonMain/kotlin/com/ustadmobile/ihttp/iostreams/ByteArrayExt.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithTextBody.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHeadersBuilder.kt",
          "respect-lib-ihttp-iostreams/.gitignore",
          "respect-lib-ihttp-core/src/jsMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.js.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaderExt.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/IHttpResponse.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/StringExt.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MapHttpHeadersAdapter.kt",
          "respect-lib-ihttp-core/src/androidMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.android.kt",
          "gradle/libs.versions.toml",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequest.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaderImpl.kt",
          "respect-lib-ihttp-core/.gitignore",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeader.kt",
          "respect-lib-ihttp-core/README.md",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/MapExt.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeadersExt.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/BaseHttpRequest.kt",
          "respect-lib-ihttp-core/src/jvmMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.jvm.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaders.kt",
          "respect-lib-ihttp-iostreams/build.gradle.kts",
          "settings.gradle.kts",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/IHeaderExt.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithByteBody.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithFormUrlEncodedData.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/KtorIHeadersAdapter.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HttpHeaderListExt.kt",
          "respect-lib-ihttp-iostreams/README.md",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/directives/DirectivesToMap.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/RequestBuilder.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MappedHttpHeaders.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/ByteArrayResponse.kt"
        ],
        "commitId" : "03770701764956050605ced4788255410fd14ccd",
        "timestamp" : 1752822943000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add lib-ihttp-core and lib-ihttp-iostreams\u000a",
        "date" : "2025-07-18 11:15:43 +0400",
        "id" : "03770701764956050605ced4788255410fd14ccd",
        "msg" : "Add lib-ihttp-core and lib-ihttp-iostreams",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaderImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/MapExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MappedHttpHeaders.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/directives/DirectivesToMap.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-iostreams/README.md"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/jvmMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.jvm.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeadersExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MergedHeaders.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HttpHeadersImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/IHttpResponse.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HttpHeaderListExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MapHttpHeadersAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/RequestBuilder.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithByteBody.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithFormUrlEncodedData.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/ByteArrayResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/KtorIHeadersAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-iostreams/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/README.md"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/StringResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/androidMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.android.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/BaseHttpRequest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-iostreams/src/commonMain/kotlin/com/ustadmobile/ihttp/iostreams/ByteArrayExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/StringExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-iostreams/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/jsMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.js.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithTextBody.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/IHeaderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaders.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHeadersBuilder.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/JoinClazzWithCodeViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/mock/MockSubmitRedeemInviteRequestUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/dateofbirth/DateOfBirthSelector.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/profile/ProfileScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/joinclazzwithcode/JoinClazzWithCodeViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/waitingforapproval/WaitingForApprovalScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/acknowledgement/AcknowledgementScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/mock/MockGetInviteInfoUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/confirmation/ConfirmationScreen.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/login/LoginScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/termsandcondition/TermsAndConditionViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppUiState.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/JoinClazzWithCodeScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/ActionBarButtonUiState.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/termsandcondition/TermsAndConditionScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/SignupViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UstadExposedDropDownMenuField.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectInviteInfo.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/signup/SignupScreen.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/app/dateofbirth/DateOfBirthSelector.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/ProfileType.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/joinclazzwithcode/JoinClazzWithCodeScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/confirmation/ConfirmationViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/ProfileViewModel.kt",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/app/app/dateofbirth/DateOfBirthSelector.desktop.kt"
        ],
        "commitId" : "730174ef0c9dab23103d91788e9d530c7b3e2223",
        "timestamp" : 1752823650000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "added whole signup flow\u000a",
        "date" : "2025-07-18 12:57:30 +0530",
        "id" : "730174ef0c9dab23103d91788e9d530c7b3e2223",
        "msg" : "added whole signup flow",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UstadExposedDropDownMenuField.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/ProfileType.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/waitingforapproval/WaitingForApprovalScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/mock/MockGetInviteInfoUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/confirmation/ConfirmationViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/app/dateofbirth/DateOfBirthSelector.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/mock/MockSubmitRedeemInviteRequestUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/dateofbirth/DateOfBirthSelector.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/profile/ProfileScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/app/dateofbirth/DateOfBirthSelector.desktop.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/confirmation/ConfirmationScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/termsandcondition/TermsAndConditionViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectInviteInfo.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppUiState.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/JoinClazzWithCodeScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/joinclazzwithcode/JoinClazzWithCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/acknowledgement/AcknowledgementScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/ProfileViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/joinclazzwithcode/JoinClazzWithCodeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/login/LoginScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/termsandcondition/TermsAndConditionScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/JoinClazzWithCodeViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/SignupViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/signup/SignupScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/ActionBarButtonUiState.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-ihttp-okhttp/build.gradle.kts",
          "settings.gradle.kts",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/request/HttpRequestOkHttpAdapter.kt",
          "gradle/libs.versions.toml",
          "respect-lib-ihttp-okhttp/.gitignore",
          "respect-lib-ihttp-nanohttpd/build.gradle.kts",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/headers/OkHttpHeadersAdapter.kt",
          "respect-lib-ihttp-okhttp/consumer-rules.pro",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/request/OkHttpRequestAdapter.kt",
          "respect-lib-ihttp-nanohttpd/src/commonMain/kotlin/com/ustadmobile/ihttp/nanohttpd/NanoHttpdRequestAdapter.kt",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/OkHttpResponseAdapter.kt",
          "respect-lib-ihttp-okhttp/proguard-rules.pro",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/headers/IHttpHeadersAsOkHttpHeadersAdapter.kt",
          "respect-lib-ihttp-nanohttpd/.gitignore",
          "respect-lib-ihttp-nanohttpd/src/commonMain/kotlin/com/ustadmobile/ihttp/nanohttpd/NanoHttpdResponseAdapter.kt",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/IHttpResponseOkHttpAdapter.kt",
          "respect-lib-ihttp-okhttp/src/commonMain/AndroidManifest.xml"
        ],
        "commitId" : "0a501d75eaea676ed271dd799ee68c708cc88b5b",
        "timestamp" : 1752824183000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add lib-ihttp-okhttp and lib-ihttp-nanohttpd\u000a",
        "date" : "2025-07-18 11:36:23 +0400",
        "id" : "0a501d75eaea676ed271dd799ee68c708cc88b5b",
        "msg" : "Add lib-ihttp-okhttp and lib-ihttp-nanohttpd",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-nanohttpd/src/commonMain/kotlin/com/ustadmobile/ihttp/nanohttpd/NanoHttpdRequestAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/headers/OkHttpHeadersAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/consumer-rules.pro"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/request/OkHttpRequestAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-nanohttpd/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/proguard-rules.pro"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/headers/IHttpHeadersAsOkHttpHeadersAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-nanohttpd/src/commonMain/kotlin/com/ustadmobile/ihttp/nanohttpd/NanoHttpdResponseAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/OkHttpResponseAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/request/HttpRequestOkHttpAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/IHttpResponseOkHttpAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-nanohttpd/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt"
        ],
        "commitId" : "eda03e044c721f69a49da2b0ddb0aef95783cf6d",
        "timestamp" : 1752830716000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2025-07-18 14:55:16 +0530",
        "id" : "eda03e044c721f69a49da2b0ddb0aef95783cf6d",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/mock/MockGetInviteInfoUseCase.kt"
        ],
        "commitId" : "a3f5b4557edb0e7d09d6c3fa890c177b5f1e2041",
        "timestamp" : 1752831160000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "main merged\u000a",
        "date" : "2025-07-18 15:02:40 +0530",
        "id" : "a3f5b4557edb0e7d09d6c3fa890c177b5f1e2041",
        "msg" : "main merged",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/mock/MockGetInviteInfoUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavCommand.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/RespectComposeNavController.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/dateofbirth/DateOfBirthSelector.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/profile/ProfileScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/ProfileViewModel.kt",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/app/app/dateofbirth/DateOfBirthSelector.desktop.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/GenderToString.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/app/dateofbirth/DateOfBirthSelector.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/ProfileType.kt"
        ],
        "commitId" : "d17739501e175c8f82bda471477558108d4b9294",
        "timestamp" : 1752842226000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2025-07-18 18:07:06 +0530",
        "id" : "d17739501e175c8f82bda471477558108d4b9294",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/app/dateofbirth/DateOfBirthSelector.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/app/dateofbirth/DateOfBirthSelector.desktop.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/GenderToString.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/ProfileViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/ProfileType.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavCommand.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/RespectComposeNavController.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/profile/ProfileScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/dateofbirth/DateOfBirthSelector.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/RequestExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/partial/ContentRange.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NapierLogInit.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryAndLocks.kt",
          "gradle/libs.versions.toml",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NewFileFromResource.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/AddNewEntryTriggerCallback.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashCacheEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/ByteArrayResponse.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ByteBufferExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/DatabaseExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/CouponHeader.kt",
          "respect-lib-cache/src/jvmTest/resources/testfile1.png",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheControlHeader.kt",
          "respect-lib-cache/src/jvmTest/resources/ustadmobile-epub.js",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/ByteArrayExt.kt",
          "respect-lib-cache/README.md",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CachedResponseStatus.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StoreResult.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NeighborCacheEntryDao.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCacheEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpoint.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/partial/RangeRequestNotSatisfiableException.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseValidityChecker.kt",
          "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HeadersBuilderExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/FileMimeTypeHelperImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/logging/NapierLoggingAdapter.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/FileAssert.kt",
          "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/distributed/LifeCycleOwnerDistributedCacheInit.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CachePathsProvider.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ConcurrentSafeMapOf.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePing.kt",
          "respect-lib-cache/.gitignore",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityCheckerImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePong.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/StringResponse.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/date/ParseHttpDate.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CachePaths.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessChecker.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5Digest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/DefaultCacheCompressionFilter.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImplTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryDao.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/InputStreamExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RequestedEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/integrity/Sha256Integrity.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/MimeTypeHelperExt.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/ResourcesDispatcher.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlDirectivesUtil.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/SourceExt.kt",
          "respect-lib-cache/src/jvmTest/resources/childrens-literature.epub",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/RetentionLockDao.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/CacheResponse.kt",
          "respect-lib-ihttp-iostreams/src/commonMain/kotlin/com/ustadmobile/ihttp/iostreams/NullOutputStream.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/io/RangeInputStreamTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NeighborCacheDao.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheNeighborDiscoveryListener.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtable.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/logging/UstadCacheLogger.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt",
          "respect-lib-cache/src/jvmTest/resources/testfile2.png",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheTrimmerTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CompressionType.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StoreProgressListener.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/OutputStreamExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CacheEntryToStore.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/MimeTypeHelper.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt",
          "respect-lib-xxhash/build.gradle.kts",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/RequestedEntryDao.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/ResponseCacheabilityCheckerExt.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpointTest.kt",
          "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/15.json",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/partial/ContentRangeTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StringExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadCacheDb.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpResponseExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/LruMap.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/RangeInputStream.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HttpHeadersExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashEntries.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ClearNeighborsCallback.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpPathResponse.kt",
          "respect-lib-cache/build.gradle.kts",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NewCacheEntryDao.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashEntriesTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NewCacheEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/FileSystemExt.kt",
          "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestJvm.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/FileSystemCommonExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheConstants.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RetentionLock.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/XXStringHasherExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCacheWhatWithIdAndPayload.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePacket.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityCheckerImplTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/composites/NeighborCacheEntryAndNeighborCache.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCache.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HeaderOverrideHttpResponse.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheTrimmer.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/LastModifiedHeader.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CacheStorageCompressionFilter.kt",
          "settings.gradle.kts",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestAndroid.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImpl.kt",
          "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityChecker.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/ValidatedEntry.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheNsdAndroid.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/RequestCacheControlHeader.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/DistributedCacheInterceptor.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadDbDiscoveryListener.kt"
        ],
        "commitId" : "c0b7ef589a0301b8021beac105264f26a2059eec",
        "timestamp" : 1752848578000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress: UstadCache compiles and UstadCacheJvmTest passes.\u000a",
        "date" : "2025-07-18 18:22:58 +0400",
        "id" : "c0b7ef589a0301b8021beac105264f26a2059eec",
        "msg" : "Work in progress: UstadCache compiles and UstadCacheJvmTest passes.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtable.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/FileSystemExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/RequestExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadCacheDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/MimeTypeHelperExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/io/RangeInputStreamTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/CacheResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/StringResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashEntriesTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/ValidatedEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/15.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/DistributedCacheInterceptor.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/InputStreamExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCacheWhatWithIdAndPayload.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CacheStorageCompressionFilter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/RetentionLockDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HttpHeadersExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/partial/RangeRequestNotSatisfiableException.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StringExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpPathResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/resources/testfile1.png"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CachePathsProvider.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NewFileFromResource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessChecker.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashCacheEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ConcurrentSafeMapOf.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ClearNeighborsCallback.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePacket.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseValidityChecker.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NewCacheEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/logging/UstadCacheLogger.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NeighborCacheEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/composites/NeighborCacheEntryAndNeighborCache.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/integrity/Sha256Integrity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5Digest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheTrimmerTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/README.md"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpResponseExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheNsdAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/logging/NapierLoggingAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestJvm.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/LruMap.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheNeighborDiscoveryListener.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/ResourcesDispatcher.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/RangeInputStream.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RequestedEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/FileSystemCommonExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CacheEntryToStore.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/RequestedEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryAndLocks.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/LastModifiedHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/ByteArrayResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CachedResponseStatus.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCache.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/FileAssert.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xxhash/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/date/ParseHttpDate.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HeadersBuilderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/partial/ContentRange.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RetentionLock.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HeaderOverrideHttpResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StoreResult.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/partial/ContentRangeTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CachePaths.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/RequestCacheControlHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePong.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/resources/childrens-literature.epub"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StoreProgressListener.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-iostreams/src/commonMain/kotlin/com/ustadmobile/ihttp/iostreams/NullOutputStream.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NewCacheEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/DefaultCacheCompressionFilter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheTrimmer.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/FileMimeTypeHelperImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NeighborCacheDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/distributed/LifeCycleOwnerDistributedCacheInit.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlDirectivesUtil.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ByteBufferExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashEntries.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/MimeTypeHelper.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCacheEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityChecker.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheControlHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImplTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/DatabaseExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpointTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NapierLogInit.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpoint.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/AddNewEntryTriggerCallback.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadDbDiscoveryListener.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePing.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityCheckerImplTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/XXStringHasherExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/SourceExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CompressionType.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/CouponHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/resources/testfile2.png"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityCheckerImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/OutputStreamExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/ResponseCacheabilityCheckerExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/ByteArrayExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/resources/ustadmobile-epub.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpointTest.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpoint.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheTrimmerTest.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt"
        ],
        "commitId" : "9aa76227bbd32093b6a5e3715b2e6706610337a6",
        "timestamp" : 1752850598000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Convert UstadCache functions to asynchronous (suspended) because Room multiplatform does not support synchronous (blocking) queries.\u000a",
        "date" : "2025-07-18 18:56:38 +0400",
        "id" : "9aa76227bbd32093b6a5e3715b2e6706610337a6",
        "msg" : "Convert UstadCache functions to asynchronous (suspended) because Room multiplatform does not support synchronous (blocking) queries.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheTrimmerTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpoint.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpointTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtable.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt"
        ],
        "commitId" : "a5ec99ea92fae848eccade25b1885030ded7eb15",
        "timestamp" : 1752858327000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix DistributedCacheHashtableIntegrationTest - nested use of runBlocking caused database deadlock.\u000a",
        "date" : "2025-07-18 21:05:27 +0400",
        "id" : "a5ec99ea92fae848eccade25b1885030ded7eb15",
        "msg" : "Fix DistributedCacheHashtableIntegrationTest - nested use of runBlocking caused database deadlock.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtable.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-test-end-to-end/android-maestro/e2e-tests/001_browse_lessons_test.yaml"
        ],
        "commitId" : "d66722fc40d70bec6d9c3b9a44d2ac45d67de776",
        "timestamp" : 1752916787000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "test updated adding login flow\u000a",
        "date" : "2025-07-19 13:19:47 +0400",
        "id" : "d66722fc40d70bec6d9c3b9a44d2ac45d67de776",
        "msg" : "test updated adding login flow",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-test-end-to-end/android-maestro/e2e-tests/001_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-test-end-to-end/test-description/001_browse_lessons_test_description.md"
        ],
        "commitId" : "63e668f5d67d479309692a2f86f9846b6ce242be",
        "timestamp" : 1752917137000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "test description added login flow\u000a",
        "date" : "2025-07-19 13:25:37 +0400",
        "id" : "63e668f5d67d479309692a2f86f9846b6ce242be",
        "msg" : "test description added login flow",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-test-end-to-end/test-description/001_browse_lessons_test_description.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/util/ext/FileExt.kt",
          "respect-lib-shared/build.gradle.kts",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageOptionsUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/GetAndroidSdCardDirUseCase.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/RespectApp.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageOptionsUseCaseAndroid.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/CachePathsProviderAndroid.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/README.md",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/OfflineStorageOption.kt",
          "respect-app-compose/build.gradle.kts",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageSettingUseCase.kt"
        ],
        "commitId" : "09a32636ab97124e3dc85cf3e72c10a1d712d2c5",
        "timestamp" : 1752938308000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update respect-app-compose to use UstadCache for OKHttp and Coil image loading.\u000a",
        "date" : "2025-07-19 19:18:28 +0400",
        "id" : "09a32636ab97124e3dc85cf3e72c10a1d712d2c5",
        "msg" : "Update respect-app-compose to use UstadCache for OKHttp and Coil image loading.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageOptionsUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/OfflineStorageOption.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/GetAndroidSdCardDirUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/util/ext/FileExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/README.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/CachePathsProviderAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/RespectApp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageOptionsUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageSettingUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/webview/OkHttpWebViewClient.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "922736ffdd90390c65f557a40980645c9bbdc90e",
        "timestamp" : 1753000245000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial version of OkHttpWebViewClient\u000a",
        "date" : "2025-07-20 11:30:45 +0300",
        "id" : "922736ffdd90390c65f557a40980645c9bbdc90e",
        "msg" : "Initial version of OkHttpWebViewClient",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/webview/OkHttpWebViewClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/webview/OkHttpWebViewClient.kt"
        ],
        "commitId" : "288113c237c475a7aa081d67bda7ded6f3d885d5",
        "timestamp" : 1753001461000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add try/catch handler to shouldInterceptRequest to return 503 response when OKHttp call throws an exception.\u000a",
        "date" : "2025-07-20 11:51:01 +0300",
        "id" : "288113c237c475a7aa081d67bda7ded6f3d885d5",
        "msg" : "Add try/catch handler to shouldInterceptRequest to return 503 response when OKHttp call throws an exception.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/webview/OkHttpWebViewClient.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/validator/ValidateHttpResponseForUrlUseCase.kt"
        ],
        "commitId" : "d598d91f054ad794d48224fdba0c3838cb8ff05c",
        "timestamp" : 1753012025000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add more detail to error message for did not return 304 validation check.\u000a",
        "date" : "2025-07-20 14:47:05 +0300",
        "id" : "d598d91f054ad794d48224fdba0c3838cb8ff05c",
        "msg" : "Add more detail to error message for did not return 304 validation check.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/validator/ValidateHttpResponseForUrlUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NewCacheEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCacheEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RequestedEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RetentionLock.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCache.kt"
        ],
        "commitId" : "d76b5930895c9c962ab2a9a81183e7084a134acf",
        "timestamp" : 1753012486000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Convert cache lib database entities to being immutable.\u000a",
        "date" : "2025-07-20 14:54:46 +0300",
        "id" : "d76b5930895c9c962ab2a9a81183e7084a134acf",
        "msg" : "Convert cache lib database entities to being immutable.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NewCacheEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RequestedEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RetentionLock.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCacheEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCache.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/OneRosterRosterDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterUserGUIDRef.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterClass.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterEnrollment.kt"
        ],
        "commitId" : "7e62f72c4738091989e20dbac8b957d3cebed20f",
        "timestamp" : 1753089889000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add OneRoster data classes and basic datasource functions for manage user.\u000a",
        "date" : "2025-07-21 12:24:49 +0300",
        "id" : "7e62f72c4738091989e20dbac8b957d3cebed20f",
        "msg" : "Add OneRoster data classes and basic datasource functions for manage user.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/OneRosterRosterDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterEnrollment.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterUserGUIDRef.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterClass.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/DeleteCurriculumUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/ValidateCurriculumUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/curriculum/CurriculumUseCases.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/CurriculumStorage.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/models/Curriculum.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/edit/CurriculumEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/SaveCurriculumUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/strand/StrandUseCases.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/detail/CurriculumDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/GetCurriculumByIdUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/strand/SaveStrandUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/curriculumdetailScreen/CurriculumDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/editstrand/EditStrandScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/GetCurriculaUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/strand/edit/StrandEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/appByCurriculum/AppsByCurriculumScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/curriculum/models/Curriculum.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/EditStrandViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/editStrand/EditStrandScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/appbycurriculum/AppsByCurriculumScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/list/CurriculumListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/strand/GetStrandsByCurriculumIdUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/SaveCurriculumUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/curriculumDetailScreen/CurriculumDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/strand/GetStrandByIdUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/editScreen/CurriculumEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/editscreen/CurriculumEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/strand/StrandStorage.kt"
        ],
        "commitId" : "582663184d9e009ea08cb2fba89f15c62d3fb759",
        "timestamp" : 1753099152000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Refactor: relocated view models to lib-shared and modified domain layer\u000a",
        "date" : "2025-07-21 17:29:12 +0530",
        "id" : "582663184d9e009ea08cb2fba89f15c62d3fb759",
        "msg" : "Refactor: relocated view models to lib-shared and modified domain layer",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/detail/CurriculumDetailViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumEditViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumDetailViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/editStrand/EditStrandScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/strand/edit/StrandEditViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/DeleteCurriculumUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/CurriculumStorage.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/curriculumDetailScreen/CurriculumDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/editScreen/CurriculumEditScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/models/Curriculum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/GetCurriculumByIdUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/strand/StrandStorage.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/appByCurriculum/AppsByCurriculumScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/editscreen/CurriculumEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/edit/CurriculumEditViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/ValidateCurriculumUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/strand/GetStrandsByCurriculumIdUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/EditStrandViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/strand/GetStrandByIdUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/SaveCurriculumUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/strand/SaveStrandUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/list/CurriculumListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/strand/StrandUseCases.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/appbycurriculum/AppsByCurriculumScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/SaveCurriculumUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/GetCurriculaUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/curriculumdetailScreen/CurriculumDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/editstrand/EditStrandScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/curriculum/models/Curriculum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/curriculum/CurriculumUseCases.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/curriculum/CurriculumUseCases.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/strand/StrandUseCases.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/curriculumdetailScreen/CurriculumDetailScreen.kt"
        ],
        "commitId" : "301fe2f96e53c08d3425840a8a6735f143198f42",
        "timestamp" : 1753102768000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Modify the usecases\u000a",
        "date" : "2025-07-21 18:29:28 +0530",
        "id" : "301fe2f96e53c08d3425840a8a6735f143198f42",
        "msg" : "Modify the usecases",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/curriculum/CurriculumUseCases.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/strand/StrandUseCases.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/curriculumdetailScreen/CurriculumDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/SignupViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/Signup/SignUpScreen.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectRedeemInviteRequest.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/profile/ProfileScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/joinclazzwithcode/JoinClazzWithCodeViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/createaccount/CreateAccountScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/signup/SignupScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/ProfileType.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterClassGUIDRef.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/confirmation/ConfirmationViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/ProfileViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/login/LoginScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/GenderToString.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/termsandcondition/TermsAndConditionViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
        ],
        "commitId" : "25e8fc60c199afbb50241567ea29ef0e0577e694",
        "timestamp" : 1753108114000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "pull request changes\u000a",
        "date" : "2025-07-21 19:58:34 +0530",
        "id" : "25e8fc60c199afbb50241567ea29ef0e0577e694",
        "msg" : "pull request changes",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/profile/ProfileScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/Signup/SignUpScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectRedeemInviteRequest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/login/LoginScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/joinclazzwithcode/JoinClazzWithCodeViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/signup/SignupScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/SignupViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/GenderToString.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/createaccount/CreateAccountScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/ProfileViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/termsandcondition/TermsAndConditionViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/ProfileType.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterClassGUIDRef.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/confirmation/ConfirmationViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/CompatibleAppDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectDatabase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/adapters/CompatbileAppAdapter.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/compatibleapps/CompatibleAppDataSourceRepository.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/compatibleapps/CompatibleAppDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/entities/CompatibleAppAddJoin.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/daos/CompatibleAppAddJoinDao.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectDatabase/1.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/daos/CompatibleAppEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/compatibleapps/CompatibleAppsDataSource.kt"
        ],
        "commitId" : "771e35ed5ddb9156311f57ee0a00cee19ac6ceba",
        "timestamp" : 1753123859000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial UI implementation to add/remove from launchpad.\u000a",
        "date" : "2025-07-21 21:50:59 +0300",
        "id" : "771e35ed5ddb9156311f57ee0a00cee19ac6ceba",
        "msg" : "Initial UI implementation to add/remove from launchpad.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectDatabase/1.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/adapters/CompatbileAppAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/daos/CompatibleAppAddJoinDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/CompatibleAppDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/daos/CompatibleAppEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/compatibleapps/CompatibleAppDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/compatibleapps/CompatibleAppsDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/compatibleapps/CompatibleAppDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/entities/CompatibleAppAddJoin.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/editstrand/EditStrandScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/curriculum/CurriculumUseCases.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/strand/edit/StrandEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/strand/StrandUseCases.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/edit/CurriculumEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/editscreen/CurriculumEditScreen.kt"
        ],
        "commitId" : "9e3488986120d7ab6269111e3d6af4cc50855009",
        "timestamp" : 1753162745000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "implement strand domain use cases with mock data layer\u000a",
        "date" : "2025-07-22 11:09:05 +0530",
        "id" : "9e3488986120d7ab6269111e3d6af4cc50855009",
        "msg" : "implement strand domain use cases with mock data layer",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/strand/StrandUseCases.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/curriculum/CurriculumUseCases.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/editscreen/CurriculumEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/curriculum/edit/CurriculumEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/editstrand/EditStrandScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/strand/edit/StrandEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/androidMain/res/xml/file_paths.xml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/RespectImageSelectButton.android.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/Signup/SignUpScreen.kt",
          "respect-app-compose/src/androidMain/AndroidManifest.xml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectImageSelectButton.kt",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/app/components/RespectImageSelectButton.desktop.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/signup/SignUpScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt"
        ],
        "commitId" : "46f19dcd943461606dcd4e29e4ab686456f8b0a5",
        "timestamp" : 1753165073000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "Profile pic added\u000a",
        "date" : "2025-07-22 11:47:53 +0530",
        "id" : "46f19dcd943461606dcd4e29e4ab686456f8b0a5",
        "msg" : "Profile pic added",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/xml/file_paths.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/RespectImageSelectButton.android.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/components/RespectImageSelectButton.desktop.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectImageSelectButton.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/Signup/SignUpScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/signup/SignUpScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
        ],
        "commitId" : "d8fcc7bf278e564b39682c1c196e86118d267133",
        "timestamp" : 1753168639000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Resolved merge conflicts\u000a",
        "date" : "2025-07-22 12:47:19 +0530",
        "id" : "d8fcc7bf278e564b39682c1c196e86118d267133",
        "msg" : "Resolved merge conflicts",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/joinclazzwithcode/JoinClazzWithCodeViewModel.kt"
        ],
        "commitId" : "0e7dd6877cd5d154e96fcff1b24eb5de4694baad",
        "timestamp" : 1753181967000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "back button hidden\u000a",
        "date" : "2025-07-22 16:29:27 +0530",
        "id" : "0e7dd6877cd5d154e96fcff1b24eb5de4694baad",
        "msg" : "back button hidden",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/joinclazzwithcode/JoinClazzWithCodeViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/RespectApp.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/respectaccount/list/RespectAccountListViewModel.kt"
        ],
        "commitId" : "cf87e1d34ee2ad820d59d103225ec0303da2b201",
        "timestamp" : 1753207390000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add initial RespectAccountManager.\u000a",
        "date" : "2025-07-22 21:03:10 +0300",
        "id" : "cf87e1d34ee2ad820d59d103225ec0303da2b201",
        "msg" : "Add initial RespectAccountManager.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/RespectApp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/respectaccount/list/RespectAccountListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectLocalDateField.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/dateofbirth/DateOfBirthSelector.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/IntExt.kt",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/app/app/dateofbirth/DateOfBirthSelector.desktop.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/signup/SignUpScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/app/dateofbirth/DateOfBirthSelector.kt"
        ],
        "commitId" : "d4e9e20327526f7063359077a3c8e3d1fec7f8f0",
        "timestamp" : 1753211060000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add RespectLocalDateField. Remove DateOfBirthSelector.\u000a",
        "date" : "2025-07-22 22:04:20 +0300",
        "id" : "d4e9e20327526f7063359077a3c8e3d1fec7f8f0",
        "msg" : "Add RespectLocalDateField. Remove DateOfBirthSelector.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/IntExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/dateofbirth/DateOfBirthSelector.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/app/dateofbirth/DateOfBirthSelector.desktop.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectLocalDateField.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/signup/SignUpScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/app/dateofbirth/DateOfBirthSelector.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/confirmation/ConfirmationScreen.kt"
        ],
        "commitId" : "4edf0cd206527256d2a9b911ee164ec1369b8733",
        "timestamp" : 1753211420000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "ConfirmationScreen : do not use lazy column.\u000a",
        "date" : "2025-07-22 22:10:20 +0300",
        "id" : "4edf0cd206527256d2a9b911ee164ec1369b8733",
        "msg" : "ConfirmationScreen : do not use lazy column.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/confirmation/ConfirmationScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
        ],
        "commitId" : "74f126900ba72c41e81d6a5f8557f1500792c5e0",
        "timestamp" : 1753247038000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add basic logic in account manager.\u000a",
        "date" : "2025-07-23 08:03:58 +0300",
        "id" : "74f126900ba72c41e81d6a5f8557f1500792c5e0",
        "msg" : "Add basic logic in account manager.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/ext/IntExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectPersonAvatar.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/StringExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/AvatarColorForName.kt"
        ],
        "commitId" : "11740e30f8c82ce7fa37ded5002cd640ffc37563",
        "timestamp" : 1753251306000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add initial avatar component.\u000a",
        "date" : "2025-07-23 09:15:06 +0300",
        "id" : "11740e30f8c82ce7fa37ded5002cd640ffc37563",
        "msg" : "Add initial avatar component.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectPersonAvatar.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/ext/IntExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/StringExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/AvatarColorForName.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/strand/StrandUseCases.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "1663bc90faa7c35a818122706cc5f32163d2f303",
        "timestamp" : 1753278137000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "fix: resolved crash and related issues\u000a",
        "date" : "2025-07-23 19:12:17 +0530",
        "id" : "1663bc90faa7c35a818122706cc5f32163d2f303",
        "msg" : "fix: resolved crash and related issues",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/strand/StrandUseCases.kt"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
      "fullName" : "Pooja Ravi"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
      "fullName" : "nikunj.sharma"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
      "fullName" : "lipsa.behera"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
      "fullName" : "Mike Dawson"
    }
  ]
}