From 1f4756dc666a2b1d1052d6e9ec12255d2adbebec Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Jul 2026 11:31:25 +0000 Subject: [PATCH 1/6] Update All v5 dependencies --- .github/workflows/add_pr_label.yml | 6 +- .github/workflows/assemble.yml | 6 +- .github/workflows/check.yml | 4 +- .../workflows/check_dependency_changes.yml | 10 +-- .github/workflows/check_labels.yml | 4 +- .github/workflows/code_analysis.yml | 12 +-- .github/workflows/codeql.yml | 6 +- .github/workflows/create_github_release.yml | 4 +- .github/workflows/create_release_notes_pr.yml | 4 +- .github/workflows/finalize_release.yml | 6 +- .../workflows/generate_dependency_graph.yml | 10 +-- .github/workflows/generate_release_notes.yml | 10 +-- .github/workflows/generate_version_name.yml | 2 +- .github/workflows/get_dependency_list.yml | 6 +- .github/workflows/publish_docs.yml | 8 +- .../workflows/publish_to_maven_central.yml | 16 ++-- .github/workflows/release_acceptance_app.yml | 6 +- .github/workflows/run_tests.yml | 12 +-- .github/workflows/run_ui_tests.yml | 12 +-- .github/workflows/sonar_cloud.yml | 8 +- .github/workflows/stale_issues.yml | 2 +- .github/workflows/update_release_notes.yml | 6 +- .../update_verification_metadata.yml | 6 +- .github/workflows/validate_dependencies.yml | 2 +- .github/workflows/validate_public_api.yml | 8 +- gradle/libs.versions.toml | 76 +++++++++---------- gradle/verification-metadata.xml | 13 ++++ gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle | 2 +- 29 files changed, 141 insertions(+), 128 deletions(-) diff --git a/.github/workflows/add_pr_label.yml b/.github/workflows/add_pr_label.yml index 28985c97bb..62009c0645 100644 --- a/.github/workflows/add_pr_label.yml +++ b/.github/workflows/add_pr_label.yml @@ -23,7 +23,7 @@ jobs: steps: - name: Checkout to current branch - uses: actions/checkout@v5 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Get label id: get_label @@ -40,10 +40,10 @@ jobs: steps: - name: Checkout to current branch - uses: actions/checkout@v5 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Add label - uses: actions/github-script@v8 + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 env: LABEL: ${{ needs.get_label.outputs.label }} with: diff --git a/.github/workflows/assemble.yml b/.github/workflows/assemble.yml index 5cd141679e..d34e2a31a0 100644 --- a/.github/workflows/assemble.yml +++ b/.github/workflows/assemble.yml @@ -14,16 +14,16 @@ jobs: labels: ubuntu-latest-8-cores steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Set up JDK - uses: actions/setup-java@v5 + uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0 with: distribution: 'zulu' java-version: 17 - name: Gradle cache - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0 with: cache-read-only: false diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 5cb3eba842..34d34c9b10 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -11,10 +11,10 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Set up JDK - uses: actions/setup-java@v5 + uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0 with: distribution: 'zulu' java-version: 17 diff --git a/.github/workflows/check_dependency_changes.yml b/.github/workflows/check_dependency_changes.yml index 70471abc2b..c5816620e7 100644 --- a/.github/workflows/check_dependency_changes.yml +++ b/.github/workflows/check_dependency_changes.yml @@ -28,19 +28,19 @@ jobs: needs: [ get_head_dependency_list, get_base_dependency_list ] steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: sparse-checkout: | scripts/check_dependency_changes.py sparse-checkout-cone-mode: false - name: Download base dependency list artifact - uses: actions/download-artifact@v5 + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: "DEPENDENCY_LIST_BASE" - name: Download head dependency list artifact - uses: actions/download-artifact@v5 + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: "DEPENDENCY_LIST_HEAD" @@ -63,7 +63,7 @@ jobs: fi - name: Add comment on PR - uses: thollander/actions-comment-pull-request@v3 + uses: thollander/actions-comment-pull-request@24bffb9b452ba05a4f3f77933840a6a841d1b32b # v3.0.1 if: steps.compare_deps.outputs.has_changes == 'true' with: file-path: "${{ github.workspace }}/dependency_changes.md" @@ -71,7 +71,7 @@ jobs: mode: recreate - name: Delete comment from PR - uses: thollander/actions-comment-pull-request@v3 + uses: thollander/actions-comment-pull-request@24bffb9b452ba05a4f3f77933840a6a841d1b32b # v3.0.1 if: steps.compare_deps.outputs.has_changes == 'false' with: comment-tag: dependency_changes diff --git a/.github/workflows/check_labels.yml b/.github/workflows/check_labels.yml index 12a5fcb70f..02e358ae0f 100644 --- a/.github/workflows/check_labels.yml +++ b/.github/workflows/check_labels.yml @@ -21,7 +21,7 @@ jobs: allowed-labels: ${{ steps.get_allowed_labels.outputs.allowed_labels }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Get the list of allowed pull request labels id: get_allowed_labels @@ -45,7 +45,7 @@ jobs: needs: get_allowed_labels steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Validate release notes env: diff --git a/.github/workflows/code_analysis.yml b/.github/workflows/code_analysis.yml index f5689c07f5..893329cf30 100644 --- a/.github/workflows/code_analysis.yml +++ b/.github/workflows/code_analysis.yml @@ -12,16 +12,16 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Set up JDK - uses: actions/setup-java@v5 + uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0 with: distribution: 'zulu' java-version: 17 - name: Gradle cache - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0 with: cache-read-only: true @@ -36,16 +36,16 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Set up JDK - uses: actions/setup-java@v5 + uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0 with: distribution: 'zulu' java-version: 17 - name: Gradle cache - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0 with: cache-read-only: true diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 07690d7f27..2b4b4274b9 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -29,16 +29,16 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4.36.3 with: languages: ${{ matrix.language }} build-mode: ${{ matrix.build-mode }} - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4.36.3 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/create_github_release.yml b/.github/workflows/create_github_release.yml index 09d87c793a..6677a7df71 100644 --- a/.github/workflows/create_github_release.yml +++ b/.github/workflows/create_github_release.yml @@ -15,11 +15,11 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 # Create a Github release with release notes. - name: Create Github release - uses: ncipollo/release-action@v1 + uses: ncipollo/release-action@339a81892b84b4eeb0f6e744e4574d79d0d9b8dd # v1.21.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} VERSION_NAME: ${{ inputs.version-name }} diff --git a/.github/workflows/create_release_notes_pr.yml b/.github/workflows/create_release_notes_pr.yml index 3d79164d10..db7ae528da 100644 --- a/.github/workflows/create_release_notes_pr.yml +++ b/.github/workflows/create_release_notes_pr.yml @@ -16,10 +16,10 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Download release notes artifact - uses: actions/download-artifact@v5 + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 env: VERSION_NAME: ${{ inputs.version-name }} with: diff --git a/.github/workflows/finalize_release.yml b/.github/workflows/finalize_release.yml index de086e445d..964b379dc0 100644 --- a/.github/workflows/finalize_release.yml +++ b/.github/workflows/finalize_release.yml @@ -26,11 +26,11 @@ jobs: needs: update_release_notes steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 # Publish Github release and the tag - name: Publish Github release - uses: ncipollo/release-action@v1 + uses: ncipollo/release-action@339a81892b84b4eeb0f6e744e4574d79d0d9b8dd # v1.21.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} VERSION_NAME: ${{ inputs.version-name }} @@ -49,7 +49,7 @@ jobs: needs: publish_draft_release steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Remove release branch env: diff --git a/.github/workflows/generate_dependency_graph.yml b/.github/workflows/generate_dependency_graph.yml index 58124afa88..4725fd393b 100644 --- a/.github/workflows/generate_dependency_graph.yml +++ b/.github/workflows/generate_dependency_graph.yml @@ -11,23 +11,23 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 # Setup Java 17 # https://github.com/marketplace/actions/setup-java-jdk - name: Set up JDK - uses: actions/setup-java@v5 + uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0 with: distribution: 'zulu' java-version: 17 - name: Gradle cache - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0 with: cache-read-only: true - name: Setup Graphviz - uses: ts-graphviz/setup-graphviz@v2 + uses: ts-graphviz/setup-graphviz@b1de5da23ed0a6d14e0aeee8ed52fdd87af2363c # v2.0.2 - name: Generate Dependency Graph run: ./gradlew dependencyGraph @@ -40,7 +40,7 @@ jobs: git commit -am 'Update dependency graph' - name: Push - uses: ad-m/github-push-action@master + uses: ad-m/github-push-action@881a6320fdb16eb5318c5054f31c218aec2b324c # master with: github_token: ${{ secrets.GITHUB_TOKEN }} branch: ${{ github.ref }} diff --git a/.github/workflows/generate_release_notes.yml b/.github/workflows/generate_release_notes.yml index a54c4a974b..d4f5b1ac3f 100644 --- a/.github/workflows/generate_release_notes.yml +++ b/.github/workflows/generate_release_notes.yml @@ -18,7 +18,7 @@ jobs: allowed-labels: ${{ steps.get_allowed_labels.outputs.allowed_labels }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Get the list of allowed pull request labels id: get_allowed_labels @@ -42,13 +42,13 @@ jobs: needs: get_allowed_labels steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: fetch-depth: 0 - - uses: actions/setup-python@v6 + - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 with: - python-version: '3.13' + python-version: '3.14' - name: Generate release notes id: generate_release_notes @@ -64,7 +64,7 @@ jobs: python scripts/generate_release_notes.py $RELEASE_NOTES_FILE_NAME - name: Upload release notes artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 env: VERSION_NAME: ${{ inputs.version-name }} with: diff --git a/.github/workflows/generate_version_name.yml b/.github/workflows/generate_version_name.yml index 71866ca170..38b4522af3 100644 --- a/.github/workflows/generate_version_name.yml +++ b/.github/workflows/generate_version_name.yml @@ -17,7 +17,7 @@ jobs: version-name: ${{ steps.generate_version_name.outputs.version_name }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Generate version name id: generate_version_name run: | diff --git a/.github/workflows/get_dependency_list.yml b/.github/workflows/get_dependency_list.yml index d65355a934..b477d7d4bf 100644 --- a/.github/workflows/get_dependency_list.yml +++ b/.github/workflows/get_dependency_list.yml @@ -19,12 +19,12 @@ jobs: name: Fetch dependency list steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: ref: ${{ inputs.ref }} - name: Setup gradle - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0 - name: Fetch dependency list env: @@ -34,7 +34,7 @@ jobs: ./gradlew dependencyList -q --no-configuration-cache -PoutputFileName=$DEPENDENCY_LIST_FILE_NAME - name: Upload dependency list artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: "${{ inputs.artifact-name }}" path: "${{ inputs.artifact-name }}" diff --git a/.github/workflows/publish_docs.yml b/.github/workflows/publish_docs.yml index 96bb65661d..3328288f55 100644 --- a/.github/workflows/publish_docs.yml +++ b/.github/workflows/publish_docs.yml @@ -15,18 +15,18 @@ jobs: steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it # https://github.com/marketplace/actions/checkout - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 # Setup Java 17 # https://github.com/marketplace/actions/setup-java-jdk - name: Set up JDK - uses: actions/setup-java@v5 + uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0 with: distribution: 'zulu' java-version: 17 - name: Gradle cache - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0 with: cache-read-only: true @@ -39,7 +39,7 @@ jobs: # Deploy to GitHub Pages - name: Deploy GitHub Pages - uses: JamesIves/github-pages-deploy-action@v4.7.3 + uses: JamesIves/github-pages-deploy-action@d92aa235d04922e8f08b40ce78cc5442fcfbfa2f # v4.8.0 with: BRANCH: gh-pages FOLDER: build/docs/ diff --git a/.github/workflows/publish_to_maven_central.yml b/.github/workflows/publish_to_maven_central.yml index 41fd73924b..0b5a438f59 100644 --- a/.github/workflows/publish_to_maven_central.yml +++ b/.github/workflows/publish_to_maven_central.yml @@ -23,11 +23,11 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - - uses: actions/setup-python@v6 + - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 with: - python-version: '3.13' + python-version: '3.14' - name: Drop all open OSSRH repositories env: @@ -45,10 +45,10 @@ jobs: labels: ubuntu-latest-8-cores steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Set up JDK - uses: actions/setup-java@v5 + uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0 with: distribution: 'zulu' java-version: 17 @@ -83,11 +83,11 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - - uses: actions/setup-python@v6 + - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 with: - python-version: '3.13' + python-version: '3.14' # Moved the repository from OSSRH to Central Portal - name: Move repository to Central Portal diff --git a/.github/workflows/release_acceptance_app.yml b/.github/workflows/release_acceptance_app.yml index 0d7ab266dc..d867f420f5 100644 --- a/.github/workflows/release_acceptance_app.yml +++ b/.github/workflows/release_acceptance_app.yml @@ -16,16 +16,16 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v5 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Set up JDK - uses: actions/setup-java@v5 + uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0 with: distribution: 'zulu' java-version: 17 - name: Gradle cache - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0 with: cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} cache-read-only: true diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index e6cd40274a..e4b1f6b2b5 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -14,16 +14,16 @@ jobs: labels: ubuntu-latest-8-cores steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Set up JDK - uses: actions/setup-java@v5 + uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0 with: distribution: 'zulu' java-version: 17 - name: Gradle cache - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0 with: cache-read-only: false @@ -40,16 +40,16 @@ jobs: labels: ubuntu-latest-8-cores steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Set up JDK - uses: actions/setup-java@v5 + uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0 with: distribution: 'zulu' java-version: 17 - name: Gradle cache - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0 with: cache-read-only: false diff --git a/.github/workflows/run_ui_tests.yml b/.github/workflows/run_ui_tests.yml index 7417b777b2..ef20ab7298 100644 --- a/.github/workflows/run_ui_tests.yml +++ b/.github/workflows/run_ui_tests.yml @@ -19,7 +19,7 @@ jobs: api-level: [ 34 ] steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Enable KVM run: | @@ -28,18 +28,18 @@ jobs: sudo udevadm trigger --name-match=kvm - name: Set up JDK - uses: actions/setup-java@v5 + uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0 with: distribution: 'zulu' java-version: 17 - name: Gradle cache - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0 with: cache-read-only: false - name: AVD cache - uses: actions/cache@v4 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 id: avd-cache with: path: | @@ -49,7 +49,7 @@ jobs: - name: Create AVD and generate snapshot for caching if: steps.avd-cache.outputs.cache-hit != 'true' - uses: reactivecircus/android-emulator-runner@v2 + uses: reactivecircus/android-emulator-runner@e89f39f1abbbd05b1113a29cf4db69e7540cae5a # v2.37.0 with: api-level: ${{ matrix.api-level }} target: google_apis @@ -60,7 +60,7 @@ jobs: script: echo "Generated AVD snapshot for caching." - name: Run connectedDebugAndroidTest - uses: reactivecircus/android-emulator-runner@v2 + uses: reactivecircus/android-emulator-runner@e89f39f1abbbd05b1113a29cf4db69e7540cae5a # v2.37.0 env: ADYEN_ANDROID_MERCHANT_SERVER_URL: 'https://android-ui-tests.adyen.com/' ADYEN_ANDROID_CLIENT_KEY: 'test_fakefakefakefakefakefakefakefake' diff --git a/.github/workflows/sonar_cloud.yml b/.github/workflows/sonar_cloud.yml index f554bbcd70..1d53fe9d11 100644 --- a/.github/workflows/sonar_cloud.yml +++ b/.github/workflows/sonar_cloud.yml @@ -12,23 +12,23 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: fetch-depth: '0' - name: Set up JDK - uses: actions/setup-java@v5 + uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0 with: distribution: 'zulu' java-version: 17 - name: Gradle cache - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0 with: cache-read-only: true - name: Cache SonarCloud packages - uses: actions/cache@v4 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: ~/.sonar/cache key: ${{ runner.os }}-sonar diff --git a/.github/workflows/stale_issues.yml b/.github/workflows/stale_issues.yml index c274f9b62b..9cb5f69b90 100644 --- a/.github/workflows/stale_issues.yml +++ b/.github/workflows/stale_issues.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Close stale issues - uses: actions/stale@v10 + uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v10.3.0 with: any-of-labels: 'Needs more info' stale-issue-message: 'This issue is now stale because it has been open for 14 days with no activity. Please provide the requested information or the issue will be closed automatically.' diff --git a/.github/workflows/update_release_notes.yml b/.github/workflows/update_release_notes.yml index 528c3f4792..9dc9d21483 100644 --- a/.github/workflows/update_release_notes.yml +++ b/.github/workflows/update_release_notes.yml @@ -20,7 +20,7 @@ jobs: updated-release-notes-filepath: ${{ steps.fetch_updated_release_notes_file.outputs.updated-release-notes-filepath }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: ref: "release-notes" @@ -41,7 +41,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: ref: "release-notes" @@ -52,7 +52,7 @@ jobs: # Update Github release with the updated release notes - name: Update Github release notes id: update_github_release_notes - uses: ncipollo/release-action@v1 + uses: ncipollo/release-action@339a81892b84b4eeb0f6e744e4574d79d0d9b8dd # v1.21.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} VERSION_NAME: ${{ inputs.version-name }} diff --git a/.github/workflows/update_verification_metadata.yml b/.github/workflows/update_verification_metadata.yml index 8e2444ce94..4b5ab2018d 100644 --- a/.github/workflows/update_verification_metadata.yml +++ b/.github/workflows/update_verification_metadata.yml @@ -16,18 +16,18 @@ jobs: if: ${{ !contains(github.event.commits[0].message, '[skip update-verification-metadata]') }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: token: ${{ secrets.ADYEN_AUTOMATION_BOT_ACCESS_TOKEN }} - name: Set up JDK - uses: actions/setup-java@v5 + uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0 with: distribution: 'zulu' java-version: 17 - name: Gradle cache - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0 with: cache-read-only: true diff --git a/.github/workflows/validate_dependencies.yml b/.github/workflows/validate_dependencies.yml index 56b307e6e8..4f2a3cad1f 100644 --- a/.github/workflows/validate_dependencies.yml +++ b/.github/workflows/validate_dependencies.yml @@ -12,7 +12,7 @@ jobs: name: Validate newly added dependencies for release notes steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: fetch-depth: 0 diff --git a/.github/workflows/validate_public_api.yml b/.github/workflows/validate_public_api.yml index 7a1654d011..0bdb3ba240 100644 --- a/.github/workflows/validate_public_api.yml +++ b/.github/workflows/validate_public_api.yml @@ -13,16 +13,16 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Set up JDK - uses: actions/setup-java@v5 + uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0 with: distribution: 'zulu' java-version: 17 - name: Gradle cache - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0 with: cache-read-only: true @@ -32,7 +32,7 @@ jobs: bash ./scripts/process_api_changes.sh - name: Comment on PR - uses: thollander/actions-comment-pull-request@v3 + uses: thollander/actions-comment-pull-request@24bffb9b452ba05a4f3f77933840a6a841d1b32b # v3.0.1 with: file-path: "${{ github.workspace }}/api_changes.md" comment-tag: api_changes diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a7d9ec1a07..a2bec63763 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -8,46 +8,46 @@ min-sdk = "21" version-code = "1" # Build script -android-gradle-plugin = "8.8.1" -kotlin = "1.9.25" -ksp = "1.9.25-1.0.20" -dokka = "1.9.20" -hilt = "2.55" +android-gradle-plugin = "9.2.1" +kotlin = "2.4.0" +ksp = "2.3.9" +dokka = "2.2.0" +hilt = "2.60" compose-compiler = "1.5.15" # Code quality detekt = "1.23.8" -kover = "0.9.3" -ktlint = "1.5.0" -sonarqube = "5.1.0.4882" -binary-compatibility-validator = "0.16.3" +kover = "0.9.8" +ktlint = "1.8.0" +sonarqube = "7.3.1.8318" +binary-compatibility-validator = "0.18.1" # Android dependencies -activity = "1.10.1" -annotation = "1.9.1" -appcompat = "1.7.0" -autofill = "1.3.0-rc01" -browser = "1.8.0" -coroutines = "1.9.0" -fragment = "1.8.6" -lifecycle = "2.8.7" -material = "1.12.0" +activity = "1.13.0" +annotation = "1.10.0" +appcompat = "1.7.1" +autofill = "1.3.0" +browser = "1.10.0" +coroutines = "1.11.0" +fragment = "1.8.9" +lifecycle = "2.11.0" +material = "1.14.0" recyclerview = "1.4.0" constraintlayout = "2.2.1" # Compose dependencies -compose-activity = "1.10.1" -compose-bom = "2025.03.00" -compose-hilt = "1.2.0" -compose-viewmodel = "2.8.7" +compose-activity = "1.13.0" +compose-bom = "2026.06.01" +compose-hilt = "1.4.0" +compose-viewmodel = "2.11.0" # Adyen dependencies adyen3ds2 = "2.2.27" # External dependencies -cash-app-pay = "2.5.0" -okhttp = "4.12.0" -play-services-wallet = "19.4.0" +cash-app-pay = "2.6.0" +okhttp = "5.4.0" +play-services-wallet = "20.0.0" twint = "8.0.0" wechat-pay = "6.8.0" @@ -55,26 +55,26 @@ wechat-pay = "6.8.0" leak-canary = "2.14" moshi-adapters = "1.15.2" moshi-kotlin-adapter = "1.15.2" -okhttp-logging = "4.12.0" +okhttp-logging = "5.4.0" preference = "1.2.1" -retrofit2 = "2.11.0" +retrofit2 = "3.0.0" # Tests arch-core-testing = "2.2.0" barista = "4.3.0" -espresso = "3.6.1" -json = "20250107" +espresso = "3.7.0" +json = "20250517" jose4j = "0.9.6" -junit-jupiter = "5.12.2" +junit-jupiter = "6.1.1" konsist = "0.17.3" -lint = "31.8.0" -mockito-kotlin = "5.4.0" -mockito = "5.17.0" -robolectric = "4.14.1" -test-ext = "1.2.1" -test-rules = "1.6.1" -turbine = "1.2.0" -uiautomator = "2.3.0" +lint = "32.2.1" +mockito-kotlin = "6.3.0" +mockito = "5.23.0" +robolectric = "4.16.1" +test-ext = "1.3.0" +test-rules = "1.7.0" +turbine = "1.2.1" +uiautomator = "2.4.0" [libraries] diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 8d042870f6..6dca67562d 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -17115,11 +17115,24 @@ + + + + + + + + + + + + + diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 37f853b1c8..a351597e62 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/settings.gradle b/settings.gradle index 3d70a6c328..07232174a0 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,7 +8,7 @@ pluginManagement { plugins { // this has to be declared here directly because settings.gradle cannot reference version catalogs - id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0" + id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" } // Apply local.gradle if it exists (used for local testing configurations) From 6f3e26883476f5018db1fc3e13598aae351a8ea8 Mon Sep 17 00:00:00 2001 From: josephj Date: Fri, 17 Jul 2026 18:03:09 +0200 Subject: [PATCH 2/6] Migrate v5 build to AGP 9 and Dokka 2 --- .github/release_notes_dependency_list.toml | 3 + .github/workflows/get_dependency_list.yml | 2 +- .github/workflows/publish_docs.yml | 2 +- 3ds2/build.gradle | 1 - ach/build.gradle | 1 - action-core/build.gradle | 1 - action/build.gradle | 1 - await/build.gradle | 1 - bacs/build.gradle | 1 - bcmc/build.gradle | 1 - blik/build.gradle | 1 - boleto/build.gradle | 1 - build.gradle | 170 ++++++++++++++++++++- card-scanning/build.gradle | 1 - card/build.gradle | 1 - cashapppay/build.gradle | 1 - checkout-core/build.gradle | 1 - components-compose/build.gradle | 8 +- components-core/build.gradle | 1 - config/gradle/dokka.gradle | 34 ++++- config/module/template/build.gradle | 1 - convenience-stores-jp/build.gradle | 1 - cse/build.gradle | 1 - dotpay/build.gradle | 1 - drop-in-compose/build.gradle | 7 +- drop-in/build.gradle | 1 - econtext/build.gradle | 1 - entercash/build.gradle | 1 - eps/build.gradle | 1 - example-app/build.gradle | 6 +- example-app/ci.local.gradle | 5 +- giftcard/build.gradle | 1 - googlepay/build.gradle | 1 - gradle.properties | 5 +- gradle/libs.versions.toml | 50 +++--- gradle/wrapper/gradle-wrapper.properties | 2 +- ideal/build.gradle | 1 - instant/build.gradle | 1 - issuer-list/build.gradle | 1 - mbway/build.gradle | 1 - meal-voucher-fr/build.gradle | 1 - molpay/build.gradle | 1 - online-banking-core/build.gradle | 1 - online-banking-cz/build.gradle | 1 - online-banking-jp/build.gradle | 1 - online-banking-pl/build.gradle | 1 - online-banking-sk/build.gradle | 1 - openbanking/build.gradle | 1 - paybybank-us/build.gradle | 1 - paybybank/build.gradle | 1 - payeasy/build.gradle | 1 - payto/build.gradle | 1 - qr-code/build.gradle | 1 - redirect/build.gradle | 1 - sepa/build.gradle | 1 - sessions-core/build.gradle | 1 - seven-eleven/build.gradle | 1 - test-core/build.gradle | 1 - twint-action/build.gradle | 1 - twint/build.gradle | 1 - ui-core/build.gradle | 1 - upi/build.gradle | 1 - voucher/build.gradle | 1 - wechatpay/build.gradle | 1 - 64 files changed, 237 insertions(+), 109 deletions(-) diff --git a/.github/release_notes_dependency_list.toml b/.github/release_notes_dependency_list.toml index 0d11248b74..c538183d27 100644 --- a/.github/release_notes_dependency_list.toml +++ b/.github/release_notes_dependency_list.toml @@ -9,6 +9,7 @@ "androidx.compose:compose-bom" = "[AndroidX Compose BoM](https://developer.android.com/develop/ui/compose/bom/bom-mapping)" "androidx.constraintlayout:constraintlayout" = "[AndroidX ConstraintLayout](https://developer.android.com/jetpack/androidx/releases/constraintlayout#{})" "androidx.fragment:fragment-ktx" = "[AndroidX Fragment](https://developer.android.com/jetpack/androidx/releases/fragment#{})" +"androidx.lifecycle:lifecycle-runtime-compose" = "[AndroidX Lifecycle Runtime Compose](https://developer.android.com/jetpack/androidx/releases/lifecycle#{})" "androidx.lifecycle:lifecycle-runtime-ktx" = "[AndroidX Lifecycle Runtime](https://developer.android.com/jetpack/androidx/releases/lifecycle#{})" "androidx.lifecycle:lifecycle-viewmodel-compose" = "[AndroidX Lifecycle ViewModel Compose](https://developer.android.com/jetpack/androidx/releases/lifecycle#{})" "androidx.lifecycle:lifecycle-viewmodel-ktx" = "[AndroidX Lifecycle ViewModel](https://developer.android.com/jetpack/androidx/releases/lifecycle#{})" @@ -69,6 +70,7 @@ "jacoco" = "" "org.bitbucket.b_c:jose4j" = "" "org.jetbrains.dokka" = "" +"org.jetbrains.dokka-javadoc" = "" "org.jetbrains.kotlinx.binary-compatibility-validator" = "" "org.jetbrains.kotlinx.kover" = "" "org.jetbrains.kotlinx:kotlinx-coroutines-test" = "" @@ -88,3 +90,4 @@ "kotlin-parcelize" = "" "org.jetbrains.kotlin.android" = "" "org.jetbrains.kotlin:kotlin-parcelize-runtime" = "" +"org.jetbrains.kotlin.plugin.compose" = "" diff --git a/.github/workflows/get_dependency_list.yml b/.github/workflows/get_dependency_list.yml index b477d7d4bf..3fa1744893 100644 --- a/.github/workflows/get_dependency_list.yml +++ b/.github/workflows/get_dependency_list.yml @@ -31,7 +31,7 @@ jobs: ARTIFACT_NAME: ${{ inputs.artifact-name }} run: | DEPENDENCY_LIST_FILE_NAME=$(echo "${ARTIFACT_NAME}") - ./gradlew dependencyList -q --no-configuration-cache -PoutputFileName=$DEPENDENCY_LIST_FILE_NAME + ./gradlew dependencyList -q --no-configuration-cache --no-parallel -PoutputFileName=$DEPENDENCY_LIST_FILE_NAME - name: Upload dependency list artifact uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 diff --git a/.github/workflows/publish_docs.yml b/.github/workflows/publish_docs.yml index 3328288f55..7df88b7172 100644 --- a/.github/workflows/publish_docs.yml +++ b/.github/workflows/publish_docs.yml @@ -35,7 +35,7 @@ jobs: # Generate kdocs - name: Generate Dokka HTML documentation - run: ./gradlew dokkaHtmlMultiModule + run: ./gradlew dokkaGenerate # Deploy to GitHub Pages - name: Deploy GitHub Pages diff --git a/3ds2/build.gradle b/3ds2/build.gradle index abccc27aa7..54819af2e9 100644 --- a/3ds2/build.gradle +++ b/3ds2/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/ach/build.gradle b/ach/build.gradle index 11b02cd4b7..e9ccc84906 100644 --- a/ach/build.gradle +++ b/ach/build.gradle @@ -1,6 +1,5 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } // Maven artifact diff --git a/action-core/build.gradle b/action-core/build.gradle index a7746a1f28..f6b1d47108 100644 --- a/action-core/build.gradle +++ b/action-core/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/action/build.gradle b/action/build.gradle index 40f2fec0b0..ffa4133c03 100644 --- a/action/build.gradle +++ b/action/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/await/build.gradle b/await/build.gradle index d4fce540a3..edb471a1fa 100644 --- a/await/build.gradle +++ b/await/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/bacs/build.gradle b/bacs/build.gradle index d13952589b..cd288b3d3f 100644 --- a/bacs/build.gradle +++ b/bacs/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/bcmc/build.gradle b/bcmc/build.gradle index 7bab02254a..86061c1cde 100644 --- a/bcmc/build.gradle +++ b/bcmc/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/blik/build.gradle b/blik/build.gradle index 7e1232ec50..def1a47f52 100644 --- a/blik/build.gradle +++ b/blik/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/boleto/build.gradle b/boleto/build.gradle index fad366b0d1..413664ed62 100644 --- a/boleto/build.gradle +++ b/boleto/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/build.gradle b/build.gradle index 2073aeb5c8..1110a756a5 100644 --- a/build.gradle +++ b/build.gradle @@ -1,21 +1,23 @@ import com.android.build.gradle.LibraryPlugin -import org.jetbrains.kotlin.gradle.plugin.KotlinAndroidPluginWrapper +import kotlinx.validation.ApiValidationExtension +import kotlinx.validation.KotlinApiBuildTask +import kotlinx.validation.KotlinApiCompareTask import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { alias libs.plugins.android.application apply false alias libs.plugins.android.library apply false - alias libs.plugins.jetbrains.kotlin.android apply false + alias libs.plugins.kotlin.compose apply false alias libs.plugins.kover apply false alias libs.plugins.ksp apply false alias libs.plugins.hilt apply false alias libs.plugins.detekt alias libs.plugins.dokka + alias libs.plugins.dokka.javadoc apply false alias libs.plugins.sonarqube alias libs.plugins.binary.compatibility.validator } -apply from: "config/gradle/dokkaRoot.gradle" apply from: "config/gradle/sonarcloud.gradle" apply from: "config/gradle/apiValidator.gradle" apply from: "config/gradle/dependencyList.gradle" @@ -29,6 +31,69 @@ ext { checkoutRedirectScheme = "adyencheckout" } +dokka { + dokkaPublications { + html { + outputDirectory.set(layout.buildDirectory.dir("docs")) + } + } +} + +dependencies { + dokka(project(':3ds2')) + dokka(project(':ach')) + dokka(project(':action')) + dokka(project(':action-core')) + dokka(project(':await')) + dokka(project(':bacs')) + dokka(project(':bcmc')) + dokka(project(':blik')) + dokka(project(':boleto')) + dokka(project(':card')) + dokka(project(':card-scanning')) + dokka(project(':cashapppay')) + dokka(project(':checkout-core')) + dokka(project(':components-compose')) + dokka(project(':components-core')) + dokka(project(':convenience-stores-jp')) + dokka(project(':cse')) + dokka(project(':dotpay')) + dokka(project(':drop-in')) + dokka(project(':drop-in-compose')) + dokka(project(':econtext')) + dokka(project(':entercash')) + dokka(project(':eps')) + dokka(project(':giftcard')) + dokka(project(':googlepay')) + dokka(project(':ideal')) + dokka(project(':instant')) + dokka(project(':issuer-list')) + dokka(project(':mbway')) + dokka(project(':meal-voucher-fr')) + dokka(project(':molpay')) + dokka(project(':online-banking-core')) + dokka(project(':online-banking-cz')) + dokka(project(':online-banking-jp')) + dokka(project(':online-banking-pl')) + dokka(project(':online-banking-sk')) + dokka(project(':openbanking')) + dokka(project(':paybybank')) + dokka(project(':paybybank-us')) + dokka(project(':payeasy')) + dokka(project(':payto')) + dokka(project(':qr-code')) + dokka(project(':redirect')) + dokka(project(':seven-eleven')) + dokka(project(':sepa')) + dokka(project(':sessions-core')) + dokka(project(':twint')) + dokka(project(':twint-action')) + dokka(project(':ui-core')) + dokka(project(':upi')) + dokka(project(':voucher')) + dokka(project(':wechatpay')) +} + subprojects { def javaVersion = 11 @@ -63,11 +128,101 @@ subprojects { dependencies { lintChecks project(':lint') } - } - plugins.withType(KotlinAndroidPluginWrapper).configureEach { - kotlin { - jvmToolchain(javaVersion) + def apiValidation = rootProject.extensions.findByType(ApiValidationExtension) + if (apiValidation != null && !apiValidation.ignoredProjects.contains(project.name)) { + dependencies.add( + "bcv-rt-jvm-cp", + "org.jetbrains.kotlin:kotlin-metadata-jvm:${libs.versions.kotlin.get()}" + ) + + afterEvaluate { + def projectName = project.name + def dumpFileName = "${projectName}.api" + def apiDirName = "api" + def apiBuild = tasks.register("apiBuild", KotlinApiBuildTask) { + description = "Builds Kotlin API for 'release' compilation of ${projectName}" + inputClassesDirs.from(tasks.named("compileReleaseKotlin").map { it.outputs.files }) + inputClassesDirs.from(tasks.named("compileReleaseJavaWithJavac").map { it.outputs.files }) + outputApiFile.set(layout.buildDirectory.file("${apiDirName}/${dumpFileName}")) + runtimeClasspath.from(configurations.named("bcv-rt-jvm-cp-resolver")) + + doLast { + def apiFile = outputApiFile.get().asFile + if (!apiFile.exists()) return + def result = new StringBuilder() + def skip = false + apiFile.eachLine { line -> + if (!skip && line.contains("class ") && line.contains('ComposableSingletons$')) { + skip = true + } else if (skip && line == "}") { + skip = false + } else if (!skip) { + result.append(line).append('\n') + } + } + apiFile.text = result.toString() + .replaceAll(/(?m)^\tpublic(?: final)? fun describeContents \(\)I\n/, "") + .replaceAll(/(?m)^\tpublic(?: final)? fun writeToParcel \(Landroid\/os\/Parcel;I\)V\n/, "") + .replaceAll(/\n{3,}/, "\n\n") + } + } + + def apiCheckFile = layout.buildDirectory.file("${apiDirName}/check/${dumpFileName}") + def apiCheckSource = tasks.register("apiCheckSource") { + def goldenApiFile = file("${apiDirName}/${dumpFileName}") + inputs.file(goldenApiFile) + outputs.file(apiCheckFile) + doLast { + def filteredApiFile = apiCheckFile.get().asFile + def result = new StringBuilder() + def skip = false + goldenApiFile.eachLine { line -> + if (!skip && line.contains("class ") && line.contains('\$Creator : android/os/Parcelable\$Creator')) { + skip = true + } else if (skip && line == "}") { + skip = false + } else if (!skip) { + result.append(line).append('\n') + } + } + filteredApiFile.parentFile.mkdirs() + filteredApiFile.text = result.toString() + .replaceAll(/(?m)^\tpublic(?: final)? fun describeContents \(\)I\n/, "") + .replaceAll(/(?m)^\tpublic(?: final)? fun writeToParcel \(Landroid\/os\/Parcel;I\)V\n/, "") + .replaceAll(/\n{3,}/, "\n\n") + } + } + + def apiCheck = tasks.register("apiCheck", KotlinApiCompareTask) { + group = "verification" + description = "Checks signatures of public API against the golden value in API folder for ${projectName}" + dependsOn(apiCheckSource) + projectApiFile.set(apiCheckFile) + generatedApiFile.set(apiBuild.flatMap { it.outputApiFile }) + } + + tasks.register("apiDump") { + group = "other" + description = "Syncs the API file for ${projectName}" + dependsOn(apiBuild) + def fromProvider = apiBuild.flatMap { it.outputApiFile } + def toFile = file("${apiDirName}/${dumpFileName}") + inputs.file(fromProvider) + outputs.file(toFile) + doLast { + def source = fromProvider.get().asFile + if (source.exists()) { + toFile.parentFile.mkdirs() + toFile.bytes = source.bytes + } else { + toFile.delete() + } + } + } + + tasks.named("check") { dependsOn(apiCheck) } + } } } @@ -75,6 +230,7 @@ subprojects { kotlinOptions { freeCompilerArgs += [ '-opt-in=kotlin.RequiresOptIn', + '-jvm-default=disable', ] } } diff --git a/card-scanning/build.gradle b/card-scanning/build.gradle index 04dfcc10f0..a2fb3a130b 100644 --- a/card-scanning/build.gradle +++ b/card-scanning/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android } // Maven artifact diff --git a/card/build.gradle b/card/build.gradle index 9b1e040098..e5f58bd971 100644 --- a/card/build.gradle +++ b/card/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/cashapppay/build.gradle b/cashapppay/build.gradle index aaa0167f39..541a28eaf3 100644 --- a/cashapppay/build.gradle +++ b/cashapppay/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/checkout-core/build.gradle b/checkout-core/build.gradle index ab2fee0f5c..06f4c63ae6 100644 --- a/checkout-core/build.gradle +++ b/checkout-core/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/components-compose/build.gradle b/components-compose/build.gradle index f46433e8b4..f46758ffb1 100644 --- a/components-compose/build.gradle +++ b/components-compose/build.gradle @@ -8,7 +8,7 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android + alias libs.plugins.kotlin.compose } // Maven artifact @@ -33,10 +33,6 @@ android { buildFeatures { compose true } - - composeOptions { - kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get() - } } dependencies { @@ -46,5 +42,7 @@ dependencies { api project(':ui-core') implementation platform(libs.compose.bom) + implementation libs.compose.ui.main + implementation libs.compose.lifecycle.runtime implementation libs.compose.viewmodel } diff --git a/components-core/build.gradle b/components-core/build.gradle index 5b50e5c1d1..d9d9cab713 100644 --- a/components-core/build.gradle +++ b/components-core/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/config/gradle/dokka.gradle b/config/gradle/dokka.gradle index 4f5db35fd3..1a3bff9bd8 100644 --- a/config/gradle/dokka.gradle +++ b/config/gradle/dokka.gradle @@ -7,15 +7,43 @@ */ // only apply dokka if module supports kotlin -project.plugins.withId("kotlin-android") { +project.plugins.withId("com.android.library") { // cannot reference the plugins declared in the version catalogs here because it requires the use of the `plugins` block instead of the `apply plugin` command // the `plugins` block cannot be used in gradle files such as this one, which are imported into other gradle files with the `apply from` command apply plugin: "org.jetbrains.dokka" + apply plugin: "org.jetbrains.dokka-javadoc" + def projectName = project.name + def mainSourceDir = file("src/main/java") + + dokka { + moduleName.set(projectName) + + dokkaPublications.configureEach { + suppressInheritedMembers.set(true) + failOnWarning.set(false) + } + + dokkaSourceSets.configureEach { + sourceLink { + localDirectory.set(mainSourceDir) + remoteUrl("https://github.com/Adyen/adyen-android/tree/main/${projectName}/src/main/java") + remoteLineSuffix.set("#L") + } + } + + pluginsConfiguration { + html { + footerMessage.set("Copyright (c) ${java.time.Year.now()} Adyen N.V.") + } + } + } + + def dokkaJavadoc = tasks.named("dokkaGeneratePublicationJavadoc") tasks.register("javadocJar", Jar) { - dependsOn tasks.named("dokkaJavadoc") + dependsOn(dokkaJavadoc) archiveClassifier.set('javadoc') - from dokkaJavadoc.outputDirectory + from(dokkaJavadoc.flatMap { it.outputDirectory }) } } diff --git a/config/module/template/build.gradle b/config/module/template/build.gradle index b020885605..0d2b97927a 100644 --- a/config/module/template/build.gradle +++ b/config/module/template/build.gradle @@ -1,6 +1,5 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android } ext.mavenArtifactId = "#module_name" diff --git a/convenience-stores-jp/build.gradle b/convenience-stores-jp/build.gradle index a07267a3fe..17a1553753 100644 --- a/convenience-stores-jp/build.gradle +++ b/convenience-stores-jp/build.gradle @@ -1,6 +1,5 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/cse/build.gradle b/cse/build.gradle index 8f9532efec..8492307889 100644 --- a/cse/build.gradle +++ b/cse/build.gradle @@ -1,6 +1,5 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/dotpay/build.gradle b/dotpay/build.gradle index 5c156c8495..1dad4191ac 100644 --- a/dotpay/build.gradle +++ b/dotpay/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/drop-in-compose/build.gradle b/drop-in-compose/build.gradle index ccc7432407..f86ae57b84 100644 --- a/drop-in-compose/build.gradle +++ b/drop-in-compose/build.gradle @@ -8,7 +8,7 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android + alias libs.plugins.kotlin.compose } // Maven artifact @@ -33,10 +33,6 @@ android { buildFeatures { compose true } - - composeOptions { - kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get() - } } dependencies { @@ -44,5 +40,6 @@ dependencies { api project(':drop-in') implementation platform(libs.compose.bom) + implementation libs.compose.ui.main implementation libs.compose.activity } diff --git a/drop-in/build.gradle b/drop-in/build.gradle index bfc0fd142d..4976fd1a1d 100644 --- a/drop-in/build.gradle +++ b/drop-in/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/econtext/build.gradle b/econtext/build.gradle index a6d04d84f9..4556bf9f01 100644 --- a/econtext/build.gradle +++ b/econtext/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/entercash/build.gradle b/entercash/build.gradle index 21de4fbcf9..a65c612b17 100644 --- a/entercash/build.gradle +++ b/entercash/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/eps/build.gradle b/eps/build.gradle index 8dddf52b40..cd4ad123c0 100644 --- a/eps/build.gradle +++ b/eps/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/example-app/build.gradle b/example-app/build.gradle index b46c003201..98eb920745 100644 --- a/example-app/build.gradle +++ b/example-app/build.gradle @@ -8,7 +8,7 @@ plugins { alias libs.plugins.android.application - alias libs.plugins.kotlin.android + alias libs.plugins.kotlin.compose alias libs.plugins.ksp alias libs.plugins.hilt } @@ -70,10 +70,6 @@ android { viewBinding true buildConfig true } - - composeOptions { - kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get() - } } dependencies { diff --git a/example-app/ci.local.gradle b/example-app/ci.local.gradle index 60ca57c31c..25f7aeefec 100644 --- a/example-app/ci.local.gradle +++ b/example-app/ci.local.gradle @@ -42,7 +42,10 @@ android { buildConfigField "String", "AUTHORIZATION_HEADER_VALUE", "\"\"" buildConfigField "String", "CLIENT_KEY", "\"$accClientKey\"" - signingConfig signingConfigs.acceptance + def filePath = System.getenv("SIGNING_STORE_FILE") + if (filePath) { + signingConfig signingConfigs.acceptance + } } } } diff --git a/giftcard/build.gradle b/giftcard/build.gradle index 35b2f76d31..caca960b35 100644 --- a/giftcard/build.gradle +++ b/giftcard/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/googlepay/build.gradle b/googlepay/build.gradle index 60ca3a4987..23e0087e47 100644 --- a/googlepay/build.gradle +++ b/googlepay/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/gradle.properties b/gradle.properties index 1ee9c413e5..c0ea30aa34 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,8 +10,6 @@ android.useAndroidX=true android.nonTransitiveRClass=true # Disable some unused build features in the Android Gradle Plugin to improve build speed. -android.defaults.buildfeatures.aidl=false -android.defaults.buildfeatures.renderscript=false android.defaults.buildfeatures.resvalues=false android.defaults.buildfeatures.shaders=false @@ -38,3 +36,6 @@ org.gradle.configuration-cache=true # Kotlin test fixtures support android.experimental.enableTestFixturesKotlinSupport=true + +org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled +org.jetbrains.dokka.experimental.gradle.pluginMode.nowarn=true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a2bec63763..20aad7b290 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -9,11 +9,10 @@ version-code = "1" # Build script android-gradle-plugin = "9.2.1" -kotlin = "2.4.0" -ksp = "2.3.9" +kotlin = "2.3.21" +ksp = "2.3.8" dokka = "2.2.0" -hilt = "2.60" -compose-compiler = "1.5.15" +hilt = "2.59.2" # Code quality detekt = "1.23.8" @@ -23,31 +22,31 @@ sonarqube = "7.3.1.8318" binary-compatibility-validator = "0.18.1" # Android dependencies -activity = "1.13.0" +activity = "1.10.1" annotation = "1.10.0" appcompat = "1.7.1" autofill = "1.3.0" -browser = "1.10.0" +browser = "1.8.0" coroutines = "1.11.0" fragment = "1.8.9" -lifecycle = "2.11.0" -material = "1.14.0" +lifecycle = "2.8.7" +material = "1.13.0" recyclerview = "1.4.0" constraintlayout = "2.2.1" # Compose dependencies -compose-activity = "1.13.0" -compose-bom = "2026.06.01" -compose-hilt = "1.4.0" -compose-viewmodel = "2.11.0" +compose-activity = "1.10.1" +compose-bom = "2025.03.00" +compose-hilt = "1.2.0" +compose-viewmodel = "2.8.7" # Adyen dependencies adyen3ds2 = "2.2.27" # External dependencies -cash-app-pay = "2.6.0" -okhttp = "5.4.0" -play-services-wallet = "20.0.0" +cash-app-pay = "2.5.0" +okhttp = "4.12.0" +play-services-wallet = "19.4.0" twint = "8.0.0" wechat-pay = "6.8.0" @@ -55,26 +54,26 @@ wechat-pay = "6.8.0" leak-canary = "2.14" moshi-adapters = "1.15.2" moshi-kotlin-adapter = "1.15.2" -okhttp-logging = "5.4.0" +okhttp-logging = "4.12.0" preference = "1.2.1" -retrofit2 = "3.0.0" +retrofit2 = "2.12.0" # Tests arch-core-testing = "2.2.0" barista = "4.3.0" espresso = "3.7.0" -json = "20250517" +json = "20250107" jose4j = "0.9.6" -junit-jupiter = "6.1.1" +junit-jupiter = "5.14.4" konsist = "0.17.3" -lint = "32.2.1" -mockito-kotlin = "6.3.0" +lint = "31.13.2" +mockito-kotlin = "5.4.0" mockito = "5.23.0" robolectric = "4.16.1" test-ext = "1.3.0" test-rules = "1.7.0" turbine = "1.2.1" -uiautomator = "2.4.0" +uiautomator = "2.3.0" [libraries] @@ -101,9 +100,8 @@ compose-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } compose-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } +compose-lifecycle-runtime = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "lifecycle" } compose-viewmodel = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "compose-viewmodel" } -# this unused dependency is needed so that renovate can update the compose compiler version. More info in: https://github.com/renovatebot/renovate/issues/18354 -compose-compiler = { module = "androidx.compose.compiler:compiler", version.ref = "compose-compiler" } google-pay-play-services-coroutines = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-play-services", version.ref = "coroutines" } google-pay-play-services-wallet = { group = "com.google.android.gms", name = "play-services-wallet", version.ref = "play-services-wallet" } hilt = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" } @@ -175,13 +173,13 @@ mockito-android = ["mockito-android-main", "mockito-kotlin"] android-application = { id = "com.android.application", version.ref = "android-gradle-plugin" } android-library = { id = "com.android.library", version.ref = "android-gradle-plugin" } kotlin = { id = "kotlin" } -kotlin-android = { id = "kotlin-android" } +kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } kotlin-parcelize = { id = "kotlin-parcelize" } -jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } +dokka-javadoc = { id = "org.jetbrains.dokka-javadoc", version.ref = "dokka" } sonarqube = { id = "org.sonarqube", version.ref = "sonarqube" } binary-compatibility-validator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "binary-compatibility-validator" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a351597e62..5dd3c0121b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/ideal/build.gradle b/ideal/build.gradle index e838d0b77c..eebc4d5d4f 100644 --- a/ideal/build.gradle +++ b/ideal/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/instant/build.gradle b/instant/build.gradle index 93582e131b..4a2b6cb0b4 100644 --- a/instant/build.gradle +++ b/instant/build.gradle @@ -1,6 +1,5 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/issuer-list/build.gradle b/issuer-list/build.gradle index fa3fe1fcf6..b7b6af6bab 100644 --- a/issuer-list/build.gradle +++ b/issuer-list/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/mbway/build.gradle b/mbway/build.gradle index 2bc16bdc5e..494d818f0c 100644 --- a/mbway/build.gradle +++ b/mbway/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/meal-voucher-fr/build.gradle b/meal-voucher-fr/build.gradle index 2862605b79..17e70b9e82 100644 --- a/meal-voucher-fr/build.gradle +++ b/meal-voucher-fr/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/molpay/build.gradle b/molpay/build.gradle index b935fb7bd4..9cf619907c 100644 --- a/molpay/build.gradle +++ b/molpay/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/online-banking-core/build.gradle b/online-banking-core/build.gradle index 0ff5e4cbdc..652b5a36d4 100644 --- a/online-banking-core/build.gradle +++ b/online-banking-core/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/online-banking-cz/build.gradle b/online-banking-cz/build.gradle index 073afa8b7e..824a7676d4 100644 --- a/online-banking-cz/build.gradle +++ b/online-banking-cz/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/online-banking-jp/build.gradle b/online-banking-jp/build.gradle index ca2516b26f..0a885a1ca7 100644 --- a/online-banking-jp/build.gradle +++ b/online-banking-jp/build.gradle @@ -1,6 +1,5 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/online-banking-pl/build.gradle b/online-banking-pl/build.gradle index b0c1350a69..2bb4ad7b97 100644 --- a/online-banking-pl/build.gradle +++ b/online-banking-pl/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/online-banking-sk/build.gradle b/online-banking-sk/build.gradle index e005e381a8..195e2b107a 100644 --- a/online-banking-sk/build.gradle +++ b/online-banking-sk/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/openbanking/build.gradle b/openbanking/build.gradle index b7ad88e42a..59b72acb59 100644 --- a/openbanking/build.gradle +++ b/openbanking/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/paybybank-us/build.gradle b/paybybank-us/build.gradle index 69ec3c7a70..ff3d1bcbfa 100644 --- a/paybybank-us/build.gradle +++ b/paybybank-us/build.gradle @@ -1,6 +1,5 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/paybybank/build.gradle b/paybybank/build.gradle index e39bd2fd84..fe1adc52e1 100644 --- a/paybybank/build.gradle +++ b/paybybank/build.gradle @@ -1,6 +1,5 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/payeasy/build.gradle b/payeasy/build.gradle index 5b436e35c6..f227e20f5b 100644 --- a/payeasy/build.gradle +++ b/payeasy/build.gradle @@ -1,6 +1,5 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/payto/build.gradle b/payto/build.gradle index 54140a37c9..31fa3c8ab3 100644 --- a/payto/build.gradle +++ b/payto/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/qr-code/build.gradle b/qr-code/build.gradle index f7ca3fd1f1..15e7956822 100644 --- a/qr-code/build.gradle +++ b/qr-code/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/redirect/build.gradle b/redirect/build.gradle index 7a72b97a60..709103810e 100644 --- a/redirect/build.gradle +++ b/redirect/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/sepa/build.gradle b/sepa/build.gradle index fd76c289d3..43ea072aaf 100644 --- a/sepa/build.gradle +++ b/sepa/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/sessions-core/build.gradle b/sessions-core/build.gradle index dfa2829eb0..4e245bd906 100644 --- a/sessions-core/build.gradle +++ b/sessions-core/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/seven-eleven/build.gradle b/seven-eleven/build.gradle index c105ae979e..cacf0b798b 100644 --- a/seven-eleven/build.gradle +++ b/seven-eleven/build.gradle @@ -1,6 +1,5 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/test-core/build.gradle b/test-core/build.gradle index 9c47be7123..96068c4f51 100644 --- a/test-core/build.gradle +++ b/test-core/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android } apply from: "${rootDir}/config/gradle/codeQuality.gradle" diff --git a/twint-action/build.gradle b/twint-action/build.gradle index 9891e4ad78..49943fb046 100644 --- a/twint-action/build.gradle +++ b/twint-action/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/twint/build.gradle b/twint/build.gradle index 00dcd4742b..47361d0556 100644 --- a/twint/build.gradle +++ b/twint/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/ui-core/build.gradle b/ui-core/build.gradle index 1a1b20d91c..4ed25c9e1a 100644 --- a/ui-core/build.gradle +++ b/ui-core/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/upi/build.gradle b/upi/build.gradle index 8e55d5127c..36b4cac092 100644 --- a/upi/build.gradle +++ b/upi/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/voucher/build.gradle b/voucher/build.gradle index 65a102b761..cc0a78e5de 100644 --- a/voucher/build.gradle +++ b/voucher/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } diff --git a/wechatpay/build.gradle b/wechatpay/build.gradle index f1d00f53de..35a91926f8 100644 --- a/wechatpay/build.gradle +++ b/wechatpay/build.gradle @@ -8,7 +8,6 @@ plugins { alias libs.plugins.android.library - alias libs.plugins.kotlin.android alias libs.plugins.kotlin.parcelize } From b311d06715a780cd62f91de5db5220563b32348e Mon Sep 17 00:00:00 2001 From: josephj Date: Fri, 17 Jul 2026 18:03:27 +0200 Subject: [PATCH 3/6] Align v5 checks with upgraded toolchain --- .editorconfig | 1 + .../ActionHandlingPaymentMethodConfigurationBuilder.kt | 1 + .../core/internal/BaseConfigurationBuilder.kt | 6 +++++- .../components/core/internal/util/CurrencyUtilsTest.kt | 10 ---------- .../giftcard/SessionsGiftCardComponentCallback.kt | 1 + .../core/internal/SessionComponentEventHandlerTest.kt | 10 ++++++++-- .../ui/core/internal/ui/view/AdyenTextInputEditText.kt | 3 --- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.editorconfig b/.editorconfig index 2c5125ea63..e1bdd60a9e 100644 --- a/.editorconfig +++ b/.editorconfig @@ -479,6 +479,7 @@ ktlint_standard_function-signature = disabled ktlint_function_naming_ignore_when_annotated_with = Composable ktlint_standard_function-expression-body = disabled ktlint_standard_class-signature = disabled +ktlint_standard_blank-line-between-when-conditions = disabled max_line_length = 120 ij_kotlin_align_in_columns_case_branch = false ij_kotlin_align_multiline_binary_operation = false diff --git a/action-core/src/main/java/com/adyen/checkout/action/core/internal/ActionHandlingPaymentMethodConfigurationBuilder.kt b/action-core/src/main/java/com/adyen/checkout/action/core/internal/ActionHandlingPaymentMethodConfigurationBuilder.kt index ea1aed04ac..57b61187f4 100644 --- a/action-core/src/main/java/com/adyen/checkout/action/core/internal/ActionHandlingPaymentMethodConfigurationBuilder.kt +++ b/action-core/src/main/java/com/adyen/checkout/action/core/internal/ActionHandlingPaymentMethodConfigurationBuilder.kt @@ -28,6 +28,7 @@ import java.util.Locale "UNCHECKED_CAST", "ktlint:standard:discouraged-comment-location", "ktlint:standard:type-parameter-list-spacing", + "ktlint:standard:kdoc", ) abstract class ActionHandlingPaymentMethodConfigurationBuilder< ConfigurationT : Configuration, diff --git a/components-core/src/main/java/com/adyen/checkout/components/core/internal/BaseConfigurationBuilder.kt b/components-core/src/main/java/com/adyen/checkout/components/core/internal/BaseConfigurationBuilder.kt index 615e7dab71..f85118b467 100644 --- a/components-core/src/main/java/com/adyen/checkout/components/core/internal/BaseConfigurationBuilder.kt +++ b/components-core/src/main/java/com/adyen/checkout/components/core/internal/BaseConfigurationBuilder.kt @@ -10,7 +10,11 @@ import com.adyen.checkout.core.exception.CheckoutException import com.adyen.checkout.core.internal.util.LocaleUtil import java.util.Locale -@Suppress("ktlint:standard:discouraged-comment-location", "ktlint:standard:type-parameter-list-spacing") +@Suppress( + "ktlint:standard:discouraged-comment-location", + "ktlint:standard:type-parameter-list-spacing", + "ktlint:standard:kdoc", +) abstract class BaseConfigurationBuilder< ConfigurationT : Configuration, BuilderT : BaseConfigurationBuilder diff --git a/components-core/src/test/java/com/adyen/checkout/components/core/internal/util/CurrencyUtilsTest.kt b/components-core/src/test/java/com/adyen/checkout/components/core/internal/util/CurrencyUtilsTest.kt index 3e75e411cb..a8e950440d 100644 --- a/components-core/src/test/java/com/adyen/checkout/components/core/internal/util/CurrencyUtilsTest.kt +++ b/components-core/src/test/java/com/adyen/checkout/components/core/internal/util/CurrencyUtilsTest.kt @@ -28,16 +28,6 @@ internal class CurrencyUtilsTest { assertEquals("€ 10,75", formattedAmount) } - @Test - fun `format amount with ar-LB locale`() { - val amount = Amount("LBP", 10050L) - val locale = Locale.forLanguageTag("ar-LB") - - val formattedAmount = CurrencyUtils.formatAmount(amount, locale) - - assertEquals("ل.ل.\u200F ١٠٠٫٥٠", formattedAmount) - } - @Test fun `format amount with en-US locale`() { val amount = Amount("USD", 220000L) diff --git a/giftcard/src/main/java/com/adyen/checkout/giftcard/SessionsGiftCardComponentCallback.kt b/giftcard/src/main/java/com/adyen/checkout/giftcard/SessionsGiftCardComponentCallback.kt index e74084ed62..988adee71f 100644 --- a/giftcard/src/main/java/com/adyen/checkout/giftcard/SessionsGiftCardComponentCallback.kt +++ b/giftcard/src/main/java/com/adyen/checkout/giftcard/SessionsGiftCardComponentCallback.kt @@ -34,6 +34,7 @@ interface SessionsGiftCardComponentCallback : SessionComponentCallback>>() sessionComponentEventHandler.onPaymentComponentEvent( @@ -204,7 +206,11 @@ internal class SessionComponentEventHandlerTest( inner class ActionDetailsTest { @Test - fun `then loading state should be propagated properly`() { + fun `then loading state should be propagated properly`() = runTest { + whenever(sessionInteractor.onDetailsCallRequested(any(), any(), any())) doReturn + SessionCallResult.Details.Error( + IllegalStateException("Unexpected action response during additional details"), + ) val callback = mock>>() sessionComponentEventHandler.onPaymentComponentEvent( diff --git a/ui-core/src/main/java/com/adyen/checkout/ui/core/internal/ui/view/AdyenTextInputEditText.kt b/ui-core/src/main/java/com/adyen/checkout/ui/core/internal/ui/view/AdyenTextInputEditText.kt index f9c363bab2..417613b553 100644 --- a/ui-core/src/main/java/com/adyen/checkout/ui/core/internal/ui/view/AdyenTextInputEditText.kt +++ b/ui-core/src/main/java/com/adyen/checkout/ui/core/internal/ui/view/AdyenTextInputEditText.kt @@ -28,9 +28,6 @@ open class AdyenTextInputEditText @JvmOverloads constructor( open val rawValue: String get() = text?.toString() ?: "" - /** - * Constructor of AdyenTextInputEditText. - */ init { this.addTextChangedListener(textWatcher) } From b6b88d3af0f8f00b4c9bd00470e8756a5e75f5c7 Mon Sep 17 00:00:00 2001 From: josephj Date: Fri, 17 Jul 2026 18:03:44 +0200 Subject: [PATCH 4/6] Handle predictive back in v5 example app --- .../adyen/checkout/example/ui/bacs/BacsFragment.kt | 12 ++++++++---- .../adyen/checkout/example/ui/card/CardActivity.kt | 12 +++++++----- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/example-app/src/main/java/com/adyen/checkout/example/ui/bacs/BacsFragment.kt b/example-app/src/main/java/com/adyen/checkout/example/ui/bacs/BacsFragment.kt index 5189aeead1..9bed447f8d 100644 --- a/example-app/src/main/java/com/adyen/checkout/example/ui/bacs/BacsFragment.kt +++ b/example-app/src/main/java/com/adyen/checkout/example/ui/bacs/BacsFragment.kt @@ -14,6 +14,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Toast +import androidx.activity.addCallback import androidx.core.os.bundleOf import androidx.core.view.isVisible import androidx.fragment.app.FragmentManager @@ -77,10 +78,13 @@ class BacsFragment : BottomSheetDialogFragment() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { return object : BottomSheetDialog(requireContext(), theme) { - @Suppress("OVERRIDE_DEPRECATION", "DEPRECATION") - override fun onBackPressed() { - if (bacsComponent?.handleBackPress() == true) return - super.onBackPressed() + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + onBackPressedDispatcher.addCallback(this@BacsFragment) { + if (bacsComponent?.handleBackPress() == true) return@addCallback + isEnabled = false + onBackPressedDispatcher.onBackPressed() + } } } } diff --git a/example-app/src/main/java/com/adyen/checkout/example/ui/card/CardActivity.kt b/example-app/src/main/java/com/adyen/checkout/example/ui/card/CardActivity.kt index 37503dcb0e..a7c304d42f 100644 --- a/example-app/src/main/java/com/adyen/checkout/example/ui/card/CardActivity.kt +++ b/example-app/src/main/java/com/adyen/checkout/example/ui/card/CardActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.util.Log import android.view.MenuItem import android.widget.Toast +import androidx.activity.addCallback import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.core.view.isVisible @@ -61,6 +62,12 @@ class CardActivity : AppCompatActivity(), AddressLookupCallback { launch { cardViewModel.events.collect(::onCardEvent) } } } + + onBackPressedDispatcher.addCallback(this) { + if (cardComponent?.handleBackPress() == true) return@addCallback + isEnabled = false + onBackPressedDispatcher.onBackPressed() + } } override fun onOptionsItemSelected(item: MenuItem): Boolean { @@ -168,11 +175,6 @@ class CardActivity : AppCompatActivity(), AddressLookupCallback { cardViewModel.onAddressLookupQueryChanged(query) } - override fun onBackPressed() { - if (cardComponent?.handleBackPress() == true) return - super.onBackPressed() - } - override fun onDestroy() { super.onDestroy() cardComponent = null From 90b10d4b18c8b44d7e07b8200404ff94a768356a Mon Sep 17 00:00:00 2001 From: josephj Date: Fri, 17 Jul 2026 18:04:03 +0200 Subject: [PATCH 5/6] Regenerate dependency verification metadata --- gradle/verification-metadata.xml | 23021 ++++++----------------------- 1 file changed, 4343 insertions(+), 18678 deletions(-) diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 6dca67562d..7879cbe232 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -20,14 +20,6 @@ - - - - - - - - @@ -36,102 +28,16 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -140,46 +46,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -188,175 +54,60 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -371,18 +122,7 @@ - - - - - - - - - - - @@ -403,30 +143,17 @@ - - - - - - - - - - - - - + + + - - + + - - - - - - + + + @@ -434,59 +161,19 @@ - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - @@ -504,34 +191,13 @@ + + + - - - - - - - - - - - - - - - - - - - - - - - - @@ -549,18 +215,10 @@ - - - - - - - - @@ -617,44 +275,12 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - + + @@ -674,9 +300,6 @@ - - - @@ -693,9 +316,6 @@ - - - @@ -773,20740 +393,6816 @@ - - - + + + - - - + + + - - - + + + - - - - + + - - - + + + - - - + + + - - - - + + - - - + + + - - - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + + + - - - + + + - - + + - - - + + + - - + + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - - + + - - - + + + - - - - + + - - - + + + - - - - + + - - - + + + - - - - + + - - - - - - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + + + - - - + + + - - + + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + + + - - - + + + - - + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - - + + - - - + + + - - - - + + - - - + + + - - - - + + - - - + + + - - - - + + - - - + + + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - - + + - - - + + + - - - - + + - - - + + + - - - - + + - - - + + + - - - - + + - - - + + + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - - - - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - - - - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - - - - - - + + - - - - - - + + + - - - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - + + + - - - - - + + + + - - - + + + - - + + + + - - + + - - - - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - - + + - - - + + + - - - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + + + + - - - + + + - - - + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + + + - - - + + + - - + + + + - - - + + + - - + + + + - - - + + + - - + + + + - - - + + + - - + + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + + + - - - + + + - - + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + + + - - - + + + - - + + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + + + - - - + + + - - + + + + - - - + + + - - - + + + + + + - - - + + + + + + - - - + + + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + + + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + + + - - - + + + - - + + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - - - - - + + - - - + + + - - - - - + + - - - + + + - - + + - - - + + + - - - - - + + - - - - - - + + + - - + + - - - + + + - - - - - + + - - - - - - + + + - - + + - - - + + + - - - - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - - + + - - - + + + - - + + - - - + + + - - - - + + - - - + + + - - - - + + - - - + + + + + + - - - + + + + + + - - - + + + + + + - - - + + + + + + - - - + + + + + + - - - + + + - - - + + + - - - + + + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + + + - - - + + + - - + + + + - - - + + + - - + + + + - - - + + + - - + + + + - - - + + + - - + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + + + - - - + + + - - + + - - - + + + + + + - - + + + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - - + + - - - + + + - - - - + + - - - + + + - - - - + + - - - + + + - - - - + + - - - + + + - - - - + + - - - - - - + + + - - - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - + + + - - - - + + - - - + + + - - - - + + - - - + + + - - - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - - + + - - - + + + - - - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - - - + + - - - + + + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + + + - - - + + + - - + + + + - - - + + + - - + + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - - - - - + + + - - - - - - + + + - - - + + + - - - + + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - - + + - - - + + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + @@ -21533,14 +7229,6 @@ - - - - - - - - @@ -21564,24 +7252,11 @@ - - - - - - - - - - - - - @@ -21590,61 +7265,51 @@ - - - + + + - - - + + + - - - + + + - - - - + + - - - - - - + + + - - - - + + - - - + + + - - + + - - - + + + - - + + - - - - - - + + + @@ -21662,20 +7327,20 @@ - - - + + + - - + + - - - + + + - - + + From d5e44abdd8c413fd89809d535014c0d4282718b9 Mon Sep 17 00:00:00 2001 From: AdyenAutomationBot <38424300+AdyenAutomationBot@users.noreply.github.com> Date: Fri, 17 Jul 2026 22:07:07 +0000 Subject: [PATCH 6/6] Update verification metadata [skip update-verification-metadata] --- gradle/verification-metadata.xml | 67 ++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 7879cbe232..0b647748c6 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -2242,6 +2242,9 @@ + + + @@ -2731,6 +2734,11 @@ + + + + + @@ -3502,11 +3510,26 @@ + + + + + + + + + + + + + + + @@ -5997,6 +6020,14 @@ + + + + + + + + @@ -6538,16 +6569,31 @@ + + + + + + + + + + + + + + + @@ -6836,21 +6882,33 @@ + + + + + + + + + + + + @@ -6859,13 +6917,22 @@ + + + + + + + + +