diff --git a/.nvmrc b/.nvmrc index 6d80269a4f04..87ec8842b158 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -18.16.0 +18.18.2 diff --git a/Dockerfile b/Dockerfile index 2a20e7c527fc..03c55964bef7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # renovate: datasource=github-releases depName=microsoft/ApplicationInsights-Java -ARG APP_INSIGHTS_AGENT_VERSION=3.4.15 +ARG APP_INSIGHTS_AGENT_VERSION=3.4.18 # Application image diff --git a/build.gradle b/build.gradle index 7035befae453..e0be62ee8f2c 100644 --- a/build.gradle +++ b/build.gradle @@ -2,14 +2,14 @@ plugins { id 'application' id 'checkstyle' id 'jacoco' - id 'io.spring.dependency-management' version '1.1.0' - id 'org.springframework.boot' version '2.7.11' - id 'org.owasp.dependencycheck' version '8.1.2' - id 'com.github.ben-manes.versions' version '0.47.0' - id 'org.sonarqube' version '3.4.0.2513' - id 'au.com.dius.pact' version '4.2.14' + id 'io.spring.dependency-management' version '1.1.4' + id 'org.springframework.boot' version '2.7.17' + id 'org.owasp.dependencycheck' version '8.4.2' + id 'com.github.ben-manes.versions' version '0.49.0' + id 'org.sonarqube' version '3.5.0.2730' + id 'au.com.dius.pact' version '4.6.3' id "io.freefair.lombok" version "6.6.3" - id "org.flywaydb.flyway" version "9.21.0" + id "org.flywaydb.flyway" version "9.22.3" } group = 'uk.gov.hmcts.reform' @@ -32,12 +32,12 @@ allprojects { checkstyle { maxWarnings = 0 - toolVersion = '10.4' + toolVersion = '10.12.4' getConfigDirectory().set(new File(rootDir, 'config/checkstyle')) } jacoco { - toolVersion = '0.8.8' // jacocoMavenPluginVersion + toolVersion = '0.8.11' // jacocoMavenPluginVersion reportsDirectory = file("$buildDir/reports/jacoco") } @@ -76,7 +76,7 @@ allprojects { dependencyManagement { dependencies { //CVE-2023-44487 - dependencySet(group: 'io.netty', version: '4.1.100.Final') { + dependencySet(group: 'io.netty', version: '4.1.101.Final') { entry 'netty-handler' entry 'netty-handler-proxy' entry 'netty-transport-native-epoll' @@ -98,57 +98,57 @@ allprojects { entry 'netty-codec-socks' } //CVE-2022-40152 - dependencySet(group: 'com.fasterxml.woodstox', version: '6.5.0') { + dependencySet(group: 'com.fasterxml.woodstox', version: '6.5.1') { entry 'woodstox-core' } //CVE-2023-3635 - dependencySet(group: 'com.squareup.okio', version: '3.4.0') { + dependencySet(group: 'com.squareup.okio', version: '3.6.0') { entry 'okio-jvm' } dependency group: 'org.bouncycastle', name: 'bcpkix-jdk15on', version: '1.70' // CVE-2018-10237 - Unbounded memory allocation - dependency group: 'org.mybatis', name: 'mybatis', version: '3.5.13' + dependency group: 'org.mybatis', name: 'mybatis', version: '3.5.14' // CVE-2020-26945 - Mishandles deserialization of object streams. - dependencySet(group: 'com.google.guava', version: '32.1.1-jre') { + dependencySet(group: 'com.google.guava', version: '32.1.3-jre') { entry 'guava' } - dependency group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib-common', version: '1.8.20' - dependency group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib-jdk7', version: '1.8.20' - dependency group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib-jdk8', version: '1.8.20' - dependency group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib', version: '1.8.20' - dependency group: 'org.jetbrains.kotlin', name: 'kotlin-reflect', version: '1.8.20' + dependency group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib-common', version: '1.9.20' + dependency group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib-jdk7', version: '1.9.20' + dependency group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib-jdk8', version: '1.9.20' + dependency group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib', version: '1.9.20' + dependency group: 'org.jetbrains.kotlin', name: 'kotlin-reflect', version: '1.9.20' // CVE-2020-29582 // CVE-2021-29425 - dependency group: 'commons-io', name: 'commons-io', version: '2.11.0' - dependency group: 'com.squareup.okhttp3', name: 'okhttp', version: '4.10.0' - dependency group: 'org.springframework.security', name: 'spring-security-crypto', version: '5.8.5' + dependency group: 'commons-io', name: 'commons-io', version: '2.15.0' + dependency group: 'com.squareup.okhttp3', name: 'okhttp', version: '4.12.0' + dependency group: 'org.springframework.security', name: 'spring-security-crypto', version: '5.8.8' - dependency group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.14.2' - dependency group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.14.2' + dependency group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.15.3' + dependency group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.15.3' // To prevent other libraries using conflicting versions - dependency group: 'org.slf4j', name: 'slf4j-nop', version: '2.0.5' + dependency group: 'org.slf4j', name: 'slf4j-nop', version: '2.0.9' // solves CVE-2022-25857 dependencySet( group: 'org.yaml', - version: '2.0' + version: '2.2' ) { entry 'snakeyaml' } // Solves CVE-2022-25647 dependencySet( group: 'org.camunda.bpm', - version: '7.17.0' + version: '7.20.0' ) { entry 'camunda-engine' } // Solves CVE-2022-31159, happens only on local builds when running dependencyCheck gradle task dependencySet( group: 'com.amazonaws', - version: '1.12.513' + version: '1.12.588' ) { entry 'aws-java-sdk-core' entry 'aws-java-sdk-kms' @@ -157,12 +157,12 @@ allprojects { // Solves CVE-2020-17521 dependencySet( group: 'org.codehaus.groovy', - version: '2.4.21' + version: '2.5.23' ) { entry 'groovy-all' } - dependencySet(group: 'org.apache.tomcat.embed', version: '9.0.80') { + dependencySet(group: 'org.apache.tomcat.embed', version: '9.0.82') { entry 'tomcat-embed-core' entry 'tomcat-embed-el' entry 'tomcat-embed-websocket' @@ -171,8 +171,8 @@ allprojects { dependency group: 'commons-fileupload', name: 'commons-fileupload', version: '1.5' } imports { - mavenBom 'org.springframework.cloud:spring-cloud-dependencies:2021.0.3' - mavenBom "com.azure.spring:spring-cloud-azure-dependencies:5.3.0" + mavenBom 'org.springframework.cloud:spring-cloud-dependencies:2021.0.8' + mavenBom "com.azure.spring:spring-cloud-azure-dependencies:5.7.0" } } @@ -339,14 +339,14 @@ jacocoTestReport.dependsOn { } def versions = [ - junit : '5.10.0', - junitPlatform : '1.10.0', + junit : '5.10.1', + junitPlatform : '1.10.1', reformLogging : '5.1.7', springBoot : springBoot.class.package.implementationVersion, - springStatemachine : '3.2.0', - lombok : '1.18.26', - pact : '3.5.24', - springSecurity : '5.8.5' + springStatemachine : '3.2.1', + lombok : '1.18.30', + pact : '3.6.15', + springSecurity : '5.8.8' ] ext.libraries = [ @@ -369,7 +369,7 @@ configurations.all { } dependencies { - implementation 'com.github.hmcts:civil-commons:1.0.33' + implementation 'com.github.hmcts:civil-commons:1.29_CIV-6122_191023' implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web' implementation group: 'org.springframework.boot', name: 'spring-boot-starter-actuator' implementation group: 'org.springframework.boot', name: 'spring-boot-starter-aop' @@ -385,7 +385,7 @@ dependencies { implementation group: 'org.springdoc', name: 'springdoc-openapi-ui', version: '1.7.0' implementation group: 'org.postgresql', name: 'postgresql', version: '42.6.0' - implementation group: 'org.jdbi', name: 'jdbi3-sqlobject', version: '3.39.1' + implementation group: 'org.jdbi', name: 'jdbi3-sqlobject', version: '3.41.3' implementation group: 'org.jdbi', name: 'jdbi3-spring4', version: '3.19.0' implementation group: 'org.flywaydb', name: 'flyway-core' @@ -398,32 +398,32 @@ dependencies { implementation group: 'uk.gov.hmcts.reform', name: 'properties-volume-spring-boot-starter', version: '0.1.0' implementation group: 'uk.gov.hmcts.reform', name: 'service-auth-provider-client', version: '4.0.0' - implementation group: 'io.github.openfeign', name: 'feign-httpclient', version: '12.4' + implementation group: 'io.github.openfeign', name: 'feign-httpclient', version: '12.5' implementation group: 'org.springframework.retry', name: 'spring-retry' implementation group: 'com.github.hmcts', name: 'java-logging', version: '6.0.1' - implementation group: 'com.github.hmcts', name: 'ccd-client', version: '4.9.1' + implementation group: 'com.github.hmcts', name: 'ccd-client', version: '4.9.2' implementation group: 'uk.gov.hmcts.reform', name: 'document-management-client', version: '7.0.0' implementation group: 'uk.gov.hmcts.reform', name: 'send-letter-client', version: '3.0.3' implementation('com.github.hmcts:fees-java-client:0.0.6') { exclude group: 'java-logging', module: ' java-logging' } - implementation('com.github.hmcts:payments-java-client:1.5.2') { + implementation('com.github.hmcts:payments-java-client:1.6.5') { exclude group: 'java-logging', module: ' java-logging' } implementation group: 'uk.gov.hmcts.reform', name: 'service-auth-provider-client', version: '4.0.0' implementation group: 'uk.gov.hmcts.reform', name: 'properties-volume-spring-boot-starter', version: '0.1.0' implementation group: 'uk.gov.service.notify', name: 'notifications-java-client', version: '4.1.0-RELEASE' - implementation group: 'com.github.hmcts', name: 'ccd-case-document-am-client', version: '1.7.1' - implementation group: 'com.sendgrid', name: 'sendgrid-java', version: '4.9.3' + implementation group: 'com.github.hmcts', name: 'ccd-case-document-am-client', version: '1.59' + implementation group: 'com.sendgrid', name: 'sendgrid-java', version: '4.10.0' annotationProcessor group: 'org.projectlombok', name: 'lombok', version: versions.lombok compileOnly group: 'org.projectlombok', name: 'lombok', version: versions.lombok implementation group: 'org.springframework.boot', name: 'spring-boot-starter-cache' - implementation group: 'com.github.ben-manes.caffeine', name: 'caffeine', version: '3.1.7' + implementation group: 'com.github.ben-manes.caffeine', name: 'caffeine', version: '3.1.8' implementation group: 'org.springframework.security', name: 'spring-security-web', version: versions.springSecurity implementation group: 'org.springframework.security', name: 'spring-security-config', version: versions.springSecurity @@ -433,43 +433,43 @@ dependencies { implementation group: 'org.springframework.security', name: 'spring-security-oauth2-client', version: versions.springSecurity implementation group: 'org.springframework.security', name: 'spring-security-oauth2-jose', version: versions.springSecurity implementation group: 'org.springframework.security', name: 'spring-security-oauth2-core', version: versions.springSecurity - implementation group: 'com.nimbusds', name: 'nimbus-jose-jwt', version: '9.31' - implementation group: 'io.jsonwebtoken', name: 'jjwt', version: '0.9.1' + implementation group: 'com.nimbusds', name: 'nimbus-jose-jwt', version: '9.37.1' + implementation group: 'io.jsonwebtoken', name: 'jjwt', version: '0.12.3' implementation group: 'uk.gov.hmcts.reform', name: 'idam-client', version: '2.0.0' - implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.20.0' - implementation group: 'org.apache.logging.log4j', name: 'log4j-to-slf4j', version: '2.20.0' - implementation group: 'org.apache.commons', name: 'commons-text', version: '1.10.0' + implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.21.1' + implementation group: 'org.apache.logging.log4j', name: 'log4j-to-slf4j', version: '2.21.1' + implementation group: 'org.apache.commons', name: 'commons-text', version: '1.11.0' implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-core', version: '9.0.82' - implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-websocket', version: '10.1.14' - implementation group: 'org.elasticsearch', name: 'elasticsearch', version: '7.17.9' - implementation group: 'com.networknt', name: 'json-schema-validator', version: '1.0.78' + implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-websocket', version: '10.1.15' + implementation group: 'org.elasticsearch', name: 'elasticsearch', version: '7.17.15' + implementation group: 'com.networknt', name: 'json-schema-validator', version: '1.0.87' - implementation group: 'com.fasterxml.jackson.module', name: 'jackson-module-kotlin', version: '2.14.2' - implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.14.2' + implementation group: 'com.fasterxml.jackson.module', name: 'jackson-module-kotlin', version: '2.15.3' + implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.15.3' - implementation group: 'org.camunda.bpm', name: 'camunda-external-task-client', version: '7.17.0' - implementation group: 'org.camunda.bpm.extension.rest', name: 'camunda-rest-client-spring-boot-starter', version: '0.0.4' - implementation group: 'org.camunda.bpm', name: 'camunda-engine-rest-core', version: '7.17.0' + implementation group: 'org.camunda.bpm', name: 'camunda-external-task-client', version: '7.20.0' + implementation group: 'org.camunda.bpm.extension.rest', name: 'camunda-rest-client-spring-boot-starter', version: '0.0.6' + implementation group: 'org.camunda.bpm', name: 'camunda-engine-rest-core', version: '7.20.0' - implementation group: 'org.apiguardian', name: 'apiguardian-api', version: '1.1.1' + implementation group: 'org.apiguardian', name: 'apiguardian-api', version: '1.1.2' // JAX-B dependencies for JDK 9+ implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1' - implementation group: 'jakarta.xml.bind', name: 'jakarta.xml.bind-api', version: '4.0.0' - implementation group: 'org.glassfish.jaxb', name: 'jaxb-runtime', version: '4.0.2' + implementation group: 'jakarta.xml.bind', name: 'jakarta.xml.bind-api', version: '4.0.1' + implementation group: 'org.glassfish.jaxb', name: 'jaxb-runtime', version: '4.0.4' - implementation group: 'com.launchdarkly', name: 'launchdarkly-java-server-sdk', version: '6.2.1' + implementation group: 'com.launchdarkly', name: 'launchdarkly-java-server-sdk', version: '6.3.0' - implementation group: 'com.azure', name: 'azure-core', version: '1.41.0' - implementation group: 'com.azure', name: 'azure-messaging-servicebus', version: '7.14.2' + implementation group: 'com.azure', name: 'azure-core', version: '1.45.0' + implementation group: 'com.azure', name: 'azure-messaging-servicebus', version: '7.14.5' implementation group: 'com.microsoft.azure', name: 'azure-servicebus', version: '3.6.7' testImplementation group: 'org.mockito', name: 'mockito-core', version: '4.11.0' testImplementation group: 'org.mockito', name: 'mockito-junit-jupiter', version: '4.11.0' testImplementation group: 'org.mockito', name: 'mockito-inline', version: '4.11.0' - testImplementation group: 'net.bytebuddy', name: 'byte-buddy', version: '1.14.4' - testImplementation group: 'net.bytebuddy', name: 'byte-buddy-agent', version: '1.14.4' + testImplementation group: 'net.bytebuddy', name: 'byte-buddy', version: '1.14.9' + testImplementation group: 'net.bytebuddy', name: 'byte-buddy-agent', version: '1.14.9' testAnnotationProcessor group: 'org.projectlombok', name: 'lombok', version: versions.lombok testCompileOnly group: 'org.projectlombok', name: 'lombok', version: versions.lombok @@ -478,7 +478,7 @@ dependencies { testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test' testImplementation group: 'io.rest-assured', name: 'rest-assured' - testImplementation group: 'org.assertj', name: 'assertj-core', version: '3.19.0' + testImplementation group: 'org.assertj', name: 'assertj-core', version: '3.24.2' testImplementation group: 'org.springframework.statemachine', name: 'spring-statemachine-test', version: versions.springStatemachine testImplementation 'com.github.hmcts:fortify-client:1.3.0:all' @@ -487,8 +487,8 @@ dependencies { contractTestImplementation group: 'au.com.dius', name: 'pact-jvm-consumer-java8_2.12', version: versions.pact contractTestImplementation group: 'org.hamcrest', name: 'java-hamcrest', version: '2.0.0.0' - contractTestImplementation('org.junit.jupiter:junit-jupiter-api:5.10.0') - contractTestImplementation('org.junit.jupiter:junit-jupiter-engine:5.10.0') + contractTestImplementation('org.junit.jupiter:junit-jupiter-api:5.10.1') + contractTestImplementation('org.junit.jupiter:junit-jupiter-engine:5.10.1') contractTestImplementation sourceSets.main.runtimeClasspath contractTestImplementation sourceSets.test.runtimeClasspath diff --git a/charts/civil-service/Chart.yaml b/charts/civil-service/Chart.yaml index dbf0c7020428..9a4f70e457ed 100644 --- a/charts/civil-service/Chart.yaml +++ b/charts/civil-service/Chart.yaml @@ -2,13 +2,13 @@ apiVersion: v2 description: A Helm chart for civil-service App name: civil-service home: https://github.com/hmcts/civil-service -version: 0.0.52 +version: 0.0.53 maintainers: - name: HMCTS Civil team dependencies: - name: java - version: 5.0.0 + version: 5.0.1 repository: 'https://hmctspublic.azurecr.io/helm/v1/repo/' - name: ccd version: 8.0.29 @@ -23,7 +23,7 @@ dependencies: repository: 'https://hmctspublic.azurecr.io/helm/v1/repo/' condition: idam-pr.enabled - name: camunda-bpm - version: 0.0.28 + version: 0.0.42 repository: 'https://hmctspublic.azurecr.io/helm/v1/repo/' condition: camunda-bpm.enabled - name: aac-manage-case-assignment diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e708b1c023ec..afba109285af 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index fbce071a31a2..ec7c722f63cb 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 1b6c787337ff..65dcd68d65c8 100755 --- a/gradlew +++ b/gradlew @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,10 +80,10 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' @@ -143,12 +143,16 @@ fi if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -205,6 +209,12 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. diff --git a/gradlew.bat b/gradlew.bat index ac1b06f93825..6689b85beecd 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,8 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/infrastructure/.terraform-version b/infrastructure/.terraform-version index 1c99cf0e8093..266146b87cbc 100644 --- a/infrastructure/.terraform-version +++ b/infrastructure/.terraform-version @@ -1 +1 @@ -1.4.4 +1.6.3