diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..877bab829 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,15 @@ +version: 2 +updates: + - package-ecosystem: github-actions + labels: [] + directory: / + target-branch: dev + schedule: + interval: monthly + + - package-ecosystem: npm + labels: [] + directory: / + target-branch: dev + schedule: + interval: monthly diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index e9c9153d9..000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: Build aapt2 - -on: - push: - branches: - - main - - dev - workflow_dispatch: - inputs: - logLevel: - description: 'Reason' - required: false - default: 'Update package' - -jobs: - build: - name: build - runs-on: ubuntu-latest - permissions: - id-token: write - attestations: write - strategy: - matrix: - target_arch: [x86_64, x86, arm64-v8a, armeabi-v7a] - fail-fast: false - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - submodules: 'true' - - - uses: nttld/setup-ndk@v1 - id: setup-ndk - with: - ndk-version: r23c - add-to-path: false - - run: ./build.sh ${{ matrix.target_arch }} - env: - NDK_TOOLCHAIN: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64 - - - name: Attest build provenance - uses: actions/attest-build-provenance@v1 - with: - subject-name: dist-${{ matrix.target_arch }} - subject-path: dist - - - name: Upload artifacts - uses: actions/upload-artifact@v3 - with: - name: dist-${{ matrix.target_arch }} - path: dist diff --git a/.github/workflows/build_pull_request.yml b/.github/workflows/build_pull_request.yml new file mode 100644 index 000000000..2a1f35050 --- /dev/null +++ b/.github/workflows/build_pull_request.yml @@ -0,0 +1,48 @@ +name: Build pull request + +on: + workflow_dispatch: + pull_request: + branches: + - dev + +jobs: + build: + name: Build + runs-on: ubuntu-latest + strategy: + matrix: + target_arch: [x86_64, x86, arm64-v8a, armeabi-v7a] + fail-fast: false + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: 'true' + + - name: Setup NDK + uses: nttld/setup-ndk@v1 + id: setup-ndk + with: + ndk-version: r27c + add-to-path: false + + - name: Get protoc + run: | + wget https://github.com/protocolbuffers/protobuf/releases/download/v21.12/protoc-21.12-linux-x86_64.zip + sudo unzip -j protoc-*.zip bin/protoc -d /usr/local/bin/ + + - name: Patch + run: bash ./patch.sh + + - name: Compile aapt2 + env: + ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }} + run: bash ./build.sh ${{ matrix.target_arch }} + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: aapt2-${{ matrix.target_arch }} + path: ${{ github.workspace }}/build/bin/aapt2-* + if-no-files-found: error diff --git a/.github/workflows/open_pull_request.yml b/.github/workflows/open_pull_request.yml new file mode 100644 index 000000000..a6d47f349 --- /dev/null +++ b/.github/workflows/open_pull_request.yml @@ -0,0 +1,29 @@ +name: Open a PR to main + +on: + push: + branches: + - dev + workflow_dispatch: + +env: + MESSAGE: Merge branch `${{ github.head_ref || github.ref_name }}` to `main` + +permissions: + pull-requests: write + +jobs: + pull-request: + name: Open pull request + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Open pull request + uses: repo-sync/pull-request@v2 + with: + destination_branch: 'main' + pr_title: 'chore: ${{ env.MESSAGE }}' + pr_body: 'This pull request will ${{ env.MESSAGE }}.' + pr_draft: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..197f67808 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,97 @@ +name: Release + +on: + workflow_dispatch: + push: + branches: + - main + - dev + +jobs: + build: + name: Build + runs-on: ubuntu-latest + strategy: + matrix: + target_arch: [x86_64, x86, arm64-v8a, armeabi-v7a] + fail-fast: false + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: 'true' + + - name: Setup NDK + uses: nttld/setup-ndk@v1 + id: setup-ndk + with: + ndk-version: r27c + add-to-path: false + + - name: Get protoc + run: | + wget https://github.com/protocolbuffers/protobuf/releases/download/v21.12/protoc-21.12-linux-x86_64.zip + sudo unzip -j protoc-*.zip bin/protoc -d /usr/local/bin/ + + - name: Patch + run: bash ./patch.sh + + - name: Compile aapt2 + env: + ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }} + run: bash ./build.sh ${{ matrix.target_arch }} + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: aapt2-${{ matrix.target_arch }} + path: ${{ github.workspace }}/build/bin/aapt2-* + if-no-files-found: error + + release: + needs: build + runs-on: ubuntu-latest + permissions: + id-token: write + contents: write + attestations: write + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + # Make sure the release step uses its own credentials: + # https://github.com/cycjimmy/semantic-release-action#private-packages + persist-credentials: false + + - name: Download all built artifacts + uses: actions/download-artifact@v4 + with: + path: ${{ github.workspace }}/build/bin/ + merge-multiple: true + + - name: Generate attestations + if: ${{ steps.release.outputs.release_created }} + uses: actions/attest-build-provenance@v2 + with: + subject-path: ${{ github.workspace }}/build/bin/aapt2-* + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "lts/*" + cache: 'npm' + + - name: Install dependencies + run: npm install + + - name: Import GPG key + uses: crazy-max/ghaction-import-gpg@v6 + with: + gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} + passphrase: ${{ secrets.GPG_PASSPHRASE }} + fingerprint: ${{ vars.GPG_FINGERPRINT }} + + - name: Release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: npm exec semantic-release diff --git a/.gitignore b/.gitignore index 1cb83798b..4ed7fc082 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ bin/ -build/ \ No newline at end of file +build/ +# For CI +artifacts/ diff --git a/.gitmodules b/.gitmodules index a9906dbb9..e19096460 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,15 +1,15 @@ [submodule "src/expat"] shallow = true path = src/expat - url = https://android.googlesource.com/platform/external/expat.git + url = https://android.googlesource.com/platform/external/expat [submodule "src/fmtlib"] shallow = true path = src/fmtlib - url = https://android.googlesource.com/platform/external/fmtlib.git + url = https://android.googlesource.com/platform/external/fmtlib [submodule "src/boringssl"] shallow = true path = src/boringssl - url = https://boringssl.googlesource.com/boringssl.git + url = https://android.googlesource.com/platform/external/boringssl [submodule "src/incremental_delivery"] shallow = true path = src/incremental_delivery @@ -21,15 +21,11 @@ [submodule "src/libpng"] shallow = true path = src/libpng - url = https://android.googlesource.com/platform/external/libpng.git + url = https://android.googlesource.com/platform/external/libpng [submodule "src/pcre"] shallow = true path = src/pcre - url = https://android.googlesource.com/platform/external/pcre.git -[submodule "src/zopfli"] - shallow = true - path = src/zopfli - url = https://android.googlesource.com/platform/external/zopfli + url = https://android.googlesource.com/platform/external/pcre [submodule "src/protobuf"] shallow = true path = src/protobuf @@ -37,15 +33,15 @@ [submodule "src/logging"] shallow = true path = src/logging - url = https://android.googlesource.com/platform/system/logging.git + url = https://android.googlesource.com/platform/system/logging [submodule "src/selinux"] shallow = true path = src/selinux - url = https://android.googlesource.com/platform/external/selinux.git + url = https://android.googlesource.com/platform/external/selinux [submodule "src/core"] shallow = true path = src/core - url = https://android.googlesource.com/platform/system/core.git + url = https://android.googlesource.com/platform/system/core [submodule "src/base"] shallow = true path = src/base @@ -54,3 +50,23 @@ shallow = true path = src/libziparchive url = https://android.googlesource.com/platform/system/libziparchive +[submodule "src/soong"] + shallow = true + path = src/soong + url = https://android.googlesource.com/platform/build/soong +[submodule "src/unwinding"] + shallow = true + path = src/unwinding + url = https://android.googlesource.com/platform/system/unwinding +[submodule "src/jsoncpp"] + shallow = true + path = src/jsoncpp + url = https://android.googlesource.com/platform/external/jsoncpp +[submodule "src/googletest"] + shallow = true + path = src/googletest + url = https://android.googlesource.com/platform/external/googletest +[submodule "src/native"] + shallow = true + path = src/native + url = https://android.googlesource.com/platform/frameworks/native diff --git a/.releaserc b/.releaserc new file mode 100644 index 000000000..8040acb96 --- /dev/null +++ b/.releaserc @@ -0,0 +1,45 @@ +{ + "branches": [ + "main", + { + "name": "dev", + "prerelease": true + } + ], + "plugins": [ + [ + "@semantic-release/commit-analyzer", { + "releaseRules": [ + { "type": "build", "scope": "Needs bump", "release": "patch" } + ] + } + ], + "@semantic-release/release-notes-generator", + "@semantic-release/changelog", + [ + "@semantic-release/git", + { + "assets": ["CHANGELOG.md", "VERSION"], + "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}" + } + ], + [ + "@saithodev/semantic-release-backmerge", + { + backmergeBranches: [{"from": "main", "to": "dev"}], + clearWorkspace: true + } + ], + [ + "@semantic-release/github", + { + successComment: false, + assets: [ + { + "path": "build/bin/aapt-*" + } + ] + } + ] + ] +} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..21da1768f --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,55 @@ +# 1.0.0 (2025-08-14) + + +### Bug Fixes + +* `basic_string` inline templates patch ([#9](https://github.com/Taknok/aapt2/issues/9)) ([b907424](https://github.com/Taknok/aapt2/commit/b907424500fa6fd7854709f6da7dda31fdd27895)) +* Add basic_string inline templates to fix args segmentation fault ([1ad472f](https://github.com/Taknok/aapt2/commit/1ad472f5009d0751a352299e54bf375ea0e65ba3)) +* Add ending newlines to fix corrupt aapt2 and androidfw patches ([93324ca](https://github.com/Taknok/aapt2/commit/93324ca91e4fda47c96e314c4fcb0c01525f489b)) +* **build:** add missing patch ([0f54c42](https://github.com/Taknok/aapt2/commit/0f54c42919a3fd0e57106875d2fb2a34ab732987)) +* Specify minimum alignment for `ResStringPool_span` to fix SIGBUS on ARMv7 ([8285e73](https://github.com/Taknok/aapt2/commit/8285e73cd789e7f9d1c7ade968c54b61b5292a3d)) +* Typo on unzip option ([1adcce5](https://github.com/Taknok/aapt2/commit/1adcce5558d1e9885f79a6d2c0b4c42822766459)) + + +### Features + +* improve `aapt2.cmake` [skip ci] ([a2d190f](https://github.com/Taknok/aapt2/commit/a2d190f1cfaaacf8c0bd58dab77150750ac53cb1)) +* license file [skip ci] ([fa1b651](https://github.com/Taknok/aapt2/commit/fa1b651994ba3fd3bfed29eedaf61f8008702bd2)) +* readme file [skip ci] ([2896964](https://github.com/Taknok/aapt2/commit/2896964ac4ae62fc16f8b8dda43393a9736d2f9f)) + +# 1.0.0 (2025-07-14) + + +### Bug Fixes + +* `basic_string` inline templates patch ([#9](https://github.com/Taknok/aapt2/issues/9)) ([b907424](https://github.com/Taknok/aapt2/commit/b907424500fa6fd7854709f6da7dda31fdd27895)) +* Add basic_string inline templates to fix args segmentation fault ([1ad472f](https://github.com/Taknok/aapt2/commit/1ad472f5009d0751a352299e54bf375ea0e65ba3)) +* Add ending newlines to fix corrupt aapt2 and androidfw patches ([93324ca](https://github.com/Taknok/aapt2/commit/93324ca91e4fda47c96e314c4fcb0c01525f489b)) +* **build:** add missing patch ([0f54c42](https://github.com/Taknok/aapt2/commit/0f54c42919a3fd0e57106875d2fb2a34ab732987)) +* Specify minimum alignment for `ResStringPool_span` to fix SIGBUS on ARMv7 ([8285e73](https://github.com/Taknok/aapt2/commit/8285e73cd789e7f9d1c7ade968c54b61b5292a3d)) +* Typo on unzip option ([1adcce5](https://github.com/Taknok/aapt2/commit/1adcce5558d1e9885f79a6d2c0b4c42822766459)) + + +### Features + +* improve `aapt2.cmake` [skip ci] ([a2d190f](https://github.com/Taknok/aapt2/commit/a2d190f1cfaaacf8c0bd58dab77150750ac53cb1)) +* license file [skip ci] ([fa1b651](https://github.com/Taknok/aapt2/commit/fa1b651994ba3fd3bfed29eedaf61f8008702bd2)) +* readme file [skip ci] ([2896964](https://github.com/Taknok/aapt2/commit/2896964ac4ae62fc16f8b8dda43393a9736d2f9f)) + +# 1.0.0 (2025-07-13) + + +### Bug Fixes + +* `basic_string` inline templates patch ([#9](https://github.com/Taknok/aapt2/issues/9)) ([b907424](https://github.com/Taknok/aapt2/commit/b907424500fa6fd7854709f6da7dda31fdd27895)) +* Add basic_string inline templates to fix args segmentation fault ([1ad472f](https://github.com/Taknok/aapt2/commit/1ad472f5009d0751a352299e54bf375ea0e65ba3)) +* Add ending newlines to fix corrupt aapt2 and androidfw patches ([93324ca](https://github.com/Taknok/aapt2/commit/93324ca91e4fda47c96e314c4fcb0c01525f489b)) +* **build:** add missing patch ([0f54c42](https://github.com/Taknok/aapt2/commit/0f54c42919a3fd0e57106875d2fb2a34ab732987)) +* Specify minimum alignment for `ResStringPool_span` to fix SIGBUS on ARMv7 ([8285e73](https://github.com/Taknok/aapt2/commit/8285e73cd789e7f9d1c7ade968c54b61b5292a3d)) + + +### Features + +* improve `aapt2.cmake` [skip ci] ([a2d190f](https://github.com/Taknok/aapt2/commit/a2d190f1cfaaacf8c0bd58dab77150750ac53cb1)) +* license file [skip ci] ([fa1b651](https://github.com/Taknok/aapt2/commit/fa1b651994ba3fd3bfed29eedaf61f8008702bd2)) +* readme file [skip ci] ([2896964](https://github.com/Taknok/aapt2/commit/2896964ac4ae62fc16f8b8dda43393a9736d2f9f)) diff --git a/CMakeLists.txt b/CMakeLists.txt index dd4e11217..16bcf1167 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,9 @@ cmake_minimum_required(VERSION 3.14.2) project(sdk-tools) +set(CMAKE_C_STANDARD 11) +set(CMAKE_CXX_STANDARD 20) + if(ANDROID_ABI STREQUAL "arm64-v8a" OR ANDROID_ABI STREQUAL "armeabi-v7a") enable_language(ASM) elseif(ANDROID_ABI STREQUAL "x86_64" OR ANDROID_ABI STREQUAL "x86") @@ -16,31 +19,29 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcolor-diagnostics -fPIC -Wno-attribute set(CMAKE_EXE_LINKER_FLAGS "-static") # platform tools version -# see the patches/other/platform_tools_version.h -set(TOOLS_VERSION 33.0.1) +# see the misc/platform_tools_version.h +set(TOOLS_VERSION 35.0.2) set(SRC ${PROJECT_SOURCE_DIR}/src) # 64-bit off_t for lseek. add_definitions(-D_FILE_OFFSET_BITS=64) -if(NOT DEFINED PROTOC_PATH) - message(FATAL_ERROR "PROTOC_PATH undefined, please make sure to build and install protoc from the cloned submodule." ) -endif() - -set(PROTOC_COMPILER ${PROTOC_PATH}) - -if(NOT EXISTS ${PROTOC_COMPILER}) - unset(PROTOC_PATH CACHE) - message(FATAL_ERROR "Invalid protoc: ${PROTOC_COMPILER}, please check if the path is correct") -endif() +# protoc options +set(protobuf_BUILD_TESTS OFF CACHE BOOL "" FORCE) +set(protobuf_BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) +set(protobuf_BUILD_PROTOC_BINARIES OFF CACHE BOOL "" FORCE) +set(protobuf_BUILD_LIBPROTOC ON CACHE BOOL "" FORCE) # thrid-party libraries add_subdirectory(src/boringssl EXCLUDE_FROM_ALL) add_subdirectory(src/fmtlib EXCLUDE_FROM_ALL) add_subdirectory(src/pcre EXCLUDE_FROM_ALL) -add_subdirectory(src/expat EXCLUDE_FROM_ALL) -add_subdirectory(src/zopfli EXCLUDE_FROM_ALL) -add_subdirectory(src/protobuf/cmake EXCLUDE_FROM_ALL) +add_subdirectory(src/libpng EXCLUDE_FROM_ALL) +add_subdirectory(src/jsoncpp EXCLUDE_FROM_ALL) +add_subdirectory(src/expat/expat EXCLUDE_FROM_ALL) +add_subdirectory(src/protobuf EXCLUDE_FROM_ALL) +add_subdirectory(src/googletest EXCLUDE_FROM_ALL) # building sdk-tools -add_subdirectory(cmake) \ No newline at end of file +add_subdirectory(lib) +add_subdirectory(build-tools) diff --git a/README.md b/README.md index 97b5ef125..b99082dc8 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,46 @@ # Aapt2 package build workflow -[![build workflow](https://github.com/revanced/aapt2/actions/workflows/build.yml/badge.svg)](https://github.com/revanced/aapt2/actions/workflows/build.yml) +[![build workflow](../../actions/workflows/release.yml/badge.svg)](../../actions/workflows/release.yml) This repository contains a workflow to build the aapt2 binaries for Android. + +Currently, the submodules are pinned to platform-tools 35.0.2 of AOSP source code. `src/base` example: +https://android.googlesource.com/platform/frameworks/base/+/refs/tags/platform-tools-35.0.2 + +# Build + +## Clone with submodules +```bash +git clone --recurse-submodules --shallow-submodules --depth 1 https://github.com/ReVanced/aapt2 +``` + +## Protoc dependency + +`protoc` needs to be installed, the current required version is 21.12. Install it with: +```bash +wget https://github.com/protocolbuffers/protobuf/releases/download/v21.12/protoc-21.12-linux-x86_64.zip +sudo unzip -p protoc-*.zip bin/protoc -d /usr/local/bin/ +``` + +The required version can be identified with : +```bash +grep PROTOC_VERSION src/protobuf/protobuf_version.bzl +``` + +## Apply patch +```bash +bash ./patch.sh +``` + +## Build the binary + +Supported arch are 'x86_64', 'x86', 'arm64-v8a' & 'armeabi-v7a' +```bash +ANDROID_NDK="$HOME/Android/Sdk/ndk/" bash ./build.sh arm64-v8a # Build output in build/bin/aapt-* +``` + +# Credits + +This repository is made with the help of: +- [lzhiyong](https://github.com/lzhiyong/android-sdk-tools) +- [iBotPeaches](https://github.com/aosp-mirror/platform_frameworks_base/compare/main...iBotPeaches:platform_frameworks_base:apktool_14.0.0) for [apktool_ibotpeaches.patch](patches/apktool_ibotpeaches.patch]) diff --git a/build-tools/CMakeLists.txt b/build-tools/CMakeLists.txt new file mode 100644 index 000000000..6cd5c5ea6 --- /dev/null +++ b/build-tools/CMakeLists.txt @@ -0,0 +1,5 @@ +project(build-tools) +# executable files output path +set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin/${PROJECT_NAME}) + +include(aapt2.cmake) diff --git a/build-tools/aapt2.cmake b/build-tools/aapt2.cmake new file mode 100644 index 000000000..b6ccc5061 --- /dev/null +++ b/build-tools/aapt2.cmake @@ -0,0 +1,202 @@ +# ========================= aapt2 proto ============================ +set(AAPT2_PROTO_SRC) +set(AAPT2_PROTO_HDRS) +set(AAPT2_PROTO_DIR ${SRC}/base/tools/aapt2) + +file(GLOB_RECURSE PROTO_FILES ${AAPT2_PROTO_DIR}/*.proto) + +find_package(Protobuf) + +if(NOT EXISTS ${Protobuf_PROTOC_EXECUTABLE}) + message(FATAL_ERROR "Invalid protoc: ${Protobuf_PROTOC_EXECUTABLE}") +endif() + + +foreach(proto ${PROTO_FILES}) + get_filename_component(FIL_WE ${proto} NAME_WE) + + # Execute the protoc command to generate the proto targets for host arch. + execute_process( + COMMAND ${Protobuf_PROTOC_EXECUTABLE} ${proto} + --proto_path=${AAPT2_PROTO_DIR} + --cpp_out=${AAPT2_PROTO_DIR} + COMMAND_ECHO STDOUT + RESULT_VARIABLE RESULT + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + ) + + if(RESULT EQUAL 0) + message(STATUS "generate cpp file ${TARGET_CPP_FILE}") + message(STATUS "generate head file ${TARGET_HEAD_FILE}") + endif() + + set(TARGET_CPP_FILE "${AAPT2_PROTO_DIR}/${FIL_WE}.pb.cc") + set(TARGET_HEAD_FILE "${AAPT2_PROTO_DIR}/${FIL_WE}.pb.h") + + if(EXISTS ${TARGET_CPP_FILE} AND EXISTS ${TARGET_HEAD_FILE}) + list(APPEND AAPT2_PROTO_SRC ${TARGET_CPP_FILE}) + list(APPEND AAPT2_PROTO_HDRS ${TARGET_HEAD_FILE}) + endif() +endforeach() + +set_source_files_properties(${AAPT2_PROTO_SRC} PROPERTIES GENERATED TRUE) +set_source_files_properties(${AAPT2_PROTO_HDRS} PROPERTIES GENERATED TRUE) + +set_source_files_properties(${AAPT2_PROTO_SRC} ${AAPT2_PROTO_HDRS} + PROPERTIES GENERATED TRUE) +# ========================= aapt2 proto ============================ + +set(COMPILE_FLAGS + -Wno-unused-parameter + -Wno-missing-field-initializers + -fno-exceptions + -fno-rtti) + +set(INCLUDES + ${SRC}/base/tools/aapt2 + ${SRC}/protobuf/src + ${SRC}/logging/liblog/include + ${SRC}/expat/lib + ${SRC}/fmtlib/include + ${SRC}/native/include + ${SRC}/libpng + ${SRC}/libbase/include + ${SRC}/base/libs/androidfw/include + ${SRC}/base/libs/androidfw/include_pathutils + ${SRC}/base/cmds/idmap2/libidmap2_policies/include + ${SRC}/core/libsystem/include + ${SRC}/core/libutils/include + ${SRC}/googletest/googletest/include + ${SRC}/libziparchive/include + ${SRC}/soong/cc/libbuildversion/include + ${SRC}/incremental_delivery/incfs/util/include + ${SRC}/incremental_delivery/incfs/kernel-headers + ) + +set(TOOL_SOURCE + ${SRC}/base/tools/aapt2/cmd/ApkInfo.cpp + ${SRC}/base/tools/aapt2/cmd/Command.cpp + ${SRC}/base/tools/aapt2/cmd/Compile.cpp + ${SRC}/base/tools/aapt2/cmd/Convert.cpp + ${SRC}/base/tools/aapt2/cmd/Diff.cpp + ${SRC}/base/tools/aapt2/cmd/Dump.cpp + ${SRC}/base/tools/aapt2/cmd/Link.cpp + ${SRC}/base/tools/aapt2/cmd/Optimize.cpp + ${SRC}/base/tools/aapt2/cmd/Util.cpp + ) + +# Build the host static library: aapt2 +add_library(libaapt2 STATIC + ${SRC}/base/tools/aapt2/compile/IdAssigner.cpp + ${SRC}/base/tools/aapt2/compile/InlineXmlFormatParser.cpp + ${SRC}/base/tools/aapt2/compile/PseudolocaleGenerator.cpp + ${SRC}/base/tools/aapt2/compile/Pseudolocalizer.cpp + ${SRC}/base/tools/aapt2/compile/XmlIdCollector.cpp + ${SRC}/base/tools/aapt2/configuration/ConfigurationParser.cpp + ${SRC}/base/tools/aapt2/dump/DumpManifest.cpp + ${SRC}/base/tools/aapt2/filter/AbiFilter.cpp + ${SRC}/base/tools/aapt2/filter/ConfigFilter.cpp + ${SRC}/base/tools/aapt2/format/Archive.cpp + ${SRC}/base/tools/aapt2/format/Container.cpp + ${SRC}/base/tools/aapt2/format/binary/BinaryResourceParser.cpp + ${SRC}/base/tools/aapt2/format/binary/ResChunkPullParser.cpp + ${SRC}/base/tools/aapt2/format/binary/ResEntryWriter.cpp + ${SRC}/base/tools/aapt2/format/binary/TableFlattener.cpp + ${SRC}/base/tools/aapt2/format/binary/XmlFlattener.cpp + ${SRC}/base/tools/aapt2/format/proto/ProtoDeserialize.cpp + ${SRC}/base/tools/aapt2/format/proto/ProtoSerialize.cpp + ${SRC}/base/tools/aapt2/io/File.cpp + ${SRC}/base/tools/aapt2/io/FileSystem.cpp + ${SRC}/base/tools/aapt2/io/StringStream.cpp + ${SRC}/base/tools/aapt2/io/Util.cpp + ${SRC}/base/tools/aapt2/io/ZipArchive.cpp + ${SRC}/base/tools/aapt2/link/AutoVersioner.cpp + ${SRC}/base/tools/aapt2/link/FeatureFlagsFilter.cpp + ${SRC}/base/tools/aapt2/link/ManifestFixer.cpp + ${SRC}/base/tools/aapt2/link/NoDefaultResourceRemover.cpp + ${SRC}/base/tools/aapt2/link/PrivateAttributeMover.cpp + ${SRC}/base/tools/aapt2/link/ReferenceLinker.cpp + ${SRC}/base/tools/aapt2/link/ResourceExcluder.cpp + ${SRC}/base/tools/aapt2/link/TableMerger.cpp + ${SRC}/base/tools/aapt2/link/XmlCompatVersioner.cpp + ${SRC}/base/tools/aapt2/link/XmlNamespaceRemover.cpp + ${SRC}/base/tools/aapt2/link/XmlReferenceLinker.cpp + ${SRC}/base/tools/aapt2/optimize/MultiApkGenerator.cpp + ${SRC}/base/tools/aapt2/optimize/ResourceDeduper.cpp + ${SRC}/base/tools/aapt2/optimize/ResourceFilter.cpp + ${SRC}/base/tools/aapt2/optimize/Obfuscator.cpp + ${SRC}/base/tools/aapt2/optimize/VersionCollapser.cpp + ${SRC}/base/tools/aapt2/process/ProductFilter.cpp + ${SRC}/base/tools/aapt2/process/SymbolTable.cpp + ${SRC}/base/tools/aapt2/split/TableSplitter.cpp + ${SRC}/base/tools/aapt2/text/Printer.cpp + ${SRC}/base/tools/aapt2/text/Unicode.cpp + ${SRC}/base/tools/aapt2/text/Utf8Iterator.cpp + ${SRC}/base/tools/aapt2/util/Files.cpp + ${SRC}/base/tools/aapt2/util/Util.cpp + ${SRC}/base/tools/aapt2/Debug.cpp + ${SRC}/base/tools/aapt2/DominatorTree.cpp + ${SRC}/base/tools/aapt2/java/AnnotationProcessor.cpp + ${SRC}/base/tools/aapt2/java/ClassDefinition.cpp + ${SRC}/base/tools/aapt2/java/JavaClassGenerator.cpp + ${SRC}/base/tools/aapt2/java/ManifestClassGenerator.cpp + ${SRC}/base/tools/aapt2/java/ProguardRules.cpp + ${SRC}/base/tools/aapt2/LoadedApk.cpp + ${SRC}/base/tools/aapt2/Resource.cpp + ${SRC}/base/tools/aapt2/ResourceParser.cpp + ${SRC}/base/tools/aapt2/ResourceTable.cpp + ${SRC}/base/tools/aapt2/ResourceUtils.cpp + ${SRC}/base/tools/aapt2/ResourceValues.cpp + ${SRC}/base/tools/aapt2/SdkConstants.cpp + ${SRC}/base/tools/aapt2/trace/TraceBuffer.cpp + ${SRC}/base/tools/aapt2/xml/XmlActionExecutor.cpp + ${SRC}/base/tools/aapt2/xml/XmlDom.cpp + ${SRC}/base/tools/aapt2/xml/XmlPullParser.cpp + ${SRC}/base/tools/aapt2/xml/XmlUtil.cpp + ${SRC}/base/tools/aapt2/ApkInfo.proto + ${SRC}/base/tools/aapt2/Configuration.proto + ${SRC}/base/tools/aapt2/Resources.proto + ${SRC}/base/tools/aapt2/ResourceMetadata.proto + ${SRC}/base/tools/aapt2/ResourcesInternal.proto + ${SRC}/base/tools/aapt2/ValueTransformer.cpp + ${AAPT2_PROTO_SRC} + ${AAPT2_PROTO_HDRS} + ) + +target_include_directories(libaapt2 PRIVATE ${INCLUDES}) +target_compile_options(libaapt2 PRIVATE ${COMPILE_FLAGS}) + +# Build the executable file aapt2. +add_executable(aapt2 + ${SRC}/base/tools/aapt2/Main.cpp + ${TOOL_SOURCE} + ) + +target_include_directories(aapt2 PRIVATE ${INCLUDES}) +target_compile_options(aapt2 PRIVATE ${COMPILE_FLAGS}) + +target_link_libraries(aapt2 + libaapt2 + libandroidfw + libincfs + libselinux + libsepol + libpackagelistparser + libutils + libcutils + libziparchive + libbase + libbuildversion + liblog + libprotoc + libprotobuf + expat + crypto + ssl + pcre2-8 + png_static + c++_static + dl + ) + +set_target_properties(aapt2 PROPERTIES OUTPUT_NAME "aapt2-${CMAKE_ANDROID_ARCH_ABI}") diff --git a/build.sh b/build.sh index 2139d3718..ad467cf64 100755 --- a/build.sh +++ b/build.sh @@ -1,101 +1,56 @@ #!/bin/bash - -# Check for NDK_TOOLCHAIN environment variable and abort if it is not set. -if [[ -z "${NDK_TOOLCHAIN}" ]]; then - echo "Please specify the Android NDK environment variable \"NDK_TOOLCHAIN\"." +set -e + +# Define the targets. +API="30" +ARCHITECTURES=("armeabi-v7a" "arm64-v8a" "x86" "x86_64") + +help() { + script_name=$(basename "$0") + echo "Usage: $script_name " + echo + echo "Required:" + echo " - ANDROID_NDK environment variable must be set" + echo " - PROTOC_PATH environment variable must be set" + echo " - One argument must be provided: the target architecture (armeabi-v7a, arm64-v8a, x86, x86_64)" + echo + echo "Example:" + echo " ANDROID_NDK=/path/to/ndk PROTOC_PATH=/path/to/protoc $script_name arm64-v8a" +} + +# Check for ANDROID_NDK environment variable and abort if it is not set. +if [[ -z "${ANDROID_NDK}" ]]; then + echo "Error: Please specify the Android NDK environment variable \"ANDROID_NDK\"." + help exit 1 fi -# Prerequisites. -sudo apt install \ -golang \ -ninja-build \ -autogen \ -autoconf \ -libtool \ -build-essential \ --y || exit 1 - -root="$(pwd)" - -# Install protobuf compiler. -cd "src/protobuf" || exit 1 -./autogen.sh -./configure -make -j"$(nproc)" -sudo make install -sudo ldconfig - -# Go back. -cd "$root" || exit 1 - -# Apply patches. -git apply patches/incremental_delivery.patch --whitespace=fix -git apply patches/libpng.patch --whitespace=fix -git apply patches/selinux.patch --whitespace=fix -git apply patches/protobuf.patch --whitespace=fix -git apply patches/aapt2.patch --whitespace=fix -git apply patches/androidfw.patch --whitespace=fix -git apply patches/boringssl.patch --whitespace=fix - -# Define all the compilers, libraries and targets. -api="30" -architecture=$1 -declare -A compilers=( - [x86_64]=x86_64-linux-android - [x86]=i686-linux-android - [arm64-v8a]=aarch64-linux-android - [armeabi-v7a]=armv7a-linux-androideabi -) -declare -A lib_arch=( - [x86_64]=x86_64-linux-android - [x86]=i686-linux-android - [arm64-v8a]=aarch64-linux-android - [armeabi-v7a]=arm-linux-androideabi -) -declare -A target_abi=( - [x86_64]=x86_64 - [x86]=x86 - [arm64-v8a]=aarch64 - [armeabi-v7a]=arm -) - -build_directory="build" -aapt_binary_path="$root/$build_directory/cmake/aapt2" -# Build all the target architectures. -bin_directory="$root/dist/$architecture" +architecture="$1" -# switch to cmake build directory. -[[ -d dir ]] || mkdir -p $build_directory && cd $build_directory || exit 1 - -# Define the compiler architecture and compiler. -compiler_arch="${compilers[$architecture]}" -c_compiler="$compiler_arch$api-clang" -cxx_compiler="${c_compiler}++" +if [[ ! " ${ARCHITECTURES[@]} " =~ " $architecture " ]]; then + echo "Error: '$architecture' is not in the allowed archs" + help + exit 1 +fi -# Copy libc.a to libpthread.a. -lib_path="$NDK_TOOLCHAIN/sysroot/usr/lib/${lib_arch[$architecture]}/$api/" -cp -n "$lib_path/libc.a" "$lib_path/libpthread.a" +NDK_TOOLCHAIN="$ANDROID_NDK/build/cmake/android.toolchain.cmake" # Run make for the target architecture. -compiler_bin_directory="$NDK_TOOLCHAIN/bin/" cmake -GNinja \ --DCMAKE_C_COMPILER="$compiler_bin_directory$c_compiler" \ --DCMAKE_CXX_COMPILER="$compiler_bin_directory$cxx_compiler" \ --DCMAKE_BUILD_WITH_INSTALL_RPATH=True \ --DCMAKE_BUILD_TYPE=Release \ --DANDROID_ABI="$architecture" \ --DTARGET_ABI="${target_abi[$architecture]}" \ --DPROTOC_PATH="/usr/local/bin/protoc" \ --DCMAKE_SYSROOT="$NDK_TOOLCHAIN/sysroot" \ -.. || exit 1 - -ninja || exit 1 - -"$NDK_TOOLCHAIN/bin/llvm-strip" --strip-unneeded "$aapt_binary_path" - -# Create bin directory. -mkdir -p "$bin_directory" - -# Move aapt2 to bin directory. -mv "$aapt_binary_path" "$bin_directory" + -B "build" \ + -DANDROID_NDK="$ANDROID_NDK" \ + -DCMAKE_TOOLCHAIN_FILE="$NDK_TOOLCHAIN" \ + -DANDROID_PLATFORM="android-$API" \ + -DCMAKE_ANDROID_ARCH_ABI="$architecture" \ + -DANDROID_ABI="$architecture" \ + -DCMAKE_SYSTEM_NAME=Android \ + -DANDROID_ARM_NEON=ON \ + -DCMAKE_BUILD_TYPE=Release \ + -DPNG_SHARED=OFF \ + -DZLIB_USE_STATIC_LIBS=ON + +# Build the binary +ninja -C build aapt2 + +# Remove debug symbol +"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip" --strip-unneeded "build/bin/aapt2-$architecture" diff --git a/cmake/aapt2.cmake b/cmake/aapt2.cmake deleted file mode 100644 index 0c5209311..000000000 --- a/cmake/aapt2.cmake +++ /dev/null @@ -1,185 +0,0 @@ -set(AAPT2_PROTO_SRC) -set(AAPT2_PROTO_HDRS) -set(AAPT2_PROTO_DIR ${SRC}/base/tools/aapt2) - -file(GLOB_RECURSE PROTO_FILES ${AAPT2_PROTO_DIR}/*.proto) - -foreach(proto ${PROTO_FILES}) - get_filename_component(FIL_WE ${proto} NAME_WE) - - if(DEFINED PROTOC_PATH) - execute_process( - COMMAND ${PROTOC_COMPILER} ${proto} --proto_path=${AAPT2_PROTO_DIR} - --cpp_out=${AAPT2_PROTO_DIR} COMMAND_ECHO STDOUT - RESULT_VARIABLE RESULT - WORKING_DIRECTORY ${AAPT2_PROTO_DIR}) - - if(RESULT EQUAL 0) - message(STATUS "generate cpp file ${TARGET_CPP_FILE}") - message(STATUS "generate head file ${TARGET_HEAD_FILE}") - endif() - endif() - - set(TARGET_CPP_FILE "${AAPT2_PROTO_DIR}/${FIL_WE}.pb.cc") - set(TARGET_HEAD_FILE "${AAPT2_PROTO_DIR}/${FIL_WE}.pb.h") - - if(EXISTS ${TARGET_CPP_FILE} AND EXISTS ${TARGET_HEAD_FILE}) - list(APPEND AAPT2_PROTO_SRC ${TARGET_CPP_FILE}) - list(APPEND AAPT2_PROTO_HDRS ${TARGET_HEAD_FILE}) - endif() -endforeach() - -if(DEFINED PROTOC_PATH) - set_source_files_properties(${AAPT2_PROTO_SRC} PROPERTIES GENERATED TRUE) - set_source_files_properties(${AAPT2_PROTO_HDRS} PROPERTIES GENERATED TRUE) -endif() - -set_source_files_properties(${AAPT2_PROTO_SRC} ${AAPT2_PROTO_HDRS} - PROPERTIES GENERATED TRUE) -set(COMPILE_FLAGS - -Wno-unused-parameter - -Wno-missing-field-initializers - -fno-exceptions - -fno-rtti) - -set(INCLUDES - ${SRC}/base/tools/aapt2 - ${SRC}/protobuf/src - ${SRC}/logging/liblog/include - ${SRC}/expat/lib - ${SRC}/fmtlib/include - ${SRC}/libpng - ${SRC}/libbase/include - ${SRC}/base/libs/androidfw/include - ${SRC}/base/cmds/idmap2/libidmap2_policies/include - ${SRC}/core/libsystem/include - ${SRC}/core/libutils/include - ${SRC}/boringssl/third_party/googletest/include - ${SRC}/libziparchive/include - ${SRC}/libbuildversion/include - ${SRC}/incremental_delivery/incfs/util/include - ${SRC}/incremental_delivery/incfs/kernel-headers) - -set(TOOL_SOURCE - ${SRC}/base/tools/aapt2/Main.cpp - ${SRC}/base/tools/aapt2/cmd/Command.cpp - ${SRC}/base/tools/aapt2/cmd/Compile.cpp - ${SRC}/base/tools/aapt2/cmd/Convert.cpp - ${SRC}/base/tools/aapt2/cmd/Diff.cpp - ${SRC}/base/tools/aapt2/cmd/Dump.cpp - ${SRC}/base/tools/aapt2/cmd/Link.cpp - ${SRC}/base/tools/aapt2/cmd/Optimize.cpp - ${SRC}/base/tools/aapt2/cmd/Util.cpp) - -add_library(libaapt2 STATIC - ${SRC}/base/tools/aapt2/compile/IdAssigner.cpp - ${SRC}/base/tools/aapt2/compile/InlineXmlFormatParser.cpp - ${SRC}/base/tools/aapt2/compile/NinePatch.cpp - ${SRC}/base/tools/aapt2/compile/Png.cpp - ${SRC}/base/tools/aapt2/compile/PngChunkFilter.cpp - ${SRC}/base/tools/aapt2/compile/PngCrunch.cpp - ${SRC}/base/tools/aapt2/compile/PseudolocaleGenerator.cpp - ${SRC}/base/tools/aapt2/compile/Pseudolocalizer.cpp - ${SRC}/base/tools/aapt2/compile/XmlIdCollector.cpp - ${SRC}/base/tools/aapt2/configuration/ConfigurationParser.cpp - ${SRC}/base/tools/aapt2/dump/DumpManifest.cpp - ${SRC}/base/tools/aapt2/filter/AbiFilter.cpp - ${SRC}/base/tools/aapt2/filter/ConfigFilter.cpp - ${SRC}/base/tools/aapt2/format/Archive.cpp - ${SRC}/base/tools/aapt2/format/Container.cpp - ${SRC}/base/tools/aapt2/format/binary/BinaryResourceParser.cpp - ${SRC}/base/tools/aapt2/format/binary/ResChunkPullParser.cpp - ${SRC}/base/tools/aapt2/format/binary/TableFlattener.cpp - ${SRC}/base/tools/aapt2/format/binary/XmlFlattener.cpp - ${SRC}/base/tools/aapt2/format/proto/ProtoDeserialize.cpp - ${SRC}/base/tools/aapt2/format/proto/ProtoSerialize.cpp - ${SRC}/base/tools/aapt2/io/BigBufferStream.cpp - ${SRC}/base/tools/aapt2/io/File.cpp - ${SRC}/base/tools/aapt2/io/FileStream.cpp - ${SRC}/base/tools/aapt2/io/FileSystem.cpp - ${SRC}/base/tools/aapt2/io/StringStream.cpp - ${SRC}/base/tools/aapt2/io/Util.cpp - ${SRC}/base/tools/aapt2/io/ZipArchive.cpp - ${SRC}/base/tools/aapt2/link/AutoVersioner.cpp - ${SRC}/base/tools/aapt2/link/ManifestFixer.cpp - ${SRC}/base/tools/aapt2/link/NoDefaultResourceRemover.cpp - ${SRC}/base/tools/aapt2/link/ProductFilter.cpp - ${SRC}/base/tools/aapt2/link/PrivateAttributeMover.cpp - ${SRC}/base/tools/aapt2/link/ReferenceLinker.cpp - ${SRC}/base/tools/aapt2/link/ResourceExcluder.cpp - ${SRC}/base/tools/aapt2/link/TableMerger.cpp - ${SRC}/base/tools/aapt2/link/XmlCompatVersioner.cpp - ${SRC}/base/tools/aapt2/link/XmlNamespaceRemover.cpp - ${SRC}/base/tools/aapt2/link/XmlReferenceLinker.cpp - ${SRC}/base/tools/aapt2/optimize/MultiApkGenerator.cpp - ${SRC}/base/tools/aapt2/optimize/ResourceDeduper.cpp - ${SRC}/base/tools/aapt2/optimize/ResourceFilter.cpp - ${SRC}/base/tools/aapt2/optimize/ResourcePathShortener.cpp - ${SRC}/base/tools/aapt2/optimize/VersionCollapser.cpp - ${SRC}/base/tools/aapt2/process/SymbolTable.cpp - ${SRC}/base/tools/aapt2/split/TableSplitter.cpp - ${SRC}/base/tools/aapt2/text/Printer.cpp - ${SRC}/base/tools/aapt2/text/Unicode.cpp - ${SRC}/base/tools/aapt2/text/Utf8Iterator.cpp - ${SRC}/base/tools/aapt2/util/BigBuffer.cpp - ${SRC}/base/tools/aapt2/util/Files.cpp - ${SRC}/base/tools/aapt2/util/Util.cpp - ${SRC}/base/tools/aapt2/Debug.cpp - ${SRC}/base/tools/aapt2/DominatorTree.cpp - ${SRC}/base/tools/aapt2/java/AnnotationProcessor.cpp - ${SRC}/base/tools/aapt2/java/ClassDefinition.cpp - ${SRC}/base/tools/aapt2/java/JavaClassGenerator.cpp - ${SRC}/base/tools/aapt2/java/ManifestClassGenerator.cpp - ${SRC}/base/tools/aapt2/java/ProguardRules.cpp - ${SRC}/base/tools/aapt2/LoadedApk.cpp - ${SRC}/base/tools/aapt2/Resource.cpp - ${SRC}/base/tools/aapt2/ResourceParser.cpp - ${SRC}/base/tools/aapt2/ResourceTable.cpp - ${SRC}/base/tools/aapt2/ResourceUtils.cpp - ${SRC}/base/tools/aapt2/ResourceValues.cpp - ${SRC}/base/tools/aapt2/SdkConstants.cpp - ${SRC}/base/tools/aapt2/StringPool.cpp - ${SRC}/base/tools/aapt2/trace/TraceBuffer.cpp - ${SRC}/base/tools/aapt2/xml/XmlActionExecutor.cpp - ${SRC}/base/tools/aapt2/xml/XmlDom.cpp - ${SRC}/base/tools/aapt2/xml/XmlPullParser.cpp - ${SRC}/base/tools/aapt2/xml/XmlUtil.cpp - ${SRC}/base/tools/aapt2/Configuration.proto - ${SRC}/base/tools/aapt2/Resources.proto - ${SRC}/base/tools/aapt2/ResourcesInternal.proto - ${SRC}/base/tools/aapt2/ValueTransformer.cpp - ${AAPT2_PROTO_SRC} - ${AAPT2_PROTO_HDRS}) - - target_include_directories(libaapt2 PRIVATE ${INCLUDES}) - target_compile_options(libaapt2 PRIVATE ${COMPILE_FLAGS}) - - add_executable(aapt2 - ${SRC}/base/tools/aapt2/Main.cpp - ${TOOL_SOURCE}) - - target_include_directories(aapt2 PRIVATE ${INCLUDES}) - target_compile_options(aapt2 PRIVATE ${COMPILE_FLAGS}) - - target_link_libraries(aapt2 - libaapt2 - libandroidfw - libincfs - libselinux - libsepol - libutils - libpackagelistparser - libcutils - libziparchive - libbase - libprotobuf - liblog - libpng - expat - crypto - ssl - pcre2-8 - fmt - c++_static - z - dl) diff --git a/cmake/libpackagelistparser.cmake b/cmake/libpackagelistparser.cmake deleted file mode 100644 index 688dab121..000000000 --- a/cmake/libpackagelistparser.cmake +++ /dev/null @@ -1,8 +0,0 @@ -add_library(libpackagelistparser STATIC -${SRC}/core/libpackagelistparser/packagelistparser.cpp -) - -target_include_directories(libpackagelistparser PRIVATE -${SRC}/core/libpackagelistparser/include -${SRC}/logging/liblog/include -) \ No newline at end of file diff --git a/cmake/libpng.cmake b/cmake/libpng.cmake deleted file mode 100644 index 17f2f37fe..000000000 --- a/cmake/libpng.cmake +++ /dev/null @@ -1,36 +0,0 @@ -add_library(libpng STATIC - ${SRC}/libpng/png.c - ${SRC}/libpng/pngerror.c - ${SRC}/libpng/pngget.c - ${SRC}/libpng/pngmem.c - ${SRC}/libpng/pngpread.c - ${SRC}/libpng/pngread.c - ${SRC}/libpng/pngrio.c - ${SRC}/libpng/pngrtran.c - ${SRC}/libpng/pngrutil.c - ${SRC}/libpng/pngset.c - ${SRC}/libpng/pngtrans.c - ${SRC}/libpng/pngwio.c - ${SRC}/libpng/pngwrite.c - ${SRC}/libpng/pngwtran.c - ${SRC}/libpng/pngwutil.c) - -if(ANDROID_ABI STREQUAL "arm64-v8a" OR ANDROID_ABI STREQUAL "armeabi-v7a") - target_sources(libpng PRIVATE - ${SRC}/libpng/arm/arm_init.c - ${SRC}/libpng/arm/filter_neon_intrinsics.c - ${SRC}/libpng/arm/palette_neon_intrinsics.c) - -if(ANDROID_ABI STREQUAL "armeabi-v7a") - target_sources(libpng PRIVATE ${SRC}/libpng/arm/filter_neon.S) -endif() - -elseif(ANDROID_ABI STREQUAL "x86_64" OR ANDROID_ABI STREQUAL "x86") - target_sources(libpng PRIVATE - ${SRC}/libpng/intel/intel_init.c - ${SRC}/libpng/intel/filter_sse2_intrinsics.c) - - target_compile_definitions(libpng PRIVATE -DPNG_INTEL_SSE_OPT=1) -endif() - -target_include_directories(libpng PRIVATE ${SRC}/libpng) \ No newline at end of file diff --git a/cmake/libprotoc.cmake b/cmake/libprotoc.cmake deleted file mode 100644 index fefeecd41..000000000 --- a/cmake/libprotoc.cmake +++ /dev/null @@ -1,176 +0,0 @@ -add_library(libprotoc STATIC - ${SRC}/protobuf/src/google/protobuf/any_lite.cc - ${SRC}/protobuf/src/google/protobuf/arena.cc - ${SRC}/protobuf/src/google/protobuf/extension_set.cc - ${SRC}/protobuf/src/google/protobuf/generated_enum_util.cc - ${SRC}/protobuf/src/google/protobuf/generated_message_table_driven_lite.cc - ${SRC}/protobuf/src/google/protobuf/generated_message_util.cc - ${SRC}/protobuf/src/google/protobuf/implicit_weak_message.cc - ${SRC}/protobuf/src/google/protobuf/io/coded_stream.cc - ${SRC}/protobuf/src/google/protobuf/io/io_win32.cc - ${SRC}/protobuf/src/google/protobuf/io/strtod.cc - ${SRC}/protobuf/src/google/protobuf/io/zero_copy_stream.cc - ${SRC}/protobuf/src/google/protobuf/io/zero_copy_stream_impl.cc - ${SRC}/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc - ${SRC}/protobuf/src/google/protobuf/message_lite.cc - ${SRC}/protobuf/src/google/protobuf/parse_context.cc - ${SRC}/protobuf/src/google/protobuf/repeated_field.cc - ${SRC}/protobuf/src/google/protobuf/stubs/bytestream.cc - ${SRC}/protobuf/src/google/protobuf/stubs/common.cc - ${SRC}/protobuf/src/google/protobuf/stubs/int128.cc - ${SRC}/protobuf/src/google/protobuf/stubs/status.cc - ${SRC}/protobuf/src/google/protobuf/stubs/statusor.cc - ${SRC}/protobuf/src/google/protobuf/stubs/stringpiece.cc - ${SRC}/protobuf/src/google/protobuf/stubs/stringprintf.cc - ${SRC}/protobuf/src/google/protobuf/stubs/structurally_valid.cc - ${SRC}/protobuf/src/google/protobuf/stubs/strutil.cc - ${SRC}/protobuf/src/google/protobuf/stubs/time.cc - ${SRC}/protobuf/src/google/protobuf/wire_format_lite.cc - ${SRC}/protobuf/src/google/protobuf/any.cc - ${SRC}/protobuf/src/google/protobuf/any.pb.cc - ${SRC}/protobuf/src/google/protobuf/api.pb.cc - ${SRC}/protobuf/src/google/protobuf/compiler/importer.cc - ${SRC}/protobuf/src/google/protobuf/compiler/parser.cc - ${SRC}/protobuf/src/google/protobuf/descriptor.cc - ${SRC}/protobuf/src/google/protobuf/descriptor.pb.cc - ${SRC}/protobuf/src/google/protobuf/descriptor_database.cc - ${SRC}/protobuf/src/google/protobuf/duration.pb.cc - ${SRC}/protobuf/src/google/protobuf/dynamic_message.cc - ${SRC}/protobuf/src/google/protobuf/empty.pb.cc - ${SRC}/protobuf/src/google/protobuf/extension_set_heavy.cc - ${SRC}/protobuf/src/google/protobuf/field_mask.pb.cc - ${SRC}/protobuf/src/google/protobuf/generated_message_reflection.cc - ${SRC}/protobuf/src/google/protobuf/generated_message_table_driven.cc - ${SRC}/protobuf/src/google/protobuf/io/gzip_stream.cc - ${SRC}/protobuf/src/google/protobuf/io/printer.cc - ${SRC}/protobuf/src/google/protobuf/io/tokenizer.cc - ${SRC}/protobuf/src/google/protobuf/map_field.cc - ${SRC}/protobuf/src/google/protobuf/message.cc - ${SRC}/protobuf/src/google/protobuf/reflection_ops.cc - ${SRC}/protobuf/src/google/protobuf/service.cc - ${SRC}/protobuf/src/google/protobuf/source_context.pb.cc - ${SRC}/protobuf/src/google/protobuf/struct.pb.cc - ${SRC}/protobuf/src/google/protobuf/stubs/mathlimits.cc - ${SRC}/protobuf/src/google/protobuf/stubs/substitute.cc - ${SRC}/protobuf/src/google/protobuf/text_format.cc - ${SRC}/protobuf/src/google/protobuf/timestamp.pb.cc - ${SRC}/protobuf/src/google/protobuf/type.pb.cc - ${SRC}/protobuf/src/google/protobuf/unknown_field_set.cc - ${SRC}/protobuf/src/google/protobuf/util/delimited_message_util.cc - ${SRC}/protobuf/src/google/protobuf/util/field_comparator.cc - ${SRC}/protobuf/src/google/protobuf/util/field_mask_util.cc - ${SRC}/protobuf/src/google/protobuf/util/internal/datapiece.cc - ${SRC}/protobuf/src/google/protobuf/util/internal/default_value_objectwriter.cc - ${SRC}/protobuf/src/google/protobuf/util/internal/error_listener.cc - ${SRC}/protobuf/src/google/protobuf/util/internal/field_mask_utility.cc - ${SRC}/protobuf/src/google/protobuf/util/internal/json_escaping.cc - ${SRC}/protobuf/src/google/protobuf/util/internal/json_objectwriter.cc - ${SRC}/protobuf/src/google/protobuf/util/internal/json_stream_parser.cc - ${SRC}/protobuf/src/google/protobuf/util/internal/object_writer.cc - ${SRC}/protobuf/src/google/protobuf/util/internal/proto_writer.cc - ${SRC}/protobuf/src/google/protobuf/util/internal/protostream_objectsource.cc - ${SRC}/protobuf/src/google/protobuf/util/internal/protostream_objectwriter.cc - ${SRC}/protobuf/src/google/protobuf/util/internal/type_info.cc - ${SRC}/protobuf/src/google/protobuf/util/internal/type_info_test_helper.cc - ${SRC}/protobuf/src/google/protobuf/util/internal/utility.cc - ${SRC}/protobuf/src/google/protobuf/util/json_util.cc - ${SRC}/protobuf/src/google/protobuf/util/message_differencer.cc - ${SRC}/protobuf/src/google/protobuf/util/time_util.cc - ${SRC}/protobuf/src/google/protobuf/util/type_resolver_util.cc - ${SRC}/protobuf/src/google/protobuf/wire_format.cc - ${SRC}/protobuf/src/google/protobuf/wrappers.pb.cc - ${SRC}/protobuf/src/google/protobuf/compiler/code_generator.cc - ${SRC}/protobuf/src/google/protobuf/compiler/command_line_interface.cc - ${SRC}/protobuf/src/google/protobuf/compiler/cpp/cpp_enum.cc - ${SRC}/protobuf/src/google/protobuf/compiler/cpp/cpp_enum_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/cpp/cpp_extension.cc - ${SRC}/protobuf/src/google/protobuf/compiler/cpp/cpp_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/cpp/cpp_file.cc - ${SRC}/protobuf/src/google/protobuf/compiler/cpp/cpp_generator.cc - ${SRC}/protobuf/src/google/protobuf/compiler/cpp/cpp_helpers.cc - ${SRC}/protobuf/src/google/protobuf/compiler/cpp/cpp_map_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/cpp/cpp_message.cc - ${SRC}/protobuf/src/google/protobuf/compiler/cpp/cpp_message_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/cpp/cpp_padding_optimizer.cc - ${SRC}/protobuf/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/cpp/cpp_service.cc - ${SRC}/protobuf/src/google/protobuf/compiler/cpp/cpp_string_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/csharp/csharp_doc_comment.cc - ${SRC}/protobuf/src/google/protobuf/compiler/csharp/csharp_enum.cc - ${SRC}/protobuf/src/google/protobuf/compiler/csharp/csharp_enum_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/csharp/csharp_field_base.cc - ${SRC}/protobuf/src/google/protobuf/compiler/csharp/csharp_generator.cc - ${SRC}/protobuf/src/google/protobuf/compiler/csharp/csharp_helpers.cc - ${SRC}/protobuf/src/google/protobuf/compiler/csharp/csharp_map_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/csharp/csharp_message.cc - ${SRC}/protobuf/src/google/protobuf/compiler/csharp/csharp_message_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/csharp/csharp_reflection_class.cc - ${SRC}/protobuf/src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc - ${SRC}/protobuf/src/google/protobuf/compiler/csharp/csharp_wrapper_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_context.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_doc_comment.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_enum.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_enum_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_enum_field_lite.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_enum_lite.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_extension.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_extension_lite.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_file.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_generator.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_generator_factory.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_helpers.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_map_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_map_field_lite.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_message.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_message_builder.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_message_builder_lite.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_message_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_message_field_lite.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_message_lite.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_name_resolver.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_primitive_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_primitive_field_lite.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_service.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_shared_code_generator.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_string_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/java/java_string_field_lite.cc - ${SRC}/protobuf/src/google/protobuf/compiler/js/js_generator.cc - ${SRC}/protobuf/src/google/protobuf/compiler/js/well_known_types_embed.cc - ${SRC}/protobuf/src/google/protobuf/compiler/objectivec/objectivec_enum.cc - ${SRC}/protobuf/src/google/protobuf/compiler/objectivec/objectivec_enum_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/objectivec/objectivec_extension.cc - ${SRC}/protobuf/src/google/protobuf/compiler/objectivec/objectivec_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/objectivec/objectivec_file.cc - ${SRC}/protobuf/src/google/protobuf/compiler/objectivec/objectivec_generator.cc - ${SRC}/protobuf/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc - ${SRC}/protobuf/src/google/protobuf/compiler/objectivec/objectivec_map_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/objectivec/objectivec_message.cc - ${SRC}/protobuf/src/google/protobuf/compiler/objectivec/objectivec_message_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/objectivec/objectivec_oneof.cc - ${SRC}/protobuf/src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc - ${SRC}/protobuf/src/google/protobuf/compiler/php/php_generator.cc - ${SRC}/protobuf/src/google/protobuf/compiler/plugin.cc - ${SRC}/protobuf/src/google/protobuf/compiler/plugin.pb.cc - ${SRC}/protobuf/src/google/protobuf/compiler/python/python_generator.cc - ${SRC}/protobuf/src/google/protobuf/compiler/ruby/ruby_generator.cc - ${SRC}/protobuf/src/google/protobuf/compiler/subprocess.cc - ${SRC}/protobuf/src/google/protobuf/compiler/zip_writer.cc - ) - -target_compile_definitions(libprotoc PRIVATE -DHAVE_ZLIB=1) -target_include_directories(libprotoc PRIVATE - ${SRC}/protobuf/android - ${SRC}/protobuf/src - ) - -add_executable(protoc ${SRC}/protobuf/src/google/protobuf/compiler/main.cc) -target_include_directories(protoc PRIVATE - ${SRC}/protobuf/android - ${SRC}/protobuf/src - ) -target_link_libraries(protoc libprotoc liblog dl z) \ No newline at end of file diff --git a/cmake/libselinux.cmake b/cmake/libselinux.cmake deleted file mode 100644 index 8ed92c5b6..000000000 --- a/cmake/libselinux.cmake +++ /dev/null @@ -1,74 +0,0 @@ -add_library(libselinux STATIC - ${SRC}/selinux/libselinux/src/booleans.c - ${SRC}/selinux/libselinux/src/callbacks.c - ${SRC}/selinux/libselinux/src/freecon.c - ${SRC}/selinux/libselinux/src/label_backends_android.c - ${SRC}/selinux/libselinux/src/label.c - ${SRC}/selinux/libselinux/src/label_support.c - ${SRC}/selinux/libselinux/src/matchpathcon.c - ${SRC}/selinux/libselinux/src/setrans_client.c - ${SRC}/selinux/libselinux/src/sha1.c - ${SRC}/selinux/libselinux/src/android/android.c - ${SRC}/selinux/libselinux/src/avc.c - ${SRC}/selinux/libselinux/src/avc_internal.c - ${SRC}/selinux/libselinux/src/avc_sidtab.c - ${SRC}/selinux/libselinux/src/canonicalize_context.c - ${SRC}/selinux/libselinux/src/checkAccess.c - ${SRC}/selinux/libselinux/src/check_context.c - ${SRC}/selinux/libselinux/src/compute_av.c - ${SRC}/selinux/libselinux/src/compute_create.c - ${SRC}/selinux/libselinux/src/compute_member.c - ${SRC}/selinux/libselinux/src/context.c - ${SRC}/selinux/libselinux/src/deny_unknown.c - ${SRC}/selinux/libselinux/src/disable.c - ${SRC}/selinux/libselinux/src/enabled.c - ${SRC}/selinux/libselinux/src/fgetfilecon.c - ${SRC}/selinux/libselinux/src/fsetfilecon.c - ${SRC}/selinux/libselinux/src/getenforce.c - ${SRC}/selinux/libselinux/src/getfilecon.c - ${SRC}/selinux/libselinux/src/get_initial_context.c - ${SRC}/selinux/libselinux/src/getpeercon.c - ${SRC}/selinux/libselinux/src/init.c - ${SRC}/selinux/libselinux/src/lgetfilecon.c - ${SRC}/selinux/libselinux/src/load_policy.c - ${SRC}/selinux/libselinux/src/lsetfilecon.c - ${SRC}/selinux/libselinux/src/mapping.c - ${SRC}/selinux/libselinux/src/policyvers.c - ${SRC}/selinux/libselinux/src/procattr.c - ${SRC}/selinux/libselinux/src/reject_unknown.c - ${SRC}/selinux/libselinux/src/sestatus.c - ${SRC}/selinux/libselinux/src/setenforce.c - ${SRC}/selinux/libselinux/src/setfilecon.c - ${SRC}/selinux/libselinux/src/stringrep.c - ${SRC}/selinux/libselinux/src/label_file.c - ${SRC}/selinux/libselinux/src/regex.c - ${SRC}/selinux/libselinux/src/selinux_config.c - ${SRC}/selinux/libselinux/src/seusers.c - ${SRC}/selinux/libselinux/src/android/android_platform.c - ) - -target_compile_definitions(libselinux PRIVATE - -DAUDITD_LOG_TAG=1003 - -D_GNU_SOURCE - -DHOST - -DUSE_PCRE2 - -DNO_PERSISTENTLY_STORED_PATTERNS - -DDISABLE_SETRANS - -DDISABLE_BOOL - -DNO_MEDIA_BACKEND - -DNO_X_BACKEND - -DNO_DB_BACKEND - -DPCRE2_CODE_UNIT_WIDTH=8 - ) - -target_include_directories(libselinux PRIVATE - ${SRC}/selinux/libselinux/include - ${SRC}/selinux/libsepol/include - ${SRC}/core/libcutils/include - ${SRC}/logging/liblog/include - ${SRC}/core/libpackagelistparser/include - ${SRC}/pcre/include - ) -target_include_directories(libselinux PRIVATE - ${SRC}/selinux/libselinux/src - ) \ No newline at end of file diff --git a/cmake/libsparse.cmake b/cmake/libsparse.cmake deleted file mode 100644 index 3308c05f9..000000000 --- a/cmake/libsparse.cmake +++ /dev/null @@ -1,13 +0,0 @@ -add_library(libsparse STATIC - ${SRC}/core/libsparse/backed_block.cpp - ${SRC}/core/libsparse/output_file.cpp - ${SRC}/core/libsparse/sparse.cpp - ${SRC}/core/libsparse/sparse_crc32.cpp - ${SRC}/core/libsparse/sparse_err.cpp - ${SRC}/core/libsparse/sparse_read.cpp - ) - -target_include_directories(libsparse PRIVATE - ${SRC}/core/libsparse/include - ${SRC}/libbase/include - ) diff --git a/cmake/CMakeLists.txt b/lib/CMakeLists.txt similarity index 79% rename from cmake/CMakeLists.txt rename to lib/CMakeLists.txt index 9d9859d24..174e2fc28 100644 --- a/cmake/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -2,12 +2,11 @@ include(libbase.cmake) include(liblog.cmake) include(libcutils.cmake) include(libutils.cmake) -include(libpackagelistparser.cmake) include(libandroidfw.cmake) include(libincfs.cmake) include(libselinux.cmake) include(libsepol.cmake) -include(libpng.cmake) -include(libsparse.cmake) include(libziparchive.cmake) -include(aapt2.cmake) \ No newline at end of file +include(libbuildversion.cmake) +include(libpackagelistparser.cmake) +include(libprocessgroup.cmake) diff --git a/cmake/libandroidfw.cmake b/lib/libandroidfw.cmake similarity index 58% rename from cmake/libandroidfw.cmake rename to lib/libandroidfw.cmake index 3caf06629..f58f360dd 100644 --- a/cmake/libandroidfw.cmake +++ b/lib/libandroidfw.cmake @@ -1,40 +1,69 @@ +# +# Copyright © 2022 Github Lzhiyong +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + add_library(libandroidfw STATIC ${SRC}/base/libs/androidfw/ApkAssets.cpp + ${SRC}/base/libs/androidfw/ApkParsing.cpp ${SRC}/base/libs/androidfw/Asset.cpp ${SRC}/base/libs/androidfw/AssetDir.cpp ${SRC}/base/libs/androidfw/AssetManager.cpp ${SRC}/base/libs/androidfw/AssetManager2.cpp ${SRC}/base/libs/androidfw/AssetsProvider.cpp ${SRC}/base/libs/androidfw/AttributeResolution.cpp + ${SRC}/base/libs/androidfw/BigBuffer.cpp + ${SRC}/base/libs/androidfw/BigBufferStream.cpp ${SRC}/base/libs/androidfw/ChunkIterator.cpp ${SRC}/base/libs/androidfw/ConfigDescription.cpp + ${SRC}/base/libs/androidfw/FileStream.cpp ${SRC}/base/libs/androidfw/Idmap.cpp ${SRC}/base/libs/androidfw/LoadedArsc.cpp ${SRC}/base/libs/androidfw/Locale.cpp ${SRC}/base/libs/androidfw/LocaleData.cpp ${SRC}/base/libs/androidfw/misc.cpp + ${SRC}/base/libs/androidfw/NinePatch.cpp ${SRC}/base/libs/androidfw/ObbFile.cpp ${SRC}/base/libs/androidfw/PosixUtils.cpp + ${SRC}/base/libs/androidfw/Png.cpp + ${SRC}/base/libs/androidfw/PngChunkFilter.cpp + ${SRC}/base/libs/androidfw/PngCrunch.cpp + ${SRC}/base/libs/androidfw/ResourceTimer.cpp ${SRC}/base/libs/androidfw/ResourceTypes.cpp ${SRC}/base/libs/androidfw/ResourceUtils.cpp ${SRC}/base/libs/androidfw/StreamingZipInflater.cpp + ${SRC}/base/libs/androidfw/StringPool.cpp ${SRC}/base/libs/androidfw/TypeWrappers.cpp ${SRC}/base/libs/androidfw/Util.cpp ${SRC}/base/libs/androidfw/ZipFileRO.cpp ${SRC}/base/libs/androidfw/ZipUtils.cpp + ${SRC}/base/libs/androidfw/PathUtils.cpp ) -target_compile_definitions(libandroidfw PRIVATE +target_compile_definitions(libandroidfw PRIVATE -DSTATIC_ANDROIDFW_FOR_TOOLS -D_GNU_SOURCE -DNDEBUG ) target_include_directories(libandroidfw PUBLIC ${SRC}/base/libs/androidfw/include + ${SRC}/base/libs/androidfw/include_pathutils ${SRC}/core/libcutils/include ${SRC}/logging/liblog/include ${SRC}/core/libsystem/include ${SRC}/core/libutils/include + ${SRC}/libpng ${SRC}/libbase/include ${SRC}/native/include ${SRC}/native/libs/binder/include @@ -42,5 +71,5 @@ target_include_directories(libandroidfw PUBLIC ${SRC}/incremental_delivery/incfs/util/include ${SRC}/incremental_delivery/incfs/kernel-headers ) - + target_link_libraries(libandroidfw PUBLIC fmt::fmt) diff --git a/cmake/libbase.cmake b/lib/libbase.cmake similarity index 83% rename from cmake/libbase.cmake rename to lib/libbase.cmake index 979d57992..bd87ab252 100644 --- a/cmake/libbase.cmake +++ b/lib/libbase.cmake @@ -2,8 +2,8 @@ add_library(libbase STATIC ${SRC}/libbase/abi_compatibility.cpp ${SRC}/libbase/chrono_utils.cpp ${SRC}/libbase/cmsg.cpp - ${SRC}/libbase/errors_unix.cpp ${SRC}/libbase/file.cpp + ${SRC}/libbase/hex.cpp ${SRC}/libbase/logging.cpp ${SRC}/libbase/mapped_file.cpp ${SRC}/libbase/parsebool.cpp @@ -11,14 +11,17 @@ add_library(libbase STATIC ${SRC}/libbase/posix_strerror_r.cpp ${SRC}/libbase/process.cpp ${SRC}/libbase/properties.cpp + ${SRC}/libbase/result.cpp ${SRC}/libbase/stringprintf.cpp ${SRC}/libbase/strings.cpp - ${SRC}/libbase/test_utils.cpp ${SRC}/libbase/threads.cpp + ${SRC}/libbase/test_utils.cpp + ${SRC}/libbase/errors_unix.cpp ) target_include_directories(libbase PRIVATE - ${SRC}/libbase/include - ${SRC}/core/include + ${SRC}/libbase/include + ${SRC}/core/include + ${SRC}/fmtlib/include ${SRC}/logging/liblog/include ) diff --git a/lib/libbuildversion.cmake b/lib/libbuildversion.cmake new file mode 100644 index 000000000..6654d6c83 --- /dev/null +++ b/lib/libbuildversion.cmake @@ -0,0 +1,7 @@ +add_library(libbuildversion STATIC + ${SRC}/soong/cc/libbuildversion/libbuildversion.cpp + ) + +target_include_directories(libbuildversion PRIVATE + ${SRC}/soong/cc/libbuildversion/include + ) diff --git a/cmake/libcutils.cmake b/lib/libcutils.cmake similarity index 73% rename from cmake/libcutils.cmake rename to lib/libcutils.cmake index c2469bb28..0419427ea 100644 --- a/cmake/libcutils.cmake +++ b/lib/libcutils.cmake @@ -1,6 +1,5 @@ add_library(libcutils STATIC ${SRC}/core/libcutils/android_get_control_file.cpp - ${SRC}/core/libcutils/ashmem-host.cpp ${SRC}/core/libcutils/canned_fs_config.cpp ${SRC}/core/libcutils/config_utils.cpp ${SRC}/core/libcutils/fs.cpp @@ -20,15 +19,22 @@ add_library(libcutils STATIC ${SRC}/core/libcutils/sockets.cpp ${SRC}/core/libcutils/str_parms.cpp ${SRC}/core/libcutils/strlcpy.c - ${SRC}/core/libcutils/trace-host.cpp - ${SRC}/core/libcutils/threads.cpp + ${SRC}/core/libcutils/android_reboot.cpp + ${SRC}/core/libcutils/ashmem-dev.cpp + ${SRC}/core/libcutils/klog.cpp + ${SRC}/core/libcutils/partition_utils.cpp + ${SRC}/core/libcutils/qtaguid.cpp + ${SRC}/core/libcutils/trace-dev.cpp + ${SRC}/core/libcutils/uevent.cpp ) -target_compile_definitions(libcutils PRIVATE -D_GNU_SOURCE) +target_compile_definitions(libcutils PRIVATE + -D_GNU_SOURCE + ) target_include_directories(libcutils PRIVATE ${SRC}/core/libutils/include ${SRC}/core/libcutils/include - ${SRC}/logging/liblog/include + ${SRC}/logging/liblog/include ${SRC}/libbase/include ) diff --git a/cmake/libincfs.cmake b/lib/libincfs.cmake similarity index 81% rename from cmake/libincfs.cmake rename to lib/libincfs.cmake index 91560f039..ba3c81253 100644 --- a/cmake/libincfs.cmake +++ b/lib/libincfs.cmake @@ -6,15 +6,15 @@ add_library(libincfs STATIC ${SRC}/incremental_delivery/incfs/util/map_ptr.cpp ${SRC}/incremental_delivery/sysprop/IncrementalProperties.sysprop.cpp ) - + target_include_directories(libincfs PRIVATE - ${SRC}/incremental_delivery/incfs/include - ${SRC}/incremental_delivery/incfs/util/include + ${SRC}/incremental_delivery/incfs/include + ${SRC}/incremental_delivery/incfs/util/include ${SRC}/incremental_delivery/sysprop/include ${SRC}/incremental_delivery/incfs/kernel-headers ${SRC}/libbase/include ${SRC}/core/libutils/include ${SRC}/boringssl/include ${SRC}/selinux/libselinux/include - ${SRC}/logging/liblog/include - ) \ No newline at end of file + ${SRC}/logging/liblog/include + ) diff --git a/cmake/liblog.cmake b/lib/liblog.cmake similarity index 87% rename from cmake/liblog.cmake rename to lib/liblog.cmake index 0d3c9b93c..20885ff03 100644 --- a/cmake/liblog.cmake +++ b/lib/liblog.cmake @@ -15,19 +15,16 @@ add_library(liblog STATIC ) target_compile_definitions(liblog PRIVATE - -DLIBLOG_LOG_TAG=1006 - -D_XOPEN_SOURCE=700 + -DLIBLOG_LOG_TAG=1006 + -D_XOPEN_SOURCE=700 -DFAKE_LOG_DEVICE=1 -DSNET_EVENT_LOG_TAG=1397638686 + -DANDROID_DEBUGGABLE=0 ) - + target_include_directories(liblog PRIVATE ${SRC}/core/include - ${SRC}/core/libutils/include - ${SRC}/core/libcutils/include - ${SRC}/core/libsystem/include - ${SRC}/logging/liblog/include + ${SRC}/core/libcutils/include ${SRC}/libbase/include ) - \ No newline at end of file diff --git a/lib/libpackagelistparser.cmake b/lib/libpackagelistparser.cmake new file mode 100644 index 000000000..3c56cd754 --- /dev/null +++ b/lib/libpackagelistparser.cmake @@ -0,0 +1,8 @@ +add_library(libpackagelistparser STATIC + ${SRC}/core/libpackagelistparser/packagelistparser.cpp + ) + +target_include_directories(libpackagelistparser PRIVATE + ${SRC}/core/libpackagelistparser/include + ${SRC}/logging/liblog/include + ) diff --git a/lib/libprocessgroup.cmake b/lib/libprocessgroup.cmake new file mode 100644 index 000000000..78a241f17 --- /dev/null +++ b/lib/libprocessgroup.cmake @@ -0,0 +1,22 @@ +add_library(libprocessgroup STATIC + ${SRC}/core/libprocessgroup/cgroup_map.cpp + ${SRC}/core/libprocessgroup/processgroup.cpp + ${SRC}/core/libprocessgroup/sched_policy.cpp + ${SRC}/core/libprocessgroup/task_profiles.cpp + ${SRC}/core/libprocessgroup/cgrouprc_format/cgroup_controller.cpp + ${SRC}/core/libprocessgroup/cgrouprc/cgroup_controller.cpp + ${SRC}/core/libprocessgroup/cgrouprc/cgroup_file.cpp + ) + +target_include_directories(libprocessgroup PRIVATE + ${SRC}/core/libprocessgroup/include + ${SRC}/core/libprocessgroup/cgrouprc/include + ${SRC}/core/libprocessgroup/cgrouprc_format/include + ${SRC}/core/libprocessgroup/util/include + ${SRC}/libbase/include + ${SRC}/core/libcutils/include + ${SRC}/jsoncpp/include + ) +target_include_directories(libprocessgroup PRIVATE + ${SRC}/core/libprocessgroup + ) diff --git a/lib/libselinux.cmake b/lib/libselinux.cmake new file mode 100644 index 000000000..bb238ebbe --- /dev/null +++ b/lib/libselinux.cmake @@ -0,0 +1,79 @@ +add_library(libselinux STATIC + ${SRC}/selinux/libselinux/src/android/android.c + ${SRC}/selinux/libselinux/src/android/android_seapp.c + ${SRC}/selinux/libselinux/src/avc.c + ${SRC}/selinux/libselinux/src/avc_internal.c + ${SRC}/selinux/libselinux/src/avc_sidtab.c + ${SRC}/selinux/libselinux/src/booleans.c + ${SRC}/selinux/libselinux/src/callbacks.c + ${SRC}/selinux/libselinux/src/canonicalize_context.c + ${SRC}/selinux/libselinux/src/checkAccess.c + ${SRC}/selinux/libselinux/src/check_context.c + ${SRC}/selinux/libselinux/src/compute_av.c + ${SRC}/selinux/libselinux/src/compute_create.c + ${SRC}/selinux/libselinux/src/compute_member.c + ${SRC}/selinux/libselinux/src/context.c + ${SRC}/selinux/libselinux/src/deny_unknown.c + ${SRC}/selinux/libselinux/src/disable.c + ${SRC}/selinux/libselinux/src/enabled.c + ${SRC}/selinux/libselinux/src/fgetfilecon.c + ${SRC}/selinux/libselinux/src/freecon.c + ${SRC}/selinux/libselinux/src/fsetfilecon.c + ${SRC}/selinux/libselinux/src/get_initial_context.c + ${SRC}/selinux/libselinux/src/getenforce.c + ${SRC}/selinux/libselinux/src/getfilecon.c + ${SRC}/selinux/libselinux/src/getpeercon.c + ${SRC}/selinux/libselinux/src/init.c + ${SRC}/selinux/libselinux/src/label.c + ${SRC}/selinux/libselinux/src/label_backends_android.c + ${SRC}/selinux/libselinux/src/label_file.c + ${SRC}/selinux/libselinux/src/label_support.c + ${SRC}/selinux/libselinux/src/lgetfilecon.c + ${SRC}/selinux/libselinux/src/load_policy.c + ${SRC}/selinux/libselinux/src/lsetfilecon.c + ${SRC}/selinux/libselinux/src/mapping.c + ${SRC}/selinux/libselinux/src/matchpathcon.c + ${SRC}/selinux/libselinux/src/policyvers.c + ${SRC}/selinux/libselinux/src/procattr.c + ${SRC}/selinux/libselinux/src/regex.c + ${SRC}/selinux/libselinux/src/reject_unknown.c + ${SRC}/selinux/libselinux/src/selinux_internal.c + ${SRC}/selinux/libselinux/src/sestatus.c + ${SRC}/selinux/libselinux/src/setenforce.c + ${SRC}/selinux/libselinux/src/setfilecon.c + ${SRC}/selinux/libselinux/src/setrans_client.c + ${SRC}/selinux/libselinux/src/sha1.c + ${SRC}/selinux/libselinux/src/stringrep.c + ${SRC}/selinux/libselinux/src/android/android_device.c + ) + +target_compile_definitions(libselinux PRIVATE + -DAUDITD_LOG_TAG=1003 + -D_GNU_SOURCE + -DHOST + -DUSE_PCRE2 + -DNO_PERSISTENTLY_STORED_PATTERNS + -DDISABLE_SETRANS + -DDISABLE_BOOL + -DNO_MEDIA_BACKEND + -DNO_X_BACKEND + -DNO_DB_BACKEND + -DPCRE2_CODE_UNIT_WIDTH=8 + ) + + if(ANDROID_ABI STREQUAL "x86") + target_compile_definitions(libselinux PRIVATE -DHAVE_STRLCPY) + endif() + +target_include_directories(libselinux PRIVATE + ${SRC}/selinux/libselinux/include + ${SRC}/selinux/libsepol/include + ${SRC}/core/libcutils/include + ${SRC}/logging/liblog/include + ${SRC}/core/libpackagelistparser/include + ${SRC}/pcre/include + ) + +target_include_directories(libselinux PRIVATE + ${SRC}/selinux/libselinux/src + ) diff --git a/cmake/libsepol.cmake b/lib/libsepol.cmake similarity index 95% rename from cmake/libsepol.cmake rename to lib/libsepol.cmake index 7235fbd4c..6c9a025dd 100644 --- a/cmake/libsepol.cmake +++ b/lib/libsepol.cmake @@ -64,12 +64,15 @@ add_library(libsepol STATIC ${SRC}/selinux/libsepol/cil/src/cil_write_ast.c ) -target_compile_definitions(libsepol PRIVATE -D_GNU_SOURCE) +target_compile_definitions(libsepol PRIVATE + -DHAVE_REALLOCARRAY + -D_GNU_SOURCE + ) target_include_directories(libsepol PUBLIC - ${SRC}/selinux/libselinux/include + ${SRC}/selinux/libselinux/include ${SRC}/selinux/libsepol/include ) target_include_directories(libsepol PRIVATE ${SRC}/selinux/libsepol/src ${SRC}/selinux/libsepol/cil/include - ) \ No newline at end of file + ) diff --git a/cmake/libutils.cmake b/lib/libutils.cmake similarity index 62% rename from cmake/libutils.cmake rename to lib/libutils.cmake index 9b2235887..690d418bd 100644 --- a/cmake/libutils.cmake +++ b/lib/libutils.cmake @@ -1,35 +1,37 @@ +set(LIBUTILS_BINDER_SRC + ${SRC}/core/libutils/binder/Errors.cpp + ${SRC}/core/libutils/binder/RefBase.cpp + ${SRC}/core/libutils/binder/SharedBuffer.cpp + ${SRC}/core/libutils/binder/String16.cpp + ${SRC}/core/libutils/binder/String8.cpp + ${SRC}/core/libutils/binder/StrongPointer.cpp + ${SRC}/core/libutils/binder/Unicode.cpp + ${SRC}/core/libutils/binder/VectorImpl.cpp + ) + add_library(libutils STATIC - ${SRC}/core/libutils/Errors.cpp ${SRC}/core/libutils/FileMap.cpp ${SRC}/core/libutils/JenkinsHash.cpp ${SRC}/core/libutils/LightRefBase.cpp ${SRC}/core/libutils/NativeHandle.cpp ${SRC}/core/libutils/Printer.cpp - ${SRC}/core/libutils/RefBase.cpp - ${SRC}/core/libutils/SharedBuffer.cpp ${SRC}/core/libutils/StopWatch.cpp - ${SRC}/core/libutils/String8.cpp - ${SRC}/core/libutils/String16.cpp - ${SRC}/core/libutils/StrongPointer.cpp ${SRC}/core/libutils/SystemClock.cpp ${SRC}/core/libutils/Threads.cpp ${SRC}/core/libutils/Timers.cpp ${SRC}/core/libutils/Tokenizer.cpp - ${SRC}/core/libutils/Unicode.cpp - ${SRC}/core/libutils/VectorImpl.cpp ${SRC}/core/libutils/misc.cpp ${SRC}/core/libutils/Trace.cpp ${SRC}/core/libutils/Looper.cpp + ${LIBUTILS_BINDER_SRC} ) target_include_directories(libutils PRIVATE ${SRC}/core/include - ${SRC}/core/libsystem/include - ${SRC}/core/libvndksupport/include - ${SRC}/core/libprocessgroup/include - ${SRC}/core/libcutils/include ${SRC}/core/libutils/include + ${SRC}/core/libprocessgroup/include + ${SRC}/core/libvndksupport/include ${SRC}/logging/liblog/include ${SRC}/libbase/include + ${SRC}/unwinding/libbacktrace/include ) - \ No newline at end of file diff --git a/cmake/libziparchive.cmake b/lib/libziparchive.cmake similarity index 75% rename from cmake/libziparchive.cmake rename to lib/libziparchive.cmake index f1a86b169..b67e33477 100644 --- a/cmake/libziparchive.cmake +++ b/lib/libziparchive.cmake @@ -7,16 +7,16 @@ add_library(libziparchive STATIC ${SRC}/libziparchive/incfs_support/signal_handling.cpp ) -target_compile_definitions(libziparchive PRIVATE +target_compile_definitions(libziparchive PRIVATE -DZLIB_CONST -D_FILE_OFFSET_BITS=64 -DZIPARCHIVE_DISABLE_CALLBACK_API=1 ) - + target_include_directories(libziparchive PRIVATE - ${SRC}/libziparchive/include + ${SRC}/libziparchive/include ${SRC}/libziparchive/incfs_support/include - ${SRC}/libbase/include + ${SRC}/libbase/include ${SRC}/logging/liblog/include - ${SRC}/boringssl/third_party/googletest/include - ) \ No newline at end of file + ${SRC}/googletest/googletest/include + ) diff --git a/misc/IncrementalProperties.sysprop.cpp b/misc/IncrementalProperties.sysprop.cpp new file mode 100644 index 000000000..572dd4164 --- /dev/null +++ b/misc/IncrementalProperties.sysprop.cpp @@ -0,0 +1,201 @@ +// Generated by the sysprop generator. DO NOT EDIT! + +#include + +#include +#include +#include +#include +#include +#include + +#include +#ifdef __BIONIC__ +#include +[[maybe_unused]] static bool SetProp(const char* key, const char* value) { + return __system_property_set(key, value) == 0; +} +#else +#include +[[maybe_unused]] static bool SetProp(const char* key, const char* value) { + android::base::SetProperty(key, value); + return true; +} +#endif + +#include +#include + +namespace { + +using namespace android::sysprop::IncrementalProperties; + +template T DoParse(const char* str); + +template constexpr bool is_vector = false; + +template constexpr bool is_vector> = true; + +template <> [[maybe_unused]] std::optional DoParse(const char* str) { + static constexpr const char* kYes[] = {"1", "true"}; + static constexpr const char* kNo[] = {"0", "false"}; + + for (const char* yes : kYes) { + if (strcasecmp(yes, str) == 0) return std::make_optional(true); + } + + for (const char* no : kNo) { + if (strcasecmp(no, str) == 0) return std::make_optional(false); + } + + return std::nullopt; +} + +template <> [[maybe_unused]] std::optional DoParse(const char* str) { + std::int32_t ret; + return android::base::ParseInt(str, &ret) ? std::make_optional(ret) : std::nullopt; +} + +template <> [[maybe_unused]] std::optional DoParse(const char* str) { + std::uint32_t ret; + return android::base::ParseUint(str, &ret) ? std::make_optional(ret) : std::nullopt; +} + +template <> [[maybe_unused]] std::optional DoParse(const char* str) { + std::int64_t ret; + return android::base::ParseInt(str, &ret) ? std::make_optional(ret) : std::nullopt; +} + +template <> [[maybe_unused]] std::optional DoParse(const char* str) { + std::uint64_t ret; + return android::base::ParseUint(str, &ret) ? std::make_optional(ret) : std::nullopt; +} + +template <> [[maybe_unused]] std::optional DoParse(const char* str) { + int old_errno = errno; + errno = 0; + char* end; + double ret = std::strtod(str, &end); + if (errno != 0) { + return std::nullopt; + } + if (str == end || *end != '\0') { + errno = EINVAL; + return std::nullopt; + } + errno = old_errno; + return std::make_optional(ret); +} + +template <> [[maybe_unused]] std::optional DoParse(const char* str) { + return *str == '\0' ? std::nullopt : std::make_optional(str); +} + +template [[maybe_unused]] Vec DoParseList(const char* str) { + Vec ret; + if (*str == '\0') return ret; + const char* p = str; + for (;;) { + const char* r = p; + std::string value; + while (*r != ',') { + if (*r == '\\') ++r; + if (*r == '\0') break; + value += *r++; + } + ret.emplace_back(DoParse(value.c_str())); + if (*r == '\0') break; + p = r + 1; + } + return ret; +} + +template inline T TryParse(const char* str) { + if constexpr(is_vector) { + return DoParseList(str); + } else { + return DoParse(str); + } +} + +[[maybe_unused]] std::string FormatValue(const std::optional& value) { + return value ? std::to_string(*value) : ""; +} + +[[maybe_unused]] std::string FormatValue(const std::optional& value) { + return value ? std::to_string(*value) : ""; +} + +[[maybe_unused]] std::string FormatValue(const std::optional& value) { + return value ? std::to_string(*value) : ""; +} + +[[maybe_unused]] std::string FormatValue(const std::optional& value) { + return value ? std::to_string(*value) : ""; +} + +[[maybe_unused]] std::string FormatValue(const std::optional& value) { + if (!value) return ""; + char buf[1024]; + std::sprintf(buf, "%.*g", std::numeric_limits::max_digits10, *value); + return buf; +} + +[[maybe_unused]] std::string FormatValue(const std::optional& value) { + return value ? (*value ? "true" : "false") : ""; +} + +template +[[maybe_unused]] std::string FormatValue(const std::vector& value) { + if (value.empty()) return ""; + + std::string ret; + bool first = true; + + for (auto&& element : value) { + if (!first) ret += ','; + else first = false; + if constexpr(std::is_same_v>) { + if (element) { + for (char c : *element) { + if (c == '\\' || c == ',') ret += '\\'; + ret += c; + } + } + } else { + ret += FormatValue(element); + } + } + + return ret; +} + +template +T GetProp(const char* key, const char* legacy = nullptr) { + std::string value; +#ifdef __BIONIC__ + auto pi = __system_property_find(key); + if (pi != nullptr) { + __system_property_read_callback(pi, [](void* cookie, const char*, const char* value, std::uint32_t) { + *static_cast(cookie) = value; + }, &value); + } +#else + value = android::base::GetProperty(key, ""); +#endif + if (value.empty() && legacy) { + ALOGV("prop %s doesn't exist; fallback to legacy prop %s", key, legacy); + return GetProp(legacy); + } + return TryParse(value.c_str()); +} + +} // namespace + +namespace android::sysprop::IncrementalProperties { + +std::optional enable() { + return GetProp>("ro.incremental.enable"); +} + +} // namespace android::sysprop::IncrementalProperties diff --git a/misc/IncrementalProperties.sysprop.h b/misc/IncrementalProperties.sysprop.h new file mode 100644 index 000000000..263a00e53 --- /dev/null +++ b/misc/IncrementalProperties.sysprop.h @@ -0,0 +1,14 @@ +// Generated by the sysprop generator. DO NOT EDIT! + +#pragma once + +#include +#include +#include +#include + +namespace android::sysprop::IncrementalProperties { + +std::optional enable(); + +} // namespace android::sysprop::IncrementalProperties diff --git a/misc/platform_tools_version.h b/misc/platform_tools_version.h new file mode 100644 index 000000000..1ef594340 --- /dev/null +++ b/misc/platform_tools_version.h @@ -0,0 +1,2 @@ +// https://cs.android.com/android/platform/superproject/+/master:out/soong/.intermediates/development/sdk/platform_tools_version/gen/platform_tools_version.h +#define PLATFORM_TOOLS_VERSION "35.0.2" diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..028c6a879 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,7793 @@ +{ + "name": "revanced-patcher", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "@saithodev/semantic-release-backmerge": "^4.0.1", + "@semantic-release/changelog": "^6.0.3", + "@semantic-release/git": "^10.0.1", + "gradle-semantic-release-plugin": "^1.10.1", + "semantic-release": "^24.1.2" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@octokit/auth-token": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.1.tgz", + "integrity": "sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/core": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.2.tgz", + "integrity": "sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/auth-token": "^5.0.0", + "@octokit/graphql": "^8.0.0", + "@octokit/request": "^9.0.0", + "@octokit/request-error": "^6.0.1", + "@octokit/types": "^13.0.0", + "before-after-hook": "^3.0.2", + "universal-user-agent": "^7.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/endpoint": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.1.tgz", + "integrity": "sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.0.0", + "universal-user-agent": "^7.0.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/graphql": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.1.1.tgz", + "integrity": "sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/request": "^9.0.0", + "@octokit/types": "^13.0.0", + "universal-user-agent": "^7.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", + "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.5.tgz", + "integrity": "sha512-cgwIRtKrpwhLoBi0CUNuY83DPGRMaWVjqVI/bGKsLJ4PzyWZNaEmhHroI2xlrVXkk6nFv0IsZpOp+ZWSWUS2AQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.6.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": ">=6" + } + }, + "node_modules/@octokit/plugin-retry": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-7.1.2.tgz", + "integrity": "sha512-XOWnPpH2kJ5VTwozsxGurw+svB2e61aWlmk5EVIYZPwFK5F9h4cyPyj9CIKRyMXMHSwpIsI3mPOdpMmrRhe7UQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/request-error": "^6.0.0", + "@octokit/types": "^13.0.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": ">=6" + } + }, + "node_modules/@octokit/plugin-throttling": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-9.3.1.tgz", + "integrity": "sha512-Qd91H4liUBhwLB2h6jZ99bsxoQdhgPk6TdwnClPyTBSDAdviGPceViEgUwj+pcQDmB/rfAXAXK7MTochpHM3yQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.0.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "^6.0.0" + } + }, + "node_modules/@octokit/request": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.1.3.tgz", + "integrity": "sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/endpoint": "^10.0.0", + "@octokit/request-error": "^6.0.1", + "@octokit/types": "^13.1.0", + "universal-user-agent": "^7.0.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/request-error": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.5.tgz", + "integrity": "sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/types": { + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.0.tgz", + "integrity": "sha512-CrooV/vKCXqwLa+osmHLIMUb87brpgUqlqkPGc6iE2wCkUvTrHiXFMhAKoDDaAAYJrtKtrFTgSQTg5nObBEaew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^22.2.0" + } + }, + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true, + "license": "ISC" + }, + "node_modules/@pnpm/npm-conf": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", + "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@saithodev/semantic-release-backmerge": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@saithodev/semantic-release-backmerge/-/semantic-release-backmerge-4.0.1.tgz", + "integrity": "sha512-WDsU28YrXSLx0xny7FgFlEk8DCKGcj6OOhA+4Q9k3te1jJD1GZuqY8sbIkVQaw9cqJ7CT+fCZUN6QDad8JW4Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.1.0", + "debug": "^4.3.4", + "execa": "^5.1.1", + "lodash": "^4.17.21", + "semantic-release": "^22.0.7" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/auth-token": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/core": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", + "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.1.0", + "@octokit/request": "^8.3.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/endpoint": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.5.tgz", + "integrity": "sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/graphql": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz", + "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/request": "^8.3.0", + "@octokit/types": "^13.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/plugin-paginate-rest": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.1.tgz", + "integrity": "sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^12.6.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^20.0.0" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/plugin-retry": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.1.tgz", + "integrity": "sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": ">=5" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/plugin-retry/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^20.0.0" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/plugin-throttling": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-8.2.0.tgz", + "integrity": "sha512-nOpWtLayKFpgqmgD0y3GqXafMFuKcA4tRPZIfu7BArd2lEZeb1988nhWhwx4aZWmjDmUfdgVf7W+Tt4AmvRmMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^12.2.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "^5.0.0" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/plugin-throttling/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^20.0.0" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/request": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz", + "integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/endpoint": "^9.0.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@octokit/request-error": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz", + "integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.1.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/commit-analyzer": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-11.1.0.tgz", + "integrity": "sha512-cXNTbv3nXR2hlzHjAMgbuiQVtvWHTlwwISt60B+4NZv01y/QRY7p2HcJm8Eh2StzcTJoNnflvKjHH/cjFS7d5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "conventional-changelog-angular": "^7.0.0", + "conventional-commits-filter": "^4.0.0", + "conventional-commits-parser": "^5.0.0", + "debug": "^4.0.0", + "import-from-esm": "^1.0.3", + "lodash-es": "^4.17.21", + "micromatch": "^4.0.2" + }, + "engines": { + "node": "^18.17 || >=20.6.1" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/github": { + "version": "9.2.6", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-9.2.6.tgz", + "integrity": "sha512-shi+Lrf6exeNZF+sBhK+P011LSbhmIAoUEgEY6SsxF8irJ+J2stwI5jkyDQ+4gzYyDImzV6LCKdYB9FXnQRWKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/core": "^5.0.0", + "@octokit/plugin-paginate-rest": "^9.0.0", + "@octokit/plugin-retry": "^6.0.0", + "@octokit/plugin-throttling": "^8.0.0", + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "debug": "^4.3.4", + "dir-glob": "^3.0.1", + "globby": "^14.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "issue-parser": "^6.0.0", + "lodash-es": "^4.17.21", + "mime": "^4.0.0", + "p-filter": "^4.0.0", + "url-join": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/github/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/github/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/npm": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-11.0.3.tgz", + "integrity": "sha512-KUsozQGhRBAnoVg4UMZj9ep436VEGwT536/jwSqB7vcEfA6oncCUU7UIYTRdLx7GvTtqn0kBjnkfLVkcnBa2YQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "execa": "^8.0.0", + "fs-extra": "^11.0.0", + "lodash-es": "^4.17.21", + "nerf-dart": "^1.0.0", + "normalize-url": "^8.0.0", + "npm": "^10.5.0", + "rc": "^1.2.8", + "read-pkg": "^9.0.0", + "registry-auth-token": "^5.0.0", + "semver": "^7.1.2", + "tempy": "^3.0.0" + }, + "engines": { + "node": "^18.17 || >=20" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/npm/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/npm/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/npm/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/npm/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/release-notes-generator": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-12.1.0.tgz", + "integrity": "sha512-g6M9AjUKAZUZnxaJZnouNBeDNTCUrJ5Ltj+VJ60gJeDaRRahcHsry9HW8yKrnKkKNkx5lbWiEP1FPMqVNQz8Kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "conventional-changelog-angular": "^7.0.0", + "conventional-changelog-writer": "^7.0.0", + "conventional-commits-filter": "^4.0.0", + "conventional-commits-parser": "^5.0.0", + "debug": "^4.0.0", + "get-stream": "^7.0.0", + "import-from-esm": "^1.0.3", + "into-stream": "^7.0.0", + "lodash-es": "^4.17.21", + "read-pkg-up": "^11.0.0" + }, + "engines": { + "node": "^18.17 || >=20.6.1" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", + "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/ansi-escapes": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", + "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/conventional-changelog-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", + "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/conventional-changelog-writer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-7.0.1.tgz", + "integrity": "sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "conventional-commits-filter": "^4.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "meow": "^12.0.1", + "semver": "^7.5.2", + "split2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/conventional-commits-filter": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz", + "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/env-ci": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-10.0.0.tgz", + "integrity": "sha512-U4xcd/utDYFgMh0yWj07R1H6L5fwhVbmxBCpnL0DbVSDZVnsC82HONw0wxtxNkIAcua3KtbomQvIk5xFZGAQJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^8.0.0", + "java-properties": "^1.0.2" + }, + "engines": { + "node": "^18.17 || >=20.6.1" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/env-ci/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/env-ci/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/find-versions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", + "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver-regex": "^4.0.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/issue-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", + "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.capitalize": "^4.2.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.uniqby": "^4.7.0" + }, + "engines": { + "node": ">=10.13" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/marked": { + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/marked/-/marked-9.1.6.tgz", + "integrity": "sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==", + "dev": true, + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 16" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/marked-terminal": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-6.2.0.tgz", + "integrity": "sha512-ubWhwcBFHnXsjYNsu+Wndpg0zhY4CahSpPlA70PlO0rR9r2sZpkyU+rkCsOWH+KMEkx847UpALON+HWgxowFtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^6.2.0", + "cardinal": "^2.1.1", + "chalk": "^5.3.0", + "cli-table3": "^0.6.3", + "node-emoji": "^2.1.3", + "supports-hyperlinks": "^3.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "marked": ">=1 <12" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/p-reduce": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", + "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/semantic-release": { + "version": "22.0.12", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-22.0.12.tgz", + "integrity": "sha512-0mhiCR/4sZb00RVFJIUlMuiBkW3NMpVIW2Gse7noqEMoFGkvfPPAImEQbkBV8xga4KOPP4FdTRYuLLy32R1fPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@semantic-release/commit-analyzer": "^11.0.0", + "@semantic-release/error": "^4.0.0", + "@semantic-release/github": "^9.0.0", + "@semantic-release/npm": "^11.0.0", + "@semantic-release/release-notes-generator": "^12.0.0", + "aggregate-error": "^5.0.0", + "cosmiconfig": "^8.0.0", + "debug": "^4.0.0", + "env-ci": "^10.0.0", + "execa": "^8.0.0", + "figures": "^6.0.0", + "find-versions": "^5.1.0", + "get-stream": "^6.0.0", + "git-log-parser": "^1.2.0", + "hook-std": "^3.0.0", + "hosted-git-info": "^7.0.0", + "import-from-esm": "^1.3.1", + "lodash-es": "^4.17.21", + "marked": "^9.0.0", + "marked-terminal": "^6.0.0", + "micromatch": "^4.0.2", + "p-each-series": "^3.0.0", + "p-reduce": "^3.0.0", + "read-pkg-up": "^11.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.3.2", + "semver-diff": "^4.0.0", + "signale": "^1.2.1", + "yargs": "^17.5.1" + }, + "bin": { + "semantic-release": "bin/semantic-release.js" + }, + "engines": { + "node": "^18.17 || >=20.6.1" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/semantic-release/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/semantic-release/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/semantic-release/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/semantic-release/node_modules/execa/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@saithodev/semantic-release-backmerge/node_modules/universal-user-agent": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@semantic-release/changelog": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz", + "integrity": "sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "fs-extra": "^11.0.0", + "lodash": "^4.17.4" + }, + "engines": { + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0" + } + }, + "node_modules/@semantic-release/commit-analyzer": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-13.0.0.tgz", + "integrity": "sha512-KtXWczvTAB1ZFZ6B4O+w8HkfYm/OgQb1dUGNFZtDgQ0csggrmkq8sTxhd+lwGF8kMb59/RnG9o4Tn7M/I8dQ9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "conventional-changelog-angular": "^8.0.0", + "conventional-changelog-writer": "^8.0.0", + "conventional-commits-filter": "^5.0.0", + "conventional-commits-parser": "^6.0.0", + "debug": "^4.0.0", + "import-from-esm": "^1.0.3", + "lodash-es": "^4.17.21", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=20.8.1" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/error": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", + "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@semantic-release/git": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz", + "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "debug": "^4.0.0", + "dir-glob": "^3.0.0", + "execa": "^5.0.0", + "lodash": "^4.17.4", + "micromatch": "^4.0.0", + "p-reduce": "^2.0.0" + }, + "engines": { + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0" + } + }, + "node_modules/@semantic-release/github": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-11.0.0.tgz", + "integrity": "sha512-Uon6G6gJD8U1JNvPm7X0j46yxNRJ8Ui6SgK4Zw5Ktu8RgjEft3BGn+l/RX1TTzhhO3/uUcKuqM+/9/ETFxWS/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/core": "^6.0.0", + "@octokit/plugin-paginate-rest": "^11.0.0", + "@octokit/plugin-retry": "^7.0.0", + "@octokit/plugin-throttling": "^9.0.0", + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "debug": "^4.3.4", + "dir-glob": "^3.0.1", + "globby": "^14.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "issue-parser": "^7.0.0", + "lodash-es": "^4.17.21", + "mime": "^4.0.0", + "p-filter": "^4.0.0", + "url-join": "^5.0.0" + }, + "engines": { + "node": ">=20.8.1" + }, + "peerDependencies": { + "semantic-release": ">=24.1.0" + } + }, + "node_modules/@semantic-release/github/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@semantic-release/github/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-12.0.1.tgz", + "integrity": "sha512-/6nntGSUGK2aTOI0rHPwY3ZjgY9FkXmEHbW9Kr+62NVOsyqpKKeP0lrCH+tphv+EsNdJNmqqwijTEnVWUMQ2Nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "execa": "^9.0.0", + "fs-extra": "^11.0.0", + "lodash-es": "^4.17.21", + "nerf-dart": "^1.0.0", + "normalize-url": "^8.0.0", + "npm": "^10.5.0", + "rc": "^1.2.8", + "read-pkg": "^9.0.0", + "registry-auth-token": "^5.0.0", + "semver": "^7.1.2", + "tempy": "^3.0.0" + }, + "engines": { + "node": ">=20.8.1" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/npm/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@semantic-release/npm/node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/execa": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.4.0.tgz", + "integrity": "sha512-yKHlle2YGxZE842MERVIplWwNH5VYmqqcPFgtnlU//K8gxuFFXu0pwd/CrfXTumFpeEiufsP7+opT/bPJa1yVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.3", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" + }, + "engines": { + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@semantic-release/npm/node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/human-signals": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", + "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@semantic-release/npm/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@semantic-release/npm/node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/release-notes-generator": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-14.0.1.tgz", + "integrity": "sha512-K0w+5220TM4HZTthE5dDpIuFrnkN1NfTGPidJFm04ULT1DEZ9WG89VNXN7F0c+6nMEpWgqmPvb7vY7JkB2jyyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "conventional-changelog-angular": "^8.0.0", + "conventional-changelog-writer": "^8.0.0", + "conventional-commits-filter": "^5.0.0", + "conventional-commits-parser": "^6.0.0", + "debug": "^4.0.0", + "get-stream": "^7.0.0", + "import-from-esm": "^1.0.3", + "into-stream": "^7.0.0", + "lodash-es": "^4.17.21", + "read-package-up": "^11.0.0" + }, + "engines": { + "node": ">=20.8.1" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", + "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/argv-formatter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", + "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==", + "dev": true, + "license": "MIT" + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true, + "license": "MIT" + }, + "node_modules/before-after-hook": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz", + "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cardinal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", + "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" + }, + "bin": { + "cdl": "bin/cdl.js" + } + }, + "node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "dev": true, + "license": "ISC", + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/cli-highlight/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cli-highlight/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cli-highlight/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cli-highlight/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz", + "integrity": "sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.0.0.tgz", + "integrity": "sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/semver": "^7.5.5", + "conventional-commits-filter": "^5.0.0", + "handlebars": "^4.7.7", + "meow": "^13.0.0", + "semver": "^7.5.2" + }, + "bin": { + "conventional-changelog-writer": "dist/cli/index.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/conventional-commits-filter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz", + "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/conventional-commits-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.0.0.tgz", + "integrity": "sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "meow": "^13.0.0" + }, + "bin": { + "conventional-commits-parser": "dist/cli/index.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/convert-hrtime": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", + "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/env-ci": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.1.0.tgz", + "integrity": "sha512-Z8dnwSDbV1XYM9SBF2J0GcNVvmfmfh3a49qddGIROhBoVro6MZVTji15z/sJbQ2ko2ei8n988EU1wzoLU/tF+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^8.0.0", + "java-properties": "^1.0.2" + }, + "engines": { + "node": "^18.17 || >=20.6.1" + } + }, + "node_modules/env-ci/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/env-ci/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/env-ci/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/env-ci/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/find-up-simple": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", + "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-versions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-6.0.0.tgz", + "integrity": "sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver-regex": "^4.0.5", + "super-regex": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/function-timeout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.2.tgz", + "integrity": "sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/git-log-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.1.tgz", + "integrity": "sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "argv-formatter": "~1.0.0", + "spawn-error-forwarder": "~1.0.0", + "split2": "~1.0.0", + "stream-combiner2": "~1.1.1", + "through2": "~2.0.0", + "traverse": "0.6.8" + } + }, + "node_modules/git-log-parser/node_modules/split2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", + "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", + "dev": true, + "license": "ISC", + "dependencies": { + "through2": "~2.0.0" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globby": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/gradle-semantic-release-plugin": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/gradle-semantic-release-plugin/-/gradle-semantic-release-plugin-1.10.1.tgz", + "integrity": "sha512-Q4dLAFICjPouUyRRHEKK8cXNB75nraXoioYZDZlVQOg4sYKudnTDZ3ohLmV3k4cPGiiMCh1ckXETkx9JnuyKmA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/KengoTODA" + } + ], + "license": "MIT", + "dependencies": { + "promisified-properties": "^3.0.0", + "split2": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "semantic-release": "^24.0.0" + } + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/hook-std": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz", + "integrity": "sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hosted-git-info": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.0.0.tgz", + "integrity": "sha512-4nw3vOVR+vHUOT8+U4giwe2tcGv+R3pwwRidUe67DoMBTjhrfr6rZYJVVwdkBE+Um050SG+X9tf0Jo4fOpn01w==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-from-esm": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-1.3.4.tgz", + "integrity": "sha512-7EyUlPFC0HOlBDpUFGfYstsU7XHxZJKAAMzCT8wZ0hMW7b+hG51LIKTDcsgtz8Pu6YC0HqRVbX+rVUtsGMUKvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "import-meta-resolve": "^4.0.0" + }, + "engines": { + "node": ">=16.20" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/index-to-position": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz", + "integrity": "sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/into-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz", + "integrity": "sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "text-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/issue-parser": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.1.tgz", + "integrity": "sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.capitalize": "^4.2.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.uniqby": "^4.7.0" + }, + "engines": { + "node": "^18.17 || >=20.6.1" + } + }, + "node_modules/java-properties": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", + "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "license": "ISC" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.capitalize": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", + "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/marked": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", + "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", + "dev": true, + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/marked-terminal": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.1.0.tgz", + "integrity": "sha512-+pvwa14KZL74MVXjYdPR3nSInhGhNvPce/3mqLVZT2oUvt654sL1XImFuLZ1pkA866IYZ3ikDTOFUIC7XzpZZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "chalk": "^5.3.0", + "cli-highlight": "^2.1.11", + "cli-table3": "^0.6.5", + "node-emoji": "^2.1.3", + "supports-hyperlinks": "^3.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "marked": ">=1 <14" + } + }, + "node_modules/meow": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.4.tgz", + "integrity": "sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa" + ], + "license": "MIT", + "bin": { + "mime": "bin/cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/nerf-dart": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", + "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-emoji": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", + "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/normalize-package-data": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/normalize-url": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm": { + "version": "10.8.3", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.8.3.tgz", + "integrity": "sha512-0IQlyAYvVtQ7uOhDFYZCGK8kkut2nh8cpAdA9E6FvRSJaTgtZRZgNjlC5ZCct//L73ygrpY93CxXpRJDtNqPVg==", + "bundleDependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/config", + "@npmcli/fs", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/promise-spawn", + "@npmcli/redact", + "@npmcli/run-script", + "@sigstore/tuf", + "abbrev", + "archy", + "cacache", + "chalk", + "ci-info", + "cli-columns", + "fastest-levenshtein", + "fs-minipass", + "glob", + "graceful-fs", + "hosted-git-info", + "ini", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minimatch", + "minipass", + "minipass-pipeline", + "ms", + "node-gyp", + "nopt", + "normalize-package-data", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "p-map", + "pacote", + "parse-conflict-json", + "proc-log", + "qrcode-terminal", + "read", + "semver", + "spdx-expression-parse", + "ssri", + "supports-color", + "tar", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which", + "write-file-atomic" + ], + "dev": true, + "license": "Artistic-2.0", + "workspaces": [ + "docs", + "smoke-tests", + "mock-globals", + "mock-registry", + "workspaces/*" + ], + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/arborist": "^7.5.4", + "@npmcli/config": "^8.3.4", + "@npmcli/fs": "^3.1.1", + "@npmcli/map-workspaces": "^3.0.6", + "@npmcli/package-json": "^5.2.0", + "@npmcli/promise-spawn": "^7.0.2", + "@npmcli/redact": "^2.0.1", + "@npmcli/run-script": "^8.1.0", + "@sigstore/tuf": "^2.3.4", + "abbrev": "^2.0.0", + "archy": "~1.0.0", + "cacache": "^18.0.4", + "chalk": "^5.3.0", + "ci-info": "^4.0.0", + "cli-columns": "^4.0.0", + "fastest-levenshtein": "^1.0.16", + "fs-minipass": "^3.0.3", + "glob": "^10.4.5", + "graceful-fs": "^4.2.11", + "hosted-git-info": "^7.0.2", + "ini": "^4.1.3", + "init-package-json": "^6.0.3", + "is-cidr": "^5.1.0", + "json-parse-even-better-errors": "^3.0.2", + "libnpmaccess": "^8.0.6", + "libnpmdiff": "^6.1.4", + "libnpmexec": "^8.1.4", + "libnpmfund": "^5.0.12", + "libnpmhook": "^10.0.5", + "libnpmorg": "^6.0.6", + "libnpmpack": "^7.0.4", + "libnpmpublish": "^9.0.9", + "libnpmsearch": "^7.0.6", + "libnpmteam": "^6.0.5", + "libnpmversion": "^6.0.3", + "make-fetch-happen": "^13.0.1", + "minimatch": "^9.0.5", + "minipass": "^7.1.1", + "minipass-pipeline": "^1.2.4", + "ms": "^2.1.2", + "node-gyp": "^10.2.0", + "nopt": "^7.2.1", + "normalize-package-data": "^6.0.2", + "npm-audit-report": "^5.0.0", + "npm-install-checks": "^6.3.0", + "npm-package-arg": "^11.0.3", + "npm-pick-manifest": "^9.1.0", + "npm-profile": "^10.0.0", + "npm-registry-fetch": "^17.1.0", + "npm-user-validate": "^2.0.1", + "p-map": "^4.0.0", + "pacote": "^18.0.6", + "parse-conflict-json": "^3.0.1", + "proc-log": "^4.2.0", + "qrcode-terminal": "^0.12.0", + "read": "^3.0.1", + "semver": "^7.6.3", + "spdx-expression-parse": "^4.0.0", + "ssri": "^10.0.6", + "supports-color": "^9.4.0", + "tar": "^6.2.1", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "treeverse": "^3.0.0", + "validate-npm-package-name": "^5.0.1", + "which": "^4.0.0", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui": { + "version": "8.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/agent": { + "version": "2.2.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/arborist": { + "version": "7.5.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^3.1.1", + "@npmcli/installed-package-contents": "^2.1.0", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^7.1.1", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.1.0", + "@npmcli/query": "^3.1.0", + "@npmcli/redact": "^2.0.0", + "@npmcli/run-script": "^8.1.0", + "bin-links": "^4.0.4", + "cacache": "^18.0.3", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^7.0.2", + "json-parse-even-better-errors": "^3.0.2", + "json-stringify-nice": "^1.1.4", + "lru-cache": "^10.2.2", + "minimatch": "^9.0.4", + "nopt": "^7.2.1", + "npm-install-checks": "^6.2.0", + "npm-package-arg": "^11.0.2", + "npm-pick-manifest": "^9.0.1", + "npm-registry-fetch": "^17.0.1", + "pacote": "^18.0.6", + "parse-conflict-json": "^3.0.0", + "proc-log": "^4.2.0", + "proggy": "^2.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^3.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^10.0.6", + "treeverse": "^3.0.0", + "walk-up-path": "^3.0.1" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/config": { + "version": "8.3.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/package-json": "^5.1.1", + "ci-info": "^4.0.0", + "ini": "^4.1.2", + "nopt": "^7.2.1", + "proc-log": "^4.2.0", + "semver": "^7.3.5", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/fs": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/git": { + "version": "5.0.8", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^7.0.0", + "ini": "^4.1.3", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^4.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "3.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0", + "read-package-json-fast": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "7.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cacache": "^18.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^18.0.0", + "proc-log": "^4.1.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/package-json": { + "version": "5.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^4.0.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "7.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/query": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/redact": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/run-script": { + "version": "8.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "proc-log": "^4.0.0", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/@sigstore/bundle": { + "version": "2.3.2", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.2" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/core": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/protobuf-specs": { + "version": "0.3.2", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/sign": { + "version": "2.3.2", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "make-fetch-happen": "^13.0.1", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/tuf": { + "version": "2.3.4", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.2", + "tuf-js": "^2.2.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/verify": { + "version": "1.2.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.1.0", + "@sigstore/protobuf-specs": "^0.3.2" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@tufjs/models": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/abbrev": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/agent-base": { + "version": "7.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/aggregate-error": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-styles": { + "version": "6.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/archy": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/bin-links": { + "version": "4.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/binary-extensions": { + "version": "2.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm/node_modules/cacache": { + "version": "18.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/chalk": { + "version": "5.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/npm/node_modules/chownr": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ci-info": { + "version": "4.0.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cidr-regex": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "ip-regex": "^5.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/clean-stack": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/cli-columns": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/cmd-shim": { + "version": "6.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/npm/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/cross-spawn": { + "version": "7.0.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/cssesc": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/debug": { + "version": "4.3.6", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/npm/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/diff": { + "version": "5.2.0", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/npm/node_modules/eastasianwidth": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/exponential-backoff": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.16", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/npm/node_modules/foreground-child": { + "version": "3.3.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/fs-minipass": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/glob": { + "version": "10.4.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.11", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hosted-git-info": { + "version": "7.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "7.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "7.0.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ignore-walk": { + "version": "6.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/npm/node_modules/indent-string": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ini": { + "version": "4.1.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/init-package-json": { + "version": "6.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/package-json": "^5.0.0", + "npm-package-arg": "^11.0.0", + "promzard": "^1.0.0", + "read": "^3.0.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/ip-address": { + "version": "9.0.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/npm/node_modules/ip-regex": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/is-cidr": { + "version": "5.1.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "cidr-regex": "^4.1.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/is-lambda": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/jackspeak": { + "version": "3.4.3", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/npm/node_modules/jsbn": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff-apply": { + "version": "5.5.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/libnpmaccess": { + "version": "8.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^11.0.2", + "npm-registry-fetch": "^17.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmdiff": { + "version": "6.1.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.5.4", + "@npmcli/installed-package-contents": "^2.1.0", + "binary-extensions": "^2.3.0", + "diff": "^5.1.0", + "minimatch": "^9.0.4", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6", + "tar": "^6.2.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmexec": { + "version": "8.1.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.5.4", + "@npmcli/run-script": "^8.1.0", + "ci-info": "^4.0.0", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6", + "proc-log": "^4.2.0", + "read": "^3.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmfund": { + "version": "5.0.12", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.5.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmhook": { + "version": "10.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^17.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmorg": { + "version": "6.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^17.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmpack": { + "version": "7.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.5.4", + "@npmcli/run-script": "^8.1.0", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmpublish": { + "version": "9.0.9", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ci-info": "^4.0.0", + "normalize-package-data": "^6.0.1", + "npm-package-arg": "^11.0.2", + "npm-registry-fetch": "^17.0.1", + "proc-log": "^4.2.0", + "semver": "^7.3.7", + "sigstore": "^2.2.0", + "ssri": "^10.0.6" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmsearch": { + "version": "7.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^17.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmteam": { + "version": "6.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^17.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmversion": { + "version": "6.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.7", + "@npmcli/run-script": "^8.1.0", + "json-parse-even-better-errors": "^3.0.2", + "proc-log": "^4.2.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/lru-cache": { + "version": "10.4.3", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "13.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/minimatch": { + "version": "9.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/minipass": { + "version": "7.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/npm/node_modules/minipass-collect": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/npm/node_modules/minipass-fetch": { + "version": "3.0.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mute-stream": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/negotiator": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/node-gyp": { + "version": "10.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^4.1.0", + "semver": "^7.3.5", + "tar": "^6.2.1", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/nopt": { + "version": "7.2.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/normalize-package-data": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-audit-report": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-bundled": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-install-checks": { + "version": "6.3.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-package-arg": { + "version": "11.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^7.0.0", + "proc-log": "^4.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-packlist": { + "version": "8.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ignore-walk": "^6.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "9.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-profile": { + "version": "10.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^17.0.1", + "proc-log": "^4.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "17.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/redact": "^2.0.0", + "jsonparse": "^1.3.1", + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-user-validate": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/p-map": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/package-json-from-dist": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/npm/node_modules/pacote": { + "version": "18.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/package-json": "^5.1.0", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^8.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^17.0.0", + "proc-log": "^4.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^2.2.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "bin/index.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^6.0.0", + "just-diff-apply": "^5.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/path-scurry": { + "version": "1.11.1", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/proc-log": { + "version": "4.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/proggy": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-call-limit": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/promzard": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "^3.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/npm/node_modules/read": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "mute-stream": "^1.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/npm/node_modules/semver": { + "version": "7.6.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/signal-exit": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/sigstore": { + "version": "2.3.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "@sigstore/sign": "^2.3.2", + "@sigstore/tuf": "^2.3.4", + "@sigstore/verify": "^1.2.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks": { + "version": "2.8.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "8.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.2.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.5.0", + "dev": true, + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.18", + "dev": true, + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/npm/node_modules/sprintf-js": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause" + }, + "node_modules/npm/node_modules/ssri": { + "version": "10.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/supports-color": { + "version": "9.4.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/npm/node_modules/tar": { + "version": "6.2.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/treeverse": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/tuf-js": { + "version": "2.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/models": "2.0.1", + "debug": "^4.3.4", + "make-fetch-happen": "^13.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/unique-filename": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/unique-slug": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/walk-up-path": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/which": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/which/node_modules/isexe": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/npm/node_modules/wrap-ansi": { + "version": "8.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/write-file-atomic": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-each-series": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", + "integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-filter": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", + "integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-map": "^7.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-is-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", + "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-map": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.2.tgz", + "integrity": "sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true, + "license": "MIT" + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/parsimmon": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.18.1.tgz", + "integrity": "sha512-u7p959wLfGAhJpSDJVYXoyMCXWYwHia78HhRBWqk7AIbxdmlrfdp5wX0l3xv/iTSH5HvhN9K7o26hwwpgS5Nmw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pretty-ms": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.1.0.tgz", + "integrity": "sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/promisified-properties": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/promisified-properties/-/promisified-properties-3.0.0.tgz", + "integrity": "sha512-ARteuBuUpPg/+spsMhcKHvdtOW/q8btyyVYYxxegGgx+7u9ix9at8DjP2KM2t8+4SuI8wBLt+3X876FMQx91yQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parsimmon": "^1.13.0" + }, + "engines": { + "node": ">=18", + "npm": ">=7.12" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true, + "license": "ISC" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/read-package-up": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz", + "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up-simple": "^1.0.0", + "read-pkg": "^9.0.0", + "type-fest": "^4.6.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", + "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.3", + "normalize-package-data": "^6.0.0", + "parse-json": "^8.0.0", + "type-fest": "^4.6.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-11.0.0.tgz", + "integrity": "sha512-LOVbvF1Q0SZdjClSefZ0Nz5z8u+tIE7mV5NibzmE9VYmDe9CaBbAVtz1veOSZbofrdsilxuDAYnFenukZVp8/Q==", + "deprecated": "Renamed to read-package-up", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up-simple": "^1.0.0", + "read-pkg": "^9.0.0", + "type-fest": "^4.6.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/parse-json": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz", + "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "index-to-position": "^0.1.2", + "type-fest": "^4.7.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/redeyed": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", + "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esprima": "~4.0.0" + } + }, + "node_modules/registry-auth-token": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pnpm/npm-conf": "^2.1.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/semantic-release": { + "version": "24.1.2", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.1.2.tgz", + "integrity": "sha512-hvEJ7yI97pzJuLsDZCYzJgmRxF8kiEJvNZhf0oiZQcexw+Ycjy4wbdsn/sVMURgNCu8rwbAXJdBRyIxM4pe32g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@semantic-release/commit-analyzer": "^13.0.0-beta.1", + "@semantic-release/error": "^4.0.0", + "@semantic-release/github": "^11.0.0", + "@semantic-release/npm": "^12.0.0", + "@semantic-release/release-notes-generator": "^14.0.0-beta.1", + "aggregate-error": "^5.0.0", + "cosmiconfig": "^9.0.0", + "debug": "^4.0.0", + "env-ci": "^11.0.0", + "execa": "^9.0.0", + "figures": "^6.0.0", + "find-versions": "^6.0.0", + "get-stream": "^6.0.0", + "git-log-parser": "^1.2.0", + "hook-std": "^3.0.0", + "hosted-git-info": "^8.0.0", + "import-from-esm": "^1.3.1", + "lodash-es": "^4.17.21", + "marked": "^12.0.0", + "marked-terminal": "^7.0.0", + "micromatch": "^4.0.2", + "p-each-series": "^3.0.0", + "p-reduce": "^3.0.0", + "read-package-up": "^11.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.3.2", + "semver-diff": "^4.0.0", + "signale": "^1.2.1", + "yargs": "^17.5.1" + }, + "bin": { + "semantic-release": "bin/semantic-release.js" + }, + "engines": { + "node": ">=20.8.1" + } + }, + "node_modules/semantic-release/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/semantic-release/node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/execa": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.4.0.tgz", + "integrity": "sha512-yKHlle2YGxZE842MERVIplWwNH5VYmqqcPFgtnlU//K8gxuFFXu0pwd/CrfXTumFpeEiufsP7+opT/bPJa1yVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.3", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" + }, + "engines": { + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/semantic-release/node_modules/execa/node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/human-signals": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", + "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/semantic-release/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/p-reduce": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", + "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semantic-release/node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver-regex": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", + "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/signale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", + "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.3.2", + "figures": "^2.0.0", + "pkg-conf": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/signale/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/signale/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/signale/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/signale/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/signale/node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/signale/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/signale/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/skin-tone": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-emoji-modifier-base": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spawn-error-forwarder": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", + "integrity": "sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/super-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.0.0.tgz", + "integrity": "sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-timeout": "^1.0.1", + "time-span": "^5.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", + "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/temp-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/tempy": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", + "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-stream": "^3.0.0", + "temp-dir": "^3.0.0", + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/text-extensions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", + "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/time-span": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz", + "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "convert-hrtime": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/traverse": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", + "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/type-fest": { + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", + "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unicode-emoji-modifier-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/universal-user-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz", + "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==", + "dev": true, + "license": "ISC" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/url-join": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", + "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yoctocolors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", + "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..105a5ca87 --- /dev/null +++ b/package.json @@ -0,0 +1,9 @@ +{ + "devDependencies": { + "@saithodev/semantic-release-backmerge": "^4.0.1", + "@semantic-release/changelog": "^6.0.3", + "@semantic-release/git": "^10.0.1", + "gradle-semantic-release-plugin": "^1.10.1", + "semantic-release": "^24.1.2" + } +} diff --git a/patch.sh b/patch.sh new file mode 100755 index 000000000..cb1d390c7 --- /dev/null +++ b/patch.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +mkdir -p "src/incremental_delivery/sysprop/include/" +cp "misc/IncrementalProperties.sysprop.h" "src/incremental_delivery/sysprop/include/" +cp "misc/IncrementalProperties.sysprop.cpp" "src/incremental_delivery/sysprop/" + +cp "misc/platform_tools_version.h" "src/soong/cc/libbuildversion/include" + +# As our sources are in src and not in frameworks/base/tools/aapt2 we need to change the inclusions +configPattern="s#frameworks/base/tools/aapt2/Configuration.proto#Configuration.proto#g" +ressourcesPattern="s#frameworks/base/tools/aapt2/Resources.proto#Resources.proto#g" + +sed -i "$configPattern" "src/base/tools/aapt2/Resources.proto" +sed -i "$configPattern" "src/base/tools/aapt2/ResourcesInternal.proto" + +sed -i "$ressourcesPattern" "src/base/tools/aapt2/ApkInfo.proto" +sed -i "$ressourcesPattern" "src/base/tools/aapt2/ResourcesInternal.proto" + + +# Apply modification made by IBotPeaches for apktool +git apply "patches/apktool_ibotpeaches.patch" +git apply "patches/protobuf.patch" + +ln -sf "src/googletest" "src/boringssl/src/third_party/googletest" diff --git a/patches/aapt2.patch b/patches/aapt2.patch deleted file mode 100644 index 8803cef2e..000000000 --- a/patches/aapt2.patch +++ /dev/null @@ -1,174 +0,0 @@ -Submodule src/base contains modified content -diff --git a/src/base/tools/aapt2/ResourceTable.cpp b/src/base/tools/aapt2/ResourceTable.cpp -index 8ab1493c6ab3..3a855f0f6866 100644 ---- a/src/base/tools/aapt2/ResourceTable.cpp -+++ b/src/base/tools/aapt2/ResourceTable.cpp -@@ -460,9 +460,7 @@ bool ResourceTable::AddResource(NewResource&& res, IDiagnostics* diag) { - const bool validate = validation_ == Validation::kEnabled; - const Source source = res.value ? res.value->GetSource() : Source{}; - if (validate && !res.allow_mangled && !IsValidResourceEntryName(res.name.entry)) { -- diag->Error(DiagMessage(source) -- << "resource '" << res.name << "' has invalid entry name '" << res.name.entry); -- return false; -+ return true; - } - - if (res.id.has_value() && !res.id->first.is_valid()) { -diff --git a/src/base/tools/aapt2/ResourceUtils.cpp b/src/base/tools/aapt2/ResourceUtils.cpp -index e0e80ac02dea..f74d7f106220 100644 ---- a/src/base/tools/aapt2/ResourceUtils.cpp -+++ b/src/base/tools/aapt2/ResourceUtils.cpp -@@ -222,7 +222,7 @@ bool ParseAttributeReference(const StringPiece& str, ResourceNameRef* out_ref) { - } - - if (!type.empty() && type != "attr") { -- return false; -+ // Apktool: Don't die out if private resource. - } - - if (entry.empty()) { -diff --git a/src/base/tools/aapt2/Resources.proto b/src/base/tools/aapt2/Resources.proto -index 95b794964068..3cdadfd637e3 100644 ---- a/src/base/tools/aapt2/Resources.proto -+++ b/src/base/tools/aapt2/Resources.proto -@@ -16,7 +16,7 @@ - - syntax = "proto3"; - --import "frameworks/base/tools/aapt2/Configuration.proto"; -+import "Configuration.proto"; - - package aapt.pb; - -@@ -636,4 +636,4 @@ message StyleString { - message UntranslatableSection { - uint64 start_index = 1; - uint64 end_index = 2; --} -\ No newline at end of file -+} -diff --git a/src/base/tools/aapt2/ResourcesInternal.proto b/src/base/tools/aapt2/ResourcesInternal.proto -index b0ed3da33368..97aa5af7724f 100644 ---- a/src/base/tools/aapt2/ResourcesInternal.proto -+++ b/src/base/tools/aapt2/ResourcesInternal.proto -@@ -16,8 +16,8 @@ - - syntax = "proto3"; - --import "frameworks/base/tools/aapt2/Configuration.proto"; --import "frameworks/base/tools/aapt2/Resources.proto"; -+import "Configuration.proto"; -+import "Resources.proto"; - - package aapt.pb.internal; - -diff --git a/src/base/tools/aapt2/cmd/Link.cpp b/src/base/tools/aapt2/cmd/Link.cpp -index e4d0f3b6bd23..aa43ee07bfac 100644 ---- a/src/base/tools/aapt2/cmd/Link.cpp -+++ b/src/base/tools/aapt2/cmd/Link.cpp -@@ -2326,9 +2326,9 @@ int LinkCommand::Action(const std::vector& args) { - if (package_id_int > std::numeric_limits::max() - || package_id_int == kFrameworkPackageId - || (!options_.allow_reserved_package_id && package_id_int < kAppPackageId)) { -- context.GetDiagnostics()->Error( -+ context.GetDiagnostics()->Warn( - DiagMessage() << StringPrintf( -- "invalid package ID 0x%02x. Must be in the range 0x7f-0xff.", package_id_int)); -+ "invalid package ID 0x%02x. Must be in the range 0x7f-0xff. Ignoring...", package_id_int)); - return 1; - } - context.SetPackageId(static_cast(package_id_int)); -@@ -2410,6 +2410,23 @@ int LinkCommand::Action(const std::vector& args) { - ".mpg", ".mpeg", ".mp4", ".m4a", ".m4v", ".3gp", ".3gpp", ".3g2", ".3gpp2", ".wma", ".wmv", - ".webm", ".mkv"}); - -+ // Populate no compress extensions specified in the extensions file. -+ if (options_.extensions_to_not_compress_path) { -+ std::ifstream extensionsFile(options_.extensions_to_not_compress_path.value()); -+ -+ if (extensionsFile.fail()) { -+ context.GetDiagnostics()->Error( -+ DiagMessage() << "could not open extensions file " -+ << options_.extensions_to_not_compress_path.value() -+ << " for reading"); -+ return 1; -+ } -+ -+ for (std::string line; getline(extensionsFile, line);) { -+ options_.extensions_to_not_compress.insert(line); -+ } -+ } -+ - // Turn off auto versioning for static-libs. - if (context.GetPackageType() == PackageType::kStaticLib) { - options_.no_auto_version = true; -diff --git a/src/base/tools/aapt2/cmd/Link.h b/src/base/tools/aapt2/cmd/Link.h -index 768b4b2c7bfd..6dd220515674 100644 ---- a/src/base/tools/aapt2/cmd/Link.h -+++ b/src/base/tools/aapt2/cmd/Link.h -@@ -71,6 +71,7 @@ struct LinkOptions { - bool do_not_compress_anything = false; - std::unordered_set extensions_to_not_compress; - Maybe regex_to_not_compress; -+ Maybe extensions_to_not_compress_path; - - // Static lib options. - bool no_static_lib_packages = false; -@@ -272,6 +273,8 @@ class LinkCommand : public Command { - &options_.manifest_fixer_options.rename_overlay_target_package); - AddOptionalFlagList("-0", "File suffix not to compress.", - &options_.extensions_to_not_compress); -+ AddOptionalFlag("-e", "File containing list of extensions not to compress.", -+ &options_.extensions_to_not_compress_path); - AddOptionalSwitch("--no-compress", "Do not compress any resources.", - &options_.do_not_compress_anything); - AddOptionalSwitch("--keep-raw-values", "Preserve raw attribute values in xml files.", -diff --git a/src/base/tools/aapt2/java/JavaClassGenerator.cpp b/src/base/tools/aapt2/java/JavaClassGenerator.cpp -index de6524dc7027..0a968c11a13b 100644 ---- a/src/base/tools/aapt2/java/JavaClassGenerator.cpp -+++ b/src/base/tools/aapt2/java/JavaClassGenerator.cpp -@@ -58,6 +58,8 @@ static const std::set sJavaIdentifiers = { - "true", "false", "null"}; - - static bool IsValidSymbol(const StringPiece& symbol) { -+ // Apktool: Everything is a valid symbol -+ return true; - return sJavaIdentifiers.find(symbol) == sJavaIdentifiers.end(); - } - -diff --git a/src/base/tools/aapt2/link/PrivateAttributeMover.cpp b/src/base/tools/aapt2/link/PrivateAttributeMover.cpp -index 675b02a7e161..fb2b11da5ee4 100644 ---- a/src/base/tools/aapt2/link/PrivateAttributeMover.cpp -+++ b/src/base/tools/aapt2/link/PrivateAttributeMover.cpp -@@ -81,7 +81,6 @@ bool PrivateAttributeMover::Consume(IAaptContext* context, ResourceTable* table) - } - - ResourceTableType* priv_attr_type = package->FindOrCreateType(ResourceType::kAttrPrivate); -- CHECK(priv_attr_type->entries.empty()); - priv_attr_type->entries = std::move(private_attr_entries); - } - return true; -diff --git a/src/base/tools/aapt2/util/Util.cpp b/src/base/tools/aapt2/util/Util.cpp -index d7a8e6fe6ada..74457add2e6b 100644 ---- a/src/base/tools/aapt2/util/Util.cpp -+++ b/src/base/tools/aapt2/util/Util.cpp -@@ -23,7 +23,6 @@ - - #include "android-base/stringprintf.h" - #include "androidfw/StringPiece.h" --#include "build/version.h" - - #include "text/Unicode.h" - #include "text/Utf8Iterator.h" -@@ -231,10 +230,7 @@ std::string GetToolFingerprint() { - // Update minor version whenever a feature or flag is added. - static const char* const sMinorVersion = "19"; - -- // The build id of aapt2 binary. -- static const std::string sBuildId = android::build::GetBuildNumber(); -- -- return android::base::StringPrintf("%s.%s-%s", sMajorVersion, sMinorVersion, sBuildId.c_str()); -+ return android::base::StringPrintf("%s.%s", sMajorVersion, sMinorVersion); - } - - static size_t ConsumeDigits(const char* start, const char* end) { diff --git a/patches/androidfw.patch b/patches/androidfw.patch deleted file mode 100644 index 9a29cd998..000000000 --- a/patches/androidfw.patch +++ /dev/null @@ -1,70 +0,0 @@ -Submodule src/base contains modified content -diff --git a/src/base/libs/androidfw/ResourceTypes.cpp b/src/base/libs/androidfw/ResourceTypes.cpp -index cae2d0bc16b3..13c5f8fc84e8 100644 ---- a/src/base/libs/androidfw/ResourceTypes.cpp -+++ b/src/base/libs/androidfw/ResourceTypes.cpp -@@ -43,7 +43,7 @@ - #include - #include - --#ifdef __ANDROID__ -+#if 0 - #include - - #endif -diff --git a/src/base/libs/androidfw/include/androidfw/ResourceTypes.h b/libs/androidfw/include/androidfw/ResourceTypes.h -index 3d66244646d5..2d27c34a9154 100644 ---- a/src/base/libs/androidfw/include/androidfw/ResourceTypes.h -+++ b/src/base/libs/androidfw/include/androidfw/ResourceTypes.h -@@ -500,7 +500,7 @@ struct ResStringPool_span - - // The range of characters in the string that this span applies to. - uint32_t firstChar, lastChar; --}; -+} __attribute__((__packed__, aligned(1))); - - /** - * Convenience class for accessing data in a ResStringPool resource. -diff --git a/src/base/libs/androidfw/include/androidfw/StringPiece.h b/src/base/libs/androidfw/include/androidfw/StringPiece.h -index 921877dc4982..27e27e1c2b94 100644 ---- a/src/base/libs/androidfw/include/androidfw/StringPiece.h -+++ b/src/base/libs/androidfw/include/androidfw/StringPiece.h -@@ -75,6 +75,11 @@ class BasicStringPiece { - bool operator>(const BasicStringPiece& rhs) const; - bool operator==(const BasicStringPiece& rhs) const; - bool operator!=(const BasicStringPiece& rhs) const; -+ // for std::basic_string -+ bool operator<(const std::basic_string& rhs) const; -+ bool operator>(const std::basic_string& rhs) const; -+ bool operator==(const std::basic_string& rhs) const; -+ bool operator!=(const std::basic_string& rhs) const; - - const_iterator begin() const; - const_iterator end() const; -@@ -256,6 +261,26 @@ inline bool BasicStringPiece::operator!=(const BasicStringPiece& r - return compare(rhs) != 0; - } - -+template -+inline bool BasicStringPiece::operator<(const std::basic_string& rhs) const { -+ return compare(BasicStringPiece(rhs)) < 0; -+} -+ -+template -+inline bool BasicStringPiece::operator>(const std::basic_string& rhs) const { -+ return compare(BasicStringPiece(rhs)) > 0; -+} -+ -+template -+inline bool BasicStringPiece::operator==(const std::basic_string& rhs) const { -+ return compare(BasicStringPiece(rhs)) == 0; -+} -+ -+template -+inline bool BasicStringPiece::operator!=(const std::basic_string& rhs) const{ -+ return compare(BasicStringPiece(rhs)) != 0; -+} -+ - template - inline typename BasicStringPiece::const_iterator BasicStringPiece::begin() const { - return data_; diff --git a/patches/apktool_ibotpeaches.patch b/patches/apktool_ibotpeaches.patch new file mode 100644 index 000000000..dce2e83b1 --- /dev/null +++ b/patches/apktool_ibotpeaches.patch @@ -0,0 +1,648 @@ +diff --git a/src/base/libs/androidfw/ConfigDescription.cpp b/src/base/libs/androidfw/ConfigDescription.cpp +index e08030c4..7ee5457b 100644 +--- a/src/base/libs/androidfw/ConfigDescription.cpp ++++ b/src/base/libs/androidfw/ConfigDescription.cpp +@@ -51,7 +51,7 @@ static bool parseMcc(const char* name, ResTable_config* out) { + while (*c >= '0' && *c <= '9') { + c++; + } +- if (*c != 0) return false; ++ if (*c != 0 && c - val != 4) return false; + if (c - val != 3) return false; + + int d = atoi(val); +@@ -82,7 +82,7 @@ static bool parseMnc(const char* name, ResTable_config* out) { + c++; + } + if (*c != 0) return false; +- if (c - val == 0 || c - val > 3) return false; ++ if (c - val == 0 || c - val > 4) return false; + + if (out) { + out->mnc = atoi(val); +@@ -887,7 +887,10 @@ void ConfigDescription::ApplyVersionForCompatibility( + } + + if (min_sdk > config->sdkVersion) { +- config->sdkVersion = min_sdk; ++ // Apktool: We are skipping this entirely in apktool, because the application has ++ // already been built once. Doing this changes the application with implicit ++ // version information, which may not have been in the original. ++ //config->sdkVersion = min_sdk; + } + } + +diff --git a/src/base/libs/androidfw/ResourceTypes.cpp b/src/base/libs/androidfw/ResourceTypes.cpp +index a3dd9833..ec9706b3 100644 +--- a/src/base/libs/androidfw/ResourceTypes.cpp ++++ b/src/base/libs/androidfw/ResourceTypes.cpp +@@ -5647,7 +5647,7 @@ bool ResTable::stringToFloat(const char16_t* s, size_t len, Res_value* outValue) + return false; + } + +-bool ResTable::stringToValue(Res_value* outValue, String16* outString, ++bool ResTable::stringToValue(const ssize_t FORCED_PACKAGE_ID, Res_value* outValue, String16* outString, + const char16_t* s, size_t len, + bool preserveSpaces, bool coerceType, + uint32_t attrID, +@@ -5801,7 +5801,7 @@ bool ResTable::stringToValue(Res_value* outValue, String16* outString, + } + + uint32_t packageId = Res_GETPACKAGE(rid) + 1; +- if (packageId != APP_PACKAGE_ID && packageId != SYS_PACKAGE_ID) { ++ if (packageId != APP_PACKAGE_ID && packageId != SYS_PACKAGE_ID && packageId != (uint32_t)FORCED_PACKAGE_ID) { + outValue->dataType = Res_value::TYPE_DYNAMIC_REFERENCE; + } + outValue->data = rid; +@@ -5822,7 +5822,7 @@ bool ResTable::stringToValue(Res_value* outValue, String16* outString, + outValue->data = rid; + outValue->dataType = Res_value::TYPE_DYNAMIC_REFERENCE; + return true; +- } else if (packageId == APP_PACKAGE_ID || packageId == SYS_PACKAGE_ID) { ++ } else if (packageId == APP_PACKAGE_ID || packageId == SYS_PACKAGE_ID || packageId == (uint32_t)FORCED_PACKAGE_ID) { + // We accept packageId's generated as 0x01 in order to support + // building the android system resources + outValue->data = rid; +@@ -5968,7 +5968,7 @@ bool ResTable::stringToValue(Res_value* outValue, String16* outString, + } + + uint32_t packageId = Res_GETPACKAGE(rid) + 1; +- if (packageId != APP_PACKAGE_ID && packageId != SYS_PACKAGE_ID) { ++ if (packageId != APP_PACKAGE_ID && packageId != SYS_PACKAGE_ID && packageId != (uint32_t)FORCED_PACKAGE_ID) { + outValue->dataType = Res_value::TYPE_DYNAMIC_ATTRIBUTE; + } + outValue->data = rid; +@@ -5983,7 +5983,7 @@ bool ResTable::stringToValue(Res_value* outValue, String16* outString, + outValue->data = rid; + outValue->dataType = Res_value::TYPE_DYNAMIC_ATTRIBUTE; + return true; +- } else if (packageId == APP_PACKAGE_ID || packageId == SYS_PACKAGE_ID) { ++ } else if (packageId == APP_PACKAGE_ID || packageId == SYS_PACKAGE_ID || packageId == (uint32_t)FORCED_PACKAGE_ID) { + // We accept packageId's generated as 0x01 in order to support + // building the android system resources + outValue->data = rid; +diff --git a/src/base/libs/androidfw/include/androidfw/ResourceTypes.h b/src/base/libs/androidfw/include/androidfw/ResourceTypes.h +index c2648909..3b850fac 100644 +--- a/src/base/libs/androidfw/include/androidfw/ResourceTypes.h ++++ b/src/base/libs/androidfw/include/androidfw/ResourceTypes.h +@@ -2214,7 +2214,7 @@ public: + // resolve resources that do not exist in this ResTable. If 'attrType' is + // supplied, the value will be type checked for this format if 'attrID' + // is not supplied or found. +- bool stringToValue(Res_value* outValue, String16* outString, ++ bool stringToValue(const ssize_t FORCED_PACKAGE_ID, Res_value* outValue, String16* outString, + const char16_t* s, size_t len, + bool preserveSpaces, bool coerceType, + uint32_t attrID = 0, +diff --git a/src/base/tools/aapt/AaptAssets.cpp b/src/base/tools/aapt/AaptAssets.cpp +index 82bcfc2c..17a74898 100644 +--- a/src/base/tools/aapt/AaptAssets.cpp ++++ b/src/base/tools/aapt/AaptAssets.cpp +@@ -38,6 +38,9 @@ static const String8 kResString(kResourceDir); + */ + static bool validateFileName(const char* fileName) + { ++ // Apktool: Don't validate filename. ++ return true; ++ + const char* cp = fileName; + size_t len = 0; + +@@ -1620,6 +1623,9 @@ sp AaptAssets::resDir(const String8& name) const + bool + valid_symbol_name(const String8& symbol) + { ++ // Apktool: Don't validate symbol name. ++ return true; ++ + static char const * const KEYWORDS[] = { + "abstract", "assert", "boolean", "break", + "byte", "case", "catch", "char", "class", "const", "continue", +diff --git a/src/base/tools/aapt/AaptConfig.cpp b/src/base/tools/aapt/AaptConfig.cpp +index 7578f79f..f2b1fbaf 100644 +--- a/src/base/tools/aapt/AaptConfig.cpp ++++ b/src/base/tools/aapt/AaptConfig.cpp +@@ -260,6 +260,9 @@ bool parseCommaSeparatedList(const String8& str, std::set* ou + } + + void applyVersionForCompatibility(ConfigDescription* config) { ++ // Apktool: Don't apply implicit version during build. ++ return; ++ + if (config == NULL) { + return; + } +@@ -315,7 +318,7 @@ bool parseMcc(const char* name, ResTable_config* out) { + c++; + } + if (*c != 0) return false; +- if (c-val != 3) return false; ++ if (c-val != 3 && c-val != 4) return false; + + int d = atoi(val); + if (d != 0) { +@@ -345,7 +348,7 @@ bool parseMnc(const char* name, ResTable_config* out) { + c++; + } + if (*c != 0) return false; +- if (c-val == 0 || c-val > 3) return false; ++ if (c-val == 0 || c-val > 4) return false; + + if (out) { + out->mnc = atoi(val); +@@ -543,6 +546,27 @@ bool parseUiModeType(const char* name, ResTable_config* out) { + (out->uiMode&~ResTable_config::MASK_UI_MODE_TYPE) + | ResTable_config::UI_MODE_TYPE_VR_HEADSET; + return true; ++ } else if (strcmp(name, "smallui") == 0) { ++ if (out) out->uiMode = ++ (out->uiMode&~ResTable_config::MASK_UI_MODE_TYPE) ++ | 0xC; ++ return true; ++ } else if (strcmp(name, "mediumui") == 0) { ++ if (out) out->uiMode = ++ (out->uiMode&ResTable_config::MASK_UI_MODE_TYPE) ++ | 0xD; ++ return true; ++ } else if (strcmp(name, "largeui") == 0) { ++ if (out) out->uiMode = ++ (out->uiMode&ResTable_config::MASK_UI_MODE_TYPE) ++ | 0xE; ++ return true; ++ } else if (strcmp(name, "hugeui") == 0) { ++ if (out) out->uiMode = 0xF; ++ return true; ++ } else if (strcmp(name, "godzillaui") == 0) { ++ if (out) out->uiMode = 0xB; ++ return true; + } + + return false; +diff --git a/src/base/tools/aapt/Bundle.h b/src/base/tools/aapt/Bundle.h +index deb9cc08..b0969ba5 100644 +--- a/src/base/tools/aapt/Bundle.h ++++ b/src/base/tools/aapt/Bundle.h +@@ -58,7 +58,7 @@ public: + mNoVersionTransitions(false), + mCrunchedOutputDir(NULL), mProguardFile(NULL), mMainDexProguardFile(NULL), + mAndroidManifestFile(NULL), mPublicOutputFile(NULL), +- mRClassDir(NULL), mResourceIntermediatesDir(NULL), mManifestMinSdkVersion(NULL), ++ mRClassDir(NULL), mResourceIntermediatesDir(NULL), mForcedPackageId(-1), mManifestMinSdkVersion(NULL), + mMinSdkVersion(NULL), mTargetSdkVersion(NULL), mMaxSdkVersion(NULL), + mVersionCode(NULL), mVersionName(NULL), mReplaceVersion(false), mCustomPackage(NULL), + mExtraPackages(NULL), mMaxResVersion(NULL), mDebugMode(false), mNonConstantId(false), +@@ -180,6 +180,8 @@ public: + const android::String8& getFeatureOfPackage() const { return mFeatureOfPackage; } + void setFeatureAfterPackage(const char* str) { mFeatureAfterPackage = str; } + const android::String8& getFeatureAfterPackage() const { return mFeatureAfterPackage; } ++ int getForcedPackageId() const { return mForcedPackageId; } ++ void setForcedPackageId(int val) { mForcedPackageId = val; } + + const char* getManifestMinSdkVersion() const { return mManifestMinSdkVersion; } + void setManifestMinSdkVersion(const char* val) { mManifestMinSdkVersion = val; } +@@ -327,6 +329,7 @@ private: + android::String8 mFeatureOfPackage; + android::String8 mFeatureAfterPackage; + android::String8 mRevisionCode; ++ int mForcedPackageId; + const char* mManifestMinSdkVersion; + const char* mMinSdkVersion; + const char* mTargetSdkVersion; +diff --git a/src/base/tools/aapt/Main.cpp b/src/base/tools/aapt/Main.cpp +index 66a05101..0d156a9c 100644 +--- a/src/base/tools/aapt/Main.cpp ++++ b/src/base/tools/aapt/Main.cpp +@@ -16,6 +16,7 @@ + #include + #include + #include ++#include + + using namespace android; + +@@ -72,7 +73,7 @@ void usage(void) + " xmlstrings Print the strings of the given compiled xml assets.\n\n", gProgName); + fprintf(stderr, + " %s p[ackage] [-d][-f][-m][-u][-v][-x][-z][-M AndroidManifest.xml] \\\n" +- " [-0 extension [-0 extension ...]] [-g tolerance] [-j jarfile] \\\n" ++ " [-0 extension [-0 extension ...]] [-e extensions_file] [-g tolerance] [-j jarfile] \\\n" + " [--debug-mode] [--min-sdk-version VAL] [--target-sdk-version VAL] \\\n" + " [--app-version VAL] [--app-version-name TEXT] [--custom-package VAL] \\\n" + " [--rename-manifest-package PACKAGE] \\\n" +@@ -146,6 +147,8 @@ void usage(void) + " -0 specifies an additional extension for which such files will not\n" + " be stored compressed in the .apk. An empty string means to not\n" + " compress any files at all.\n" ++ " -e specifies path to a file containing a list of additional extensions for which such files will not\n" ++ " be stored compressed in the .apk.\n" + " --debug-mode\n" + " inserts android:debuggable=\"true\" in to the application node of the\n" + " manifest, making the application debuggable even on production devices.\n" +@@ -153,6 +156,8 @@ void usage(void) + " when used with \"dump badging\" also includes meta-data tags.\n" + " --pseudo-localize\n" + " generate resources for pseudo-locales (en-XA and ar-XB).\n" ++ " --forced-package-id\n" ++ " forces value as package-id\n" + " --min-sdk-version\n" + " inserts android:minSdkVersion in to manifest. If the version is 7 or\n" + " higher, the default encoding for resources will be in UTF-8.\n" +@@ -532,9 +537,37 @@ int main(int argc, char* const argv[]) + bundle.setCompressionMethod(ZipEntry::kCompressStored); + } + break; ++ case 'e': { ++ argc--; ++ argv++; ++ if (!argc) { ++ fprintf(stderr, "ERROR: No argument supplied for '-e' option\n"); ++ wantUsage = true; ++ goto bail; ++ } ++ std::ifstream extensionsFile(argv[0]); ++ ++ if (extensionsFile.fail()) { ++ fprintf(stderr, "ERROR: Could not open extensions file %s for reading\n", argv[0]); ++ goto bail; ++ } ++ ++ for (std::string line; getline(extensionsFile, line);) { ++ bundle.addNoCompressExtension(line.c_str()); ++ } ++ break; ++ } + case '-': + if (strcmp(cp, "-debug-mode") == 0) { + bundle.setDebugMode(true); ++ } else if (strcmp(cp, "-forced-package-id") == 0) { ++ argc--; ++ argv++; ++ if (!argc) { ++ fprintf(stderr, "ERROR: No argument supplied for '--forced-package-id' option\n"); ++ wantUsage = true; ++ goto bail; ++ } + } else if (strcmp(cp, "-min-sdk-version") == 0) { + argc--; + argv++; +diff --git a/src/base/tools/aapt/Resource.cpp b/src/base/tools/aapt/Resource.cpp +index 7e4e186e..159c9f75 100644 +--- a/src/base/tools/aapt/Resource.cpp ++++ b/src/base/tools/aapt/Resource.cpp +@@ -270,6 +270,19 @@ static status_t parsePackage(Bundle* bundle, const sp& assets, + bundle->setRevisionCode(String8(block.getAttributeStringValue(revisionCodeIndex, &len)).c_str()); + } + ++ // Extract platformBuild info from current AndroidManifest.xml ++ ssize_t platformBuildVersionCodeIndex = block.indexOfAttribute(NULL, "platformBuildVersionCode"); ++ if (platformBuildVersionCodeIndex >= 0) { ++ const char16_t* platformBuildVersionCode16 = block.getAttributeStringValue(platformBuildVersionCodeIndex, &len); ++ bundle->setPlatformBuildVersionCode(String8(platformBuildVersionCode16)); ++ } ++ ++ ssize_t platformBuildVersionNameIndex = block.indexOfAttribute(NULL, "platformBuildVersionName"); ++ if (platformBuildVersionNameIndex >= 0) { ++ const char16_t* platformBuildVersionName16 = block.getAttributeStringValue(platformBuildVersionNameIndex, &len); ++ bundle->setPlatformBuildVersionName(String8(platformBuildVersionName16)); ++ } ++ + String16 uses_sdk16("uses-sdk"); + while ((code=block.next()) != ResXMLTree::END_DOCUMENT + && code != ResXMLTree::BAD_DOCUMENT) { +@@ -315,9 +328,10 @@ static status_t makeFileResources(Bundle* bundle, const sp& assets, + const char16_t* const end = str + baseName.size(); + while (str < end) { + if (!((*str >= 'a' && *str <= 'z') ++ || (*str >= 'A' && *str <= 'Z') + || (*str >= '0' && *str <= '9') +- || *str == '_' || *str == '.')) { +- fprintf(stderr, "%s: Invalid file name: must contain only [a-z0-9_.]\n", ++ || *str == '_' || *str == '.' || *str == '$')) { ++ fprintf(stderr, "%s: Invalid file name: must contain only [a-zA-Z0-9$_.]\n", + it.getPath().c_str()); + hasErrors = true; + } +@@ -551,7 +565,8 @@ static int validateAttr(const String8& path, const ResTable& table, + fprintf(stderr, "%s:%d: Tag <%s> attribute %s has invalid character '%c'.\n", + path.c_str(), parser.getLineNumber(), + String8(parser.getElementName(&len)).c_str(), attr, (char)str[i]); +- return (int)i; ++ // Apktool - ignore invalid characters. ++ // return (int)i; + } + } + } +@@ -1140,8 +1155,10 @@ static ssize_t extractPlatformBuildVersion(AssetManager& assets, Bundle* bundle) + + Asset* asset = assets.openNonAsset(cookie, "AndroidManifest.xml", Asset::ACCESS_STREAMING); + if (asset == NULL) { +- fprintf(stderr, "ERROR: Platform AndroidManifest.xml not found\n"); +- return UNKNOWN_ERROR; ++ // Apktool ++ // fprintf(stderr, "ERROR: Platform AndroidManifest.xml not found\n"); ++ // return UNKNOWN_ERROR; ++ return NO_ERROR; + } + + ssize_t result = NO_ERROR; +diff --git a/src/base/tools/aapt/ResourceTable.cpp b/src/base/tools/aapt/ResourceTable.cpp +index 9fb73194..c5aec78c 100644 +--- a/src/base/tools/aapt/ResourceTable.cpp ++++ b/src/base/tools/aapt/ResourceTable.cpp +@@ -111,7 +111,7 @@ status_t compileXmlFile(const Bundle* bundle, + } + + if ((options&XML_COMPILE_PARSE_VALUES) != 0) { +- status_t err = root->parseValues(assets, table); ++ status_t err = root->parseValues(bundle, assets, table); + if (err != NO_ERROR) { + hasErrors = true; + } +@@ -1765,24 +1765,26 @@ ResourceTable::ResourceTable(Bundle* bundle, const String16& assetsPackage, Reso + , mNumLocal(0) + , mBundle(bundle) + { +- ssize_t packageId = -1; +- switch (mPackageType) { +- case App: +- case AppFeature: +- packageId = 0x7f; +- break; ++ ssize_t packageId = mBundle->getForcedPackageId(); ++ if (packageId == -1) { ++ switch (mPackageType) { ++ case App: ++ case AppFeature: ++ packageId = 0x7f; ++ break; + +- case System: +- packageId = 0x01; +- break; ++ case System: ++ packageId = 0x01; ++ break; + +- case SharedLibrary: +- packageId = 0x00; +- break; ++ case SharedLibrary: ++ packageId = 0x00; ++ break; + +- default: +- assert(0); +- break; ++ default: ++ assert(0); ++ break; ++ } + } + sp package = new Package(mAssetsPackage, packageId); + mPackages.add(assetsPackage, package); +@@ -2317,7 +2319,7 @@ bool ResourceTable::stringToValue(Res_value* outValue, StringPool* pool, + if (style == NULL || style->size() == 0) { + // Text is not styled so it can be any type... let's figure it out. + res = mAssets->getIncludedResources() +- .stringToValue(outValue, &finalStr, str.c_str(), str.size(), preserveSpaces, ++ .stringToValue(mBundle->getForcedPackageId(), outValue, &finalStr, str.c_str(), str.size(), preserveSpaces, + coerceType, attrID, NULL, &mAssetsPackage, this, + accessorCookie, attrType); + } else { +@@ -2658,8 +2660,9 @@ status_t ResourceTable::assignResourceIds() + const size_t N = t->getOrderedConfigs().size(); + t->setIndex(ti + 1 + typeIdOffset); + +- LOG_ALWAYS_FATAL_IF(ti == 0 && attr != t, +- "First type is not attr!"); ++ // Apktool ++ // LOG_ALWAYS_FATAL_IF(ti == 0 && attr != t, ++ // "First type is not attr!"); + + for (size_t ei=0; ei c = t->getOrderedConfigs().itemAt(ei); +@@ -3559,7 +3562,8 @@ status_t ResourceTable::Entry::addToBag(const SourcePos& sourcePos, + // one an attr and one an id, with the same name. Not something we + // currently ever have to worry about. + ssize_t origKey = mBag.indexOfKey(key); +- if (origKey >= 0) { ++ // Apktool: Make statement false so we pack duplicate bag items if needed. ++ if (origKey >= 0 && 1 == 2) { + if (!replace) { + const Item& item(mBag.valueAt(origKey)); + sourcePos.error("Resource entry %s already has bag item %s.\n" +@@ -4603,6 +4607,9 @@ bool ResourceTable::shouldGenerateVersionedResource( + * attribute will be respected. + */ + status_t ResourceTable::modifyForCompat(const Bundle* bundle) { ++ // Apktool: Don't modify for compatibility. ++ return NO_ERROR; ++ + const int minSdk = getMinSdkVersion(bundle); + if (minSdk >= SDK_LOLLIPOP_MR1) { + // Lollipop MR1 and up handles public attributes differently, no +@@ -4833,6 +4840,9 @@ status_t ResourceTable::modifyForCompat(const Bundle* bundle, + const String16& resourceName, + const sp& target, + const sp& root) { ++ // Apktool: Skip compatibility checks ++ return NO_ERROR; ++ + const String16 vector16("vector"); + const String16 animatedVector16("animated-vector"); + const String16 pathInterpolator16("pathInterpolator"); +diff --git a/src/base/tools/aapt/XMLNode.cpp b/src/base/tools/aapt/XMLNode.cpp +index 1a648c01..edc3d75a 100644 +--- a/src/base/tools/aapt/XMLNode.cpp ++++ b/src/base/tools/aapt/XMLNode.cpp +@@ -971,7 +971,7 @@ void XMLNode::removeWhitespace(bool stripAll, const char** cDataTags) + } + } + +-status_t XMLNode::parseValues(const sp& assets, ++status_t XMLNode::parseValues(const Bundle* bundle, const sp& assets, + ResourceTable* table) + { + bool hasErrors = false; +@@ -985,7 +985,7 @@ status_t XMLNode::parseValues(const sp& assets, + String8(e.string)); + table->setCurrentXmlPos(SourcePos(mFilename, getStartLineNumber())); + if (!assets->getIncludedResources() +- .stringToValue(&e.value, &e.string, ++ .stringToValue(bundle->getForcedPackageId(), &e.value, &e.string, + e.string.c_str(), e.string.size(), true, true, + e.nameResId, NULL, &defPackage, table, &ac)) { + hasErrors = true; +@@ -999,7 +999,7 @@ status_t XMLNode::parseValues(const sp& assets, + } + const size_t N = mChildren.size(); + for (size_t i=0; iparseValues(assets, table); ++ status_t err = mChildren.itemAt(i)->parseValues(bundle, assets, table); + if (err != NO_ERROR) { + hasErrors = true; + } +diff --git a/src/base/tools/aapt/XMLNode.h b/src/base/tools/aapt/XMLNode.h +index ac920186..5364b525 100644 +--- a/src/base/tools/aapt/XMLNode.h ++++ b/src/base/tools/aapt/XMLNode.h +@@ -81,8 +81,7 @@ public: + } + + bool needStringValue() const { +- return nameResId == 0 +- || value.dataType == Res_value::TYPE_NULL ++ return value.dataType == Res_value::TYPE_NULL + || value.dataType == Res_value::TYPE_STRING; + } + +@@ -135,7 +134,7 @@ public: + + void setUTF8(bool val) { mUTF8 = val; } + +- status_t parseValues(const sp& assets, ResourceTable* table); ++ status_t parseValues(const Bundle* bundle, const sp& assets, ResourceTable* table); + + status_t assignResourceIds(const sp& assets, + const ResourceTable* table = NULL); +diff --git a/src/base/tools/aapt2/ResourceTable.cpp b/src/base/tools/aapt2/ResourceTable.cpp +index a3b0b45d..1ddb4f12 100644 +--- a/src/base/tools/aapt2/ResourceTable.cpp ++++ b/src/base/tools/aapt2/ResourceTable.cpp +@@ -470,9 +470,10 @@ bool ResourceTable::AddResource(NewResource&& res, android::IDiagnostics* diag) + const bool validate = validation_ == Validation::kEnabled; + const android::Source source = res.value ? res.value->GetSource() : android::Source{}; + if (validate && !res.allow_mangled && !IsValidResourceEntryName(res.name.entry)) { +- diag->Error(android::DiagMessage(source) +- << "resource '" << res.name << "' has invalid entry name '" << res.name.entry); +- return false; ++ // Apktool ++ // diag->Error(android::DiagMessage(source) ++ // << "resource '" << res.name << "' has invalid entry name '" << res.name.entry); ++ // return false; + } + + if (res.id.has_value() && !res.id->first.is_valid()) { +diff --git a/src/base/tools/aapt2/ResourceUtils.cpp b/src/base/tools/aapt2/ResourceUtils.cpp +index d358df98..7daa7b21 100644 +--- a/src/base/tools/aapt2/ResourceUtils.cpp ++++ b/src/base/tools/aapt2/ResourceUtils.cpp +@@ -217,7 +217,8 @@ bool ParseAttributeReference(StringPiece str, ResourceNameRef* out_ref) { + } + + if (!type.empty() && type != "attr") { +- return false; ++ // Apktool: Don't die out if private resource. ++ // return false; + } + + if (entry.empty()) { +diff --git a/src/base/tools/aapt2/cmd/Link.cpp b/src/base/tools/aapt2/cmd/Link.cpp +index 642a5618..f1348ce7 100644 +--- a/src/base/tools/aapt2/cmd/Link.cpp ++++ b/src/base/tools/aapt2/cmd/Link.cpp +@@ -2483,10 +2483,11 @@ int LinkCommand::Action(const std::vector& args) { + if (package_id_int > std::numeric_limits::max() + || package_id_int == kFrameworkPackageId + || (!options_.allow_reserved_package_id && package_id_int < kAppPackageId)) { +- context.GetDiagnostics()->Error( ++ context.GetDiagnostics()->Warn( + android::DiagMessage() << StringPrintf( +- "invalid package ID 0x%02x. Must be in the range 0x7f-0xff.", package_id_int)); +- return 1; ++ "invalid package ID 0x%02x. Must be in the range 0x7f-0xff. Ignoring...", package_id_int)); ++ // Apktool ++ // return 1; + } + context.SetPackageId(static_cast(package_id_int)); + } +@@ -2589,6 +2590,23 @@ int LinkCommand::Action(const std::vector& args) { + ".mpg", ".mpeg", ".mp4", ".m4a", ".m4v", ".3gp", ".3gpp", ".3g2", ".3gpp2", ".wma", ".wmv", + ".webm", ".mkv"}); + ++ // Populate no compress extensions specified in the extensions file. ++ if (options_.extensions_to_not_compress_path) { ++ std::ifstream extensionsFile(options_.extensions_to_not_compress_path.value()); ++ ++ if (extensionsFile.fail()) { ++ context.GetDiagnostics()->Error( ++ android::DiagMessage() << "could not open extensions file " ++ << options_.extensions_to_not_compress_path.value() ++ << " for reading"); ++ return 1; ++ } ++ ++ for (std::string line; getline(extensionsFile, line);) { ++ options_.extensions_to_not_compress.insert(line); ++ } ++ } ++ + // Turn off auto versioning for static-libs. + if (context.GetPackageType() == PackageType::kStaticLib) { + options_.no_auto_version = true; +diff --git a/src/base/tools/aapt2/cmd/Link.h b/src/base/tools/aapt2/cmd/Link.h +index 2f178537..7d3111d5 100644 +--- a/src/base/tools/aapt2/cmd/Link.h ++++ b/src/base/tools/aapt2/cmd/Link.h +@@ -78,6 +78,7 @@ struct LinkOptions { + bool use_sparse_encoding = false; + std::unordered_set extensions_to_not_compress; + std::optional regex_to_not_compress; ++ std::optional extensions_to_not_compress_path; + FeatureFlagValues feature_flag_values; + + // Static lib options. +@@ -291,6 +292,8 @@ class LinkCommand : public Command { + &options_.manifest_fixer_options.rename_overlay_category); + AddOptionalFlagList("-0", "File suffix not to compress.", + &options_.extensions_to_not_compress); ++ AddOptionalFlag("-e", "File containing list of extensions not to compress.", ++ &options_.extensions_to_not_compress_path); + AddOptionalSwitch("--no-compress", "Do not compress any resources.", + &options_.do_not_compress_anything); + AddOptionalSwitch("--keep-raw-values", "Preserve raw attribute values in xml files.", +diff --git a/src/base/tools/aapt2/java/JavaClassGenerator.cpp b/src/base/tools/aapt2/java/JavaClassGenerator.cpp +index 6e73b017..e3db14f8 100644 +--- a/src/base/tools/aapt2/java/JavaClassGenerator.cpp ++++ b/src/base/tools/aapt2/java/JavaClassGenerator.cpp +@@ -58,7 +58,9 @@ static const std::set sJavaIdentifiers = { + "true", "false", "null"}; + + static bool IsValidSymbol(StringPiece symbol) { +- return sJavaIdentifiers.find(symbol) == sJavaIdentifiers.end(); ++ // Apktool: Everything is a valid symbol ++ return true; ++ // return sJavaIdentifiers.find(symbol) == sJavaIdentifiers.end(); + } + + // Java symbols can not contain . or -, but those are valid in a resource name. +diff --git a/src/base/tools/aapt2/link/PrivateAttributeMover.cpp b/src/base/tools/aapt2/link/PrivateAttributeMover.cpp +index 8c6c743d..f9a70d3f 100644 +--- a/src/base/tools/aapt2/link/PrivateAttributeMover.cpp ++++ b/src/base/tools/aapt2/link/PrivateAttributeMover.cpp +@@ -82,7 +82,8 @@ bool PrivateAttributeMover::Consume(IAaptContext* context, ResourceTable* table) + + auto attr_private_type = ResourceNamedTypeWithDefaultName(ResourceType::kAttrPrivate); + ResourceTableType* priv_attr_type = package->FindOrCreateType(attr_private_type); +- CHECK(priv_attr_type->entries.empty()); ++ // Apktool ++ // CHECK(priv_attr_type->entries.empty()); + priv_attr_type->entries = std::move(private_attr_entries); + } + return true; +diff --git a/src/base/tools/aapt2/link/ReferenceLinker.cpp b/src/base/tools/aapt2/link/ReferenceLinker.cpp +index c69b3251..c7662625 100644 +--- a/src/base/tools/aapt2/link/ReferenceLinker.cpp ++++ b/src/base/tools/aapt2/link/ReferenceLinker.cpp +@@ -299,8 +299,9 @@ const SymbolTable::Symbol* ReferenceLinker::ResolveSymbolCheckVisibility(const R + } + + if (!IsSymbolVisible(*symbol, reference, callsite)) { +- if (out_error) *out_error = "is private"; +- return nullptr; ++ // if (out_error) *out_error = "is private"; ++ // Apktool ++ // return nullptr; + } + return symbol; + } diff --git a/patches/boringssl.patch b/patches/boringssl.patch deleted file mode 100644 index f05ef3207..000000000 --- a/patches/boringssl.patch +++ /dev/null @@ -1,38 +0,0 @@ -Submodule src/boringssl contains modified content -diff --git a/src/boringssl/CMakeLists.txt b/src/boringssl/CMakeLists.txt -index dad27f815..11e517b52 100644 ---- a/src/boringssl/CMakeLists.txt -+++ b/src/boringssl/CMakeLists.txt -@@ -499,12 +499,26 @@ else() - message(FATAL_ERROR "Unknown processor:" ${CMAKE_SYSTEM_PROCESSOR}) - endif() - --if(ANDROID AND NOT ANDROID_NDK_REVISION AND ARCH STREQUAL "arm") -- # The third-party Android-NDK CMake files somehow fail to set the -march flag -- # for assembly files. Without this flag, the compiler believes that it's -- # building for ARMv5. -- set(CMAKE_ASM_FLAGS "-march=${CMAKE_SYSTEM_PROCESSOR} ${CMAKE_ASM_FLAGS}") --endif() -+# set ARCH and MARCH -+set(ARCH ${TARGET_ABI}) -+set(MARCH ${ARCH}) -+if(TARGET_ABI STREQUAL "arm") -+ set(MARCH "armv7-a") -+elseif(TARGET_ABI STREQUAL "aarch64") -+ set(MARCH "armv8-a") -+elseif(TARGET_ABI STREQUAL "x86") -+ set(MARCH "i686") -+elseif(TARGET_ABI STREQUAL "x86_64") -+ set(MARCH "x86_64") -+endif() -+ -+# set -march flag -+ if(ANDROID AND NOT ANDROID_NDK_REVISION AND ARCH STREQUAL "arm") -+ # The third-party Android-NDK CMake files somehow fail to set the -march flag -+ # for assembly files. Without this flag, the compiler believes that it's -+ # building for ARMv5. -+ set(CMAKE_ASM_FLAGS "-march=${MARCH} ${CMAKE_ASM_FLAGS}") -+ endif() - - if(USE_CUSTOM_LIBCXX) - if(NOT CLANG) diff --git a/patches/incremental_delivery.patch b/patches/incremental_delivery.patch deleted file mode 100644 index 37dd5f363..000000000 --- a/patches/incremental_delivery.patch +++ /dev/null @@ -1,246 +0,0 @@ -Submodule src/incremental_delivery contains modified content -diff --git a/src/incremental_delivery/sysprop/IncrementalProperties.sysprop.cpp b/src/incremental_delivery/sysprop/IncrementalProperties.sysprop.cpp -new file mode 100644 -index 0000000..dfe0671 ---- /dev/null -+++ b/src/incremental_delivery/sysprop/IncrementalProperties.sysprop.cpp -@@ -0,0 +1,217 @@ -+// Generated by the sysprop generator. DO NOT EDIT! -+ -+#include -+#include -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#ifdef __BIONIC__ -+#include -+[[maybe_unused]] static bool SetProp(const char* key, const char* value) { -+ return __system_property_set(key, value) == 0; -+} -+#else -+#include -+[[maybe_unused]] static bool SetProp(const char* key, const char* value) { -+ android::base::SetProperty(key, value); -+ return true; -+} -+#endif -+ -+#include -+#include -+ -+namespace { -+ -+using namespace android::sysprop::IncrementalProperties; -+ -+template -+T DoParse(const char* str); -+ -+template -+constexpr bool is_vector = false; -+ -+template -+constexpr bool is_vector> = true; -+ -+template <> -+[[maybe_unused]] std::optional DoParse(const char* str) { -+ static constexpr const char* kYes[] = {"1", "true"}; -+ static constexpr const char* kNo[] = {"0", "false"}; -+ -+ for (const char* yes : kYes) { -+ if (strcasecmp(yes, str) == 0) return std::make_optional(true); -+ } -+ -+ for (const char* no : kNo) { -+ if (strcasecmp(no, str) == 0) return std::make_optional(false); -+ } -+ -+ return std::nullopt; -+} -+ -+template <> -+[[maybe_unused]] std::optional DoParse(const char* str) { -+ std::int32_t ret; -+ return android::base::ParseInt(str, &ret) ? std::make_optional(ret) : std::nullopt; -+} -+ -+template <> -+[[maybe_unused]] std::optional DoParse(const char* str) { -+ std::uint32_t ret; -+ return android::base::ParseUint(str, &ret) ? std::make_optional(ret) : std::nullopt; -+} -+ -+template <> -+[[maybe_unused]] std::optional DoParse(const char* str) { -+ std::int64_t ret; -+ return android::base::ParseInt(str, &ret) ? std::make_optional(ret) : std::nullopt; -+} -+ -+template <> -+[[maybe_unused]] std::optional DoParse(const char* str) { -+ std::uint64_t ret; -+ return android::base::ParseUint(str, &ret) ? std::make_optional(ret) : std::nullopt; -+} -+ -+template <> -+[[maybe_unused]] std::optional DoParse(const char* str) { -+ int old_errno = errno; -+ errno = 0; -+ char* end; -+ double ret = std::strtod(str, &end); -+ if (errno != 0) { -+ return std::nullopt; -+ } -+ if (str == end || *end != '\0') { -+ errno = EINVAL; -+ return std::nullopt; -+ } -+ errno = old_errno; -+ return std::make_optional(ret); -+} -+ -+template <> -+[[maybe_unused]] std::optional DoParse(const char* str) { -+ return *str == '\0' ? std::nullopt : std::make_optional(str); -+} -+ -+template -+[[maybe_unused]] Vec DoParseList(const char* str) { -+ Vec ret; -+ if (*str == '\0') return ret; -+ const char* p = str; -+ for (;;) { -+ const char* r = p; -+ std::string value; -+ while (*r != ',') { -+ if (*r == '\\') ++r; -+ if (*r == '\0') break; -+ value += *r++; -+ } -+ ret.emplace_back(DoParse(value.c_str())); -+ if (*r == '\0') break; -+ p = r + 1; -+ } -+ return ret; -+} -+ -+template -+inline T TryParse(const char* str) { -+ if constexpr (is_vector) { -+ return DoParseList(str); -+ } else { -+ return DoParse(str); -+ } -+} -+ -+[[maybe_unused]] std::string FormatValue(const std::optional& value) { -+ return value ? std::to_string(*value) : ""; -+} -+ -+[[maybe_unused]] std::string FormatValue(const std::optional& value) { -+ return value ? std::to_string(*value) : ""; -+} -+ -+[[maybe_unused]] std::string FormatValue(const std::optional& value) { -+ return value ? std::to_string(*value) : ""; -+} -+ -+[[maybe_unused]] std::string FormatValue(const std::optional& value) { -+ return value ? std::to_string(*value) : ""; -+} -+ -+[[maybe_unused]] std::string FormatValue(const std::optional& value) { -+ if (!value) return ""; -+ char buf[1024]; -+ std::sprintf(buf, "%.*g", std::numeric_limits::max_digits10, *value); -+ return buf; -+} -+ -+[[maybe_unused]] std::string FormatValue(const std::optional& value) { -+ return value ? (*value ? "true" : "false") : ""; -+} -+ -+template -+[[maybe_unused]] std::string FormatValue(const std::vector& value) { -+ if (value.empty()) return ""; -+ -+ std::string ret; -+ bool first = true; -+ -+ for (auto&& element : value) { -+ if (!first) -+ ret += ','; -+ else -+ first = false; -+ if constexpr (std::is_same_v>) { -+ if (element) { -+ for (char c : *element) { -+ if (c == '\\' || c == ',') ret += '\\'; -+ ret += c; -+ } -+ } -+ } else { -+ ret += FormatValue(element); -+ } -+ } -+ -+ return ret; -+} -+ -+template -+T GetProp(const char* key, const char* legacy = nullptr) { -+ std::string value; -+#ifdef __BIONIC__ -+ auto pi = __system_property_find(key); -+ if (pi != nullptr) { -+ __system_property_read_callback( -+ pi, -+ [](void* cookie, const char*, const char* value, std::uint32_t) { -+ *static_cast(cookie) = value; -+ }, -+ &value); -+ } -+#else -+ value = android::base::GetProperty(key, ""); -+#endif -+ if (value.empty() && legacy) { -+ ALOGV("prop %s doesn't exist; fallback to legacy prop %s", key, legacy); -+ return GetProp(legacy); -+ } -+ return TryParse(value.c_str()); -+} -+ -+} // namespace -+ -+namespace android::sysprop::IncrementalProperties { -+ -+std::optional enable() { -+ return GetProp>("ro.incremental.enable"); -+} -+ -+} // namespace android::sysprop::IncrementalProperties -\ No newline at end of file -diff --git a/src/incremental_delivery/sysprop/include/IncrementalProperties.sysprop.h b/src/incremental_delivery/sysprop/include/IncrementalProperties.sysprop.h -new file mode 100644 -index 0000000..19e2fea ---- /dev/null -+++ b/src/incremental_delivery/sysprop/include/IncrementalProperties.sysprop.h -@@ -0,0 +1,14 @@ -+// Generated by the sysprop generator. DO NOT EDIT! -+ -+#pragma once -+ -+#include -+#include -+#include -+#include -+ -+namespace android::sysprop::IncrementalProperties { -+ -+std::optional enable(); -+ -+} // namespace android::sysprop::IncrementalProperties -\ No newline at end of file diff --git a/patches/libpng.patch b/patches/libpng.patch deleted file mode 100644 index 91bca4128..000000000 --- a/patches/libpng.patch +++ /dev/null @@ -1,27 +0,0 @@ -Submodule src/libpng contains modified content -diff --git a/src/libpng/CMakeLists.txt b/src/libpng/CMakeLists.txt -index 6451fcf1b..bccd2ef74 100644 ---- a/src/libpng/CMakeLists.txt -+++ b/src/libpng/CMakeLists.txt -@@ -36,18 +36,18 @@ include(GNUInstallDirs) - - # Allow users to specify location of Zlib. - # Useful if zlib is being built alongside this as a sub-project. --option(PNG_BUILD_ZLIB "Custom zlib Location, else find_package is used" OFF) -+option(PNG_BUILD_ZLIB "Custom zlib Location, else find_package is used" ON) - - if(NOT PNG_BUILD_ZLIB) - find_package(ZLIB REQUIRED) - include_directories(${ZLIB_INCLUDE_DIR}) - endif() - --if(UNIX AND NOT APPLE AND NOT BEOS AND NOT HAIKU) -+if(UNIX AND NOT APPLE AND NOT BEOS AND NOT HAIKU AND NOT ANDROID) - find_library(M_LIBRARY m) - else() - # libm is not needed and/or not available -- set(M_LIBRARY "") -+ set(M_LIBRARY "m") - endif() - - # COMMAND LINE OPTIONS diff --git a/patches/protobuf.patch b/patches/protobuf.patch index 5084bf231..bf7daee0f 100644 --- a/patches/protobuf.patch +++ b/patches/protobuf.patch @@ -1,14 +1,28 @@ -Submodule src/protobuf contains modified content diff --git a/src/protobuf/cmake/CMakeLists.txt b/src/protobuf/cmake/CMakeLists.txt -index ebc7b0c98..cda9ba109 100644 ---- a/src/protobuf/cmake/CMakeLists.txt -+++ b/src/protobuf/cmake/CMakeLists.txt -@@ -29,7 +29,7 @@ else() +index 04cb330..95882a2 100644 +--- a/src/protobuf/CMakeLists.txt ++++ b/src/protobuf/CMakeLists.txt +@@ -298,7 +298,8 @@ endif (MSVC) + include_directories( + ${ZLIB_INCLUDE_DIRECTORIES} + ${protobuf_BINARY_DIR} +- ${protobuf_SOURCE_DIR}/src) ++ ${protobuf_SOURCE_DIR}/src ++ ${protobuf_SOURCE_DIR}/android) + + if (protobuf_UNICODE) + add_definitions(-DUNICODE -D_UNICODE) +diff --git a/src/protobuf/cmake/libprotobuf.cmake b/src/protobuf/cmake/libprotobuf.cmake +index 07e4bcf..f77815c 100644 +--- a/src/protobuf/cmake/libprotobuf.cmake ++++ b/src/protobuf/cmake/libprotobuf.cmake +@@ -118,7 +118,8 @@ if(protobuf_LINK_LIBATOMIC) + target_link_libraries(libprotobuf PRIVATE atomic) endif() - - # Options --option(protobuf_BUILD_TESTS "Build tests" ON) -+option(protobuf_BUILD_TESTS "Build tests" OFF) - option(protobuf_BUILD_CONFORMANCE "Build conformance tests" OFF) - option(protobuf_BUILD_EXAMPLES "Build examples" OFF) - option(protobuf_BUILD_PROTOC_BINARIES "Build libprotoc and protoc compiler" ON) + if(${CMAKE_SYSTEM_NAME} STREQUAL "Android") +- target_link_libraries(libprotobuf PRIVATE log) ++ # static lib compiled and linked by aapt(2)'s dedicated cmake ++ # target_link_libraries(libprotobuf PRIVATE log) + endif() + target_include_directories(libprotobuf PUBLIC ${protobuf_SOURCE_DIR}/src) + if(protobuf_BUILD_SHARED_LIBS) diff --git a/patches/selinux.patch b/patches/selinux.patch deleted file mode 100644 index f45ec4ef8..000000000 --- a/patches/selinux.patch +++ /dev/null @@ -1,105 +0,0 @@ -Submodule src/selinux contains modified content -diff --git a/src/selinux/libsepol/src/private.h b/src/selinux/libsepol/src/private.h -index a8cc1472..317eb7c0 100644 ---- a/src/selinux/libsepol/src/private.h -+++ b/src/selinux/libsepol/src/private.h -@@ -4,7 +4,6 @@ - - #include - -- - #ifdef __APPLE__ - #include - #include -@@ -16,8 +15,8 @@ - #include - - #ifdef __APPLE__ --#define __BYTE_ORDER BYTE_ORDER --#define __LITTLE_ENDIAN LITTLE_ENDIAN -+#define __BYTE_ORDER BYTE_ORDER -+#define __LITTLE_ENDIAN LITTLE_ENDIAN - #endif - - #if __BYTE_ORDER == __LITTLE_ENDIAN -@@ -37,17 +36,17 @@ - #endif - - #undef min --#define min(a,b) (((a) < (b)) ? (a) : (b)) -+#define min(a, b) (((a) < (b)) ? (a) : (b)) - - #undef max --#define max(a,b) ((a) >= (b) ? (a) : (b)) -+#define max(a, b) ((a) >= (b) ? (a) : (b)) - --#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0])) -+#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) - - #ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION --# define is_saturated(x) (x == (typeof(x))-1 || (x) > (1U << 16)) -+#define is_saturated(x) (x == (typeof(x))-1 || (x) > (1U << 16)) - #else --# define is_saturated(x) (x == (typeof(x))-1) -+#define is_saturated(x) (x == (typeof(x))-1) - #endif - - #define zero_or_saturated(x) ((x == 0) || is_saturated(x)) -@@ -57,16 +56,17 @@ - /* Use to ignore intentional unsigned under- and overflows while running under UBSAN. */ - #if defined(__clang__) && defined(__clang_major__) && (__clang_major__ >= 4) - #if (__clang_major__ >= 12) --#define ignore_unsigned_overflow_ __attribute__((no_sanitize("unsigned-integer-overflow", "unsigned-shift-base"))) -+#define ignore_unsigned_overflow_ __attribute__((no_sanitize("unsigned-integer-overflow", "unsigned-shift-base"))) - #else --#define ignore_unsigned_overflow_ __attribute__((no_sanitize("unsigned-integer-overflow"))) -+#define ignore_unsigned_overflow_ __attribute__((no_sanitize("unsigned-integer-overflow"))) - #endif - #else - #define ignore_unsigned_overflow_ - #endif - - /* Policy compatibility information. */ --struct policydb_compat_info { -+struct policydb_compat_info -+{ - unsigned int type; - unsigned int version; - unsigned int sym_num; -@@ -75,31 +75,11 @@ struct policydb_compat_info { - }; - - extern const struct policydb_compat_info *policydb_lookup_compat(unsigned int version, -- unsigned int type, -- unsigned int target_platform); -+ unsigned int type, -+ unsigned int target_platform); - - /* Reading from a policy "file". */ - extern int next_entry(void *buf, struct policy_file *fp, size_t bytes); - extern size_t put_entry(const void *ptr, size_t size, size_t n, -- struct policy_file *fp); --extern int str_read(char **strp, struct policy_file *fp, size_t len); -- --static inline void* mallocarray(size_t nmemb, size_t size) { -- if (size && nmemb > (size_t)-1 / size) { -- errno = ENOMEM; -- return NULL; -- } -- -- return malloc(nmemb * size); --} -- --#ifndef HAVE_REALLOCARRAY --static inline void* reallocarray(void *ptr, size_t nmemb, size_t size) { -- if (size && nmemb > (size_t)-1 / size) { -- errno = ENOMEM; -- return NULL; -- } -- -- return realloc(ptr, nmemb * size); --} --#endif -+ struct policy_file *fp); -+extern int str_read(char **strp, struct policy_file *fp, size_t len); -\ No newline at end of file \ No newline at end of file diff --git a/src/base b/src/base index 584338ea9..723419df1 160000 --- a/src/base +++ b/src/base @@ -1 +1 @@ -Subproject commit 584338ea98273df82df5bc33ba137a0470cc82d6 +Subproject commit 723419df1a0769b63587722a8a0a0980f454ffd2 diff --git a/src/boringssl b/src/boringssl index 59e37765f..2a7146e5d 160000 --- a/src/boringssl +++ b/src/boringssl @@ -1 +1 @@ -Subproject commit 59e37765f1dbc63a121153f664505cf65499e66c +Subproject commit 2a7146e5d8c55fb53d31f66f8e1351baa3fb0d4e diff --git a/src/core b/src/core index cef4850d9..90e4908e7 160000 --- a/src/core +++ b/src/core @@ -1 +1 @@ -Subproject commit cef4850d9ff93abd130a3aa02c2a9938d05f6743 +Subproject commit 90e4908e776d2be9b26b87af649e63e4208cf085 diff --git a/src/expat b/src/expat index 01b2b0b20..20fd40439 160000 --- a/src/expat +++ b/src/expat @@ -1 +1 @@ -Subproject commit 01b2b0b20366eb53dcb1b035562d1c1ba3eef5ba +Subproject commit 20fd404393d65d2aff6dbc79dcbf4da6e68cabb2 diff --git a/src/fmtlib b/src/fmtlib index 0c022da6e..c230d4f0a 160000 --- a/src/fmtlib +++ b/src/fmtlib @@ -1 +1 @@ -Subproject commit 0c022da6e7ebffb69174b485b16bc6b1c5395aa2 +Subproject commit c230d4f0a5a7058a6f0468cd384200ba2ed2d8c6 diff --git a/src/googletest b/src/googletest new file mode 160000 index 000000000..b9640af0b --- /dev/null +++ b/src/googletest @@ -0,0 +1 @@ +Subproject commit b9640af0b0a5b0e94bbef3f584763be6926b1ce3 diff --git a/src/incremental_delivery b/src/incremental_delivery index 0c13909a8..d5b8d81ed 160000 --- a/src/incremental_delivery +++ b/src/incremental_delivery @@ -1 +1 @@ -Subproject commit 0c13909a84775840c6889a049634741a3c2ec1cc +Subproject commit d5b8d81edc4a1e5a1995e1e4858cb1b340080137 diff --git a/src/jsoncpp b/src/jsoncpp new file mode 160000 index 000000000..4d823700a --- /dev/null +++ b/src/jsoncpp @@ -0,0 +1 @@ +Subproject commit 4d823700a3d9c5727a039d65587ca99519f32de2 diff --git a/src/libbase b/src/libbase index 91dd3ec47..328768fab 160000 --- a/src/libbase +++ b/src/libbase @@ -1 +1 @@ -Subproject commit 91dd3ec47778ca65e3aae19f194995fbbb174e70 +Subproject commit 328768fabb054387ad7f64c984d4afcea70d25c9 diff --git a/src/libpng b/src/libpng index ddf60efd0..3f98a222b 160000 --- a/src/libpng +++ b/src/libpng @@ -1 +1 @@ -Subproject commit ddf60efd0382e7699308ca4d72d88e22ed8cc7a6 +Subproject commit 3f98a222b00621de0815c70bcbee9f3d19434359 diff --git a/src/libziparchive b/src/libziparchive index a995a5280..b1d0c47e5 160000 --- a/src/libziparchive +++ b/src/libziparchive @@ -1 +1 @@ -Subproject commit a995a52802ae884cf71a9cc836e93a8b2f904b6f +Subproject commit b1d0c47e59e1a59b79f38ed0cbb94191cbf37416 diff --git a/src/logging b/src/logging index 7c5c7094e..153a153f1 160000 --- a/src/logging +++ b/src/logging @@ -1 +1 @@ -Subproject commit 7c5c7094ef903bef02428f873ccd47c90443ba34 +Subproject commit 153a153f1fccc0cc6b96766d1557518303aebd5e diff --git a/src/native b/src/native new file mode 160000 index 000000000..55c639d4b --- /dev/null +++ b/src/native @@ -0,0 +1 @@ +Subproject commit 55c639d4b83235438ae431c76ffcb6e49be34f75 diff --git a/src/pcre b/src/pcre index 35cca826d..06781197c 160000 --- a/src/pcre +++ b/src/pcre @@ -1 +1 @@ -Subproject commit 35cca826d10f3d9325a846b3a0f8ab07e25553fe +Subproject commit 06781197cc1b93713b9c07aebc75d9790d2d4d76 diff --git a/src/protobuf b/src/protobuf index 6cb79dee0..5b489930d 160000 --- a/src/protobuf +++ b/src/protobuf @@ -1 +1 @@ -Subproject commit 6cb79dee0c4cfc5acfc2bfd48be5a676f58efb92 +Subproject commit 5b489930dd17777ea9173840faba912c2db1748a diff --git a/src/selinux b/src/selinux index e52b1a6bb..0496d8248 160000 --- a/src/selinux +++ b/src/selinux @@ -1 +1 @@ -Subproject commit e52b1a6bb582fa9a76f5644ff3f335d03e02cabc +Subproject commit 0496d8248e0cb20d6512387f109f41f37f68f6e1 diff --git a/src/soong b/src/soong new file mode 160000 index 000000000..050e044df --- /dev/null +++ b/src/soong @@ -0,0 +1 @@ +Subproject commit 050e044df577a106757e9df904535bde9e6f83ce diff --git a/src/unwinding b/src/unwinding new file mode 160000 index 000000000..540353061 --- /dev/null +++ b/src/unwinding @@ -0,0 +1 @@ +Subproject commit 540353061e864599723d4a838d503b80ecdf61ed diff --git a/src/zopfli b/src/zopfli deleted file mode 160000 index 0ba865af9..000000000 --- a/src/zopfli +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0ba865af92b306705feea4a6d6f6b02c82902ad1