aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManish Pandey <manish.pandey2@arm.com>2021-11-18 16:00:01 +0100
committerTrustedFirmware Code Review <review@review.trustedfirmware.org>2021-11-18 16:00:01 +0100
commit5d26e27abc7180506e9fa522435ab0b365f2f0ea (patch)
tree14ce97a34abdf43d14d9de0d5defdd42c60be50d
parent7300434afc4d88e920aeac460b17fa2277a61e6b (diff)
parent953910b06ab16b3c900fc98387bef92ceb6364cb (diff)
downloadarm-trusted-firmware-5d26e27abc7180506e9fa522435ab0b365f2f0ea.tar.gz
Merge changes from topic "ck/changelog" into integration
* changes: docs(changelog): categorize scopes docs(commit-style): add commit style documentation build(docs): introduce release script build(docs): add support for Markdown documentation build(hooks): add commitlint checks for trailers build(npm): add Standard Version v9.3.2 build(npm): add additional package metadata build(npm): add license field build(npm): update Husky to v7.0.4 build(npm): update commitlint to v14.1.0 build(npm): update lockfile format to v2 docs(prerequisites): update to Node.js v16 build(docs): update Python dependencies build(docs): pin Python dependencies
-rw-r--r--.commitlintrc.js52
-rw-r--r--.cz.json825
-rw-r--r--.versionrc.js66
-rw-r--r--commitlint.config.js14
-rw-r--r--docs/about/maintainers.rst6
-rw-r--r--docs/change-log.md3766
-rw-r--r--docs/change-log.rst4602
-rw-r--r--docs/conf.py4
-rw-r--r--docs/getting_started/prerequisites.rst8
-rw-r--r--docs/process/commit-style.rst163
-rw-r--r--docs/process/contributing.rst53
-rw-r--r--docs/process/index.rst1
-rw-r--r--docs/requirements.in5
-rw-r--r--docs/requirements.txt94
-rw-r--r--package-lock.json5303
-rw-r--r--package.json14
-rw-r--r--tools/conventional-changelog-tf-a/index.js222
-rw-r--r--tools/conventional-changelog-tf-a/package.json12
-rw-r--r--tools/conventional-changelog-tf-a/templates/commit-section.hbs17
-rw-r--r--tools/conventional-changelog-tf-a/templates/commit.hbs15
-rw-r--r--tools/conventional-changelog-tf-a/templates/footer.hbs0
-rw-r--r--tools/conventional-changelog-tf-a/templates/header.hbs13
-rw-r--r--tools/conventional-changelog-tf-a/templates/note-section.hbs13
-rw-r--r--tools/conventional-changelog-tf-a/templates/note.hbs3
-rw-r--r--tools/conventional-changelog-tf-a/templates/template.hbs9
25 files changed, 10303 insertions, 4977 deletions
diff --git a/.commitlintrc.js b/.commitlintrc.js
new file mode 100644
index 000000000..3bd68bb6c
--- /dev/null
+++ b/.commitlintrc.js
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2021, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+/* eslint-env es6 */
+
+"use strict";
+
+const cz = require("./.cz.json");
+const { "trailer-exists": trailerExists } = require("@commitlint/rules").default;
+
+/*
+ * Recursively fetch the project's supported scopes from the Commitizen configuration file. We use
+ * permit only the blessed scope for each section to encourage developers to use a consistent scope
+ * scheme.
+ */
+function getScopes(sections) {
+ return sections.flatMap(section => {
+ const scopes = section.scopes;
+ const subscopes = getScopes(section.sections || []);
+
+ const scope = scopes ? [ scopes[0] ] : []; /* Only use the blessed scope */
+
+ return scope.concat(subscopes);
+ })
+};
+
+const scopes = getScopes(cz.sections); /* Contains every blessed scope */
+
+module.exports = {
+ extends: ["@commitlint/config-conventional"],
+ plugins: [
+ {
+ rules: {
+ "signed-off-by-exists": trailerExists,
+ "change-id-exists": trailerExists,
+ },
+ },
+ ],
+ rules: {
+ "body-max-line-length": [1, "always", cz.maxLineWidth], /* Warning */
+ "header-max-length": [1, "always", cz.maxHeaderWidth], /* Warning */
+
+ "change-id-exists": [1, "always", "Change-Id:"], /* Warning */
+ "signed-off-by-exists": [1, "always", "Signed-off-by:"], /* Warning */
+
+ "scope-case": [2, "always", "kebab-case"], /* Error */
+ "scope-enum": [1, "always", scopes] /* Warning */
+ },
+};
diff --git a/.cz.json b/.cz.json
index cb500bac4..5447f1704 100644
--- a/.cz.json
+++ b/.cz.json
@@ -1,5 +1,826 @@
{
"path": "./node_modules/cz-conventional-changelog",
"maxHeaderWidth": 50,
- "maxLineWidth": 72
-} \ No newline at end of file
+ "maxLineWidth": 72,
+ "types": [
+ {
+ "type": "feat",
+ "title": "New Features",
+ "description": "A new feature"
+ },
+ {
+ "type": "fix",
+ "title": "Resolved Issues",
+ "description": "A bug fix"
+ },
+ {
+ "type": "build",
+ "title": "Build System",
+ "description": "Changes that affect the build system or external dependencies",
+ "hidden": true
+ },
+ {
+ "type": "ci",
+ "title": "Continuous Integration",
+ "description": "Changes to our CI configuration files and scripts",
+ "hidden": true
+ },
+ {
+ "type": "docs",
+ "title": "Build System",
+ "description": "Documentation-only changes",
+ "hidden": true
+ },
+ {
+ "type": "perf",
+ "title": "Performance Improvements",
+ "description": "A code change that improves performance",
+ "hidden": true
+ },
+ {
+ "type": "refactor",
+ "title": "Code Refactoring",
+ "description": "A code change that neither fixes a bug nor adds a feature",
+ "hidden": true
+ },
+ {
+ "type": "revert",
+ "title": "Reverted Changes",
+ "description": "Changes that revert a previous change",
+ "hidden": true
+ },
+ {
+ "type": "style",
+ "title": "Style",
+ "description": "Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc.)",
+ "hidden": true
+ },
+ {
+ "type": "test",
+ "title": "Tests",
+ "description": "Adding missing tests or correcting existing tests",
+ "hidden": true
+ },
+ {
+ "type": "chore",
+ "title": "Miscellaneous",
+ "description": "Any other change",
+ "hidden": true
+ }
+ ],
+ "sections": [
+ {
+ "title": "Architecture",
+ "sections": [
+ {
+ "title": "Activity Monitors Extension (FEAT_AMU)",
+ "scopes": ["amu"]
+ },
+ {
+ "title": "Support for the `HCRX_EL2` register (FEAT_HCX)",
+ "scopes": ["hcx"]
+ },
+ {
+ "title": "Memory Partitioning and Monitoring (MPAM) Extension (FEAT_MPAM)",
+ "scopes": ["mpam"]
+ },
+ {
+ "title": "Scalable Matrix Extension (FEAT_SME)",
+ "scopes": ["sme"]
+ },
+ {
+ "title": "Scalable Vector Extension (FEAT_SVE)",
+ "scopes": ["sve"]
+ },
+ {
+ "title": "Trace Buffer Extension (FEAT_TRBE)",
+ "scopes": ["trbe"]
+ },
+ {
+ "title": "Self-hosted Trace Extensions (FEAT_TRF)",
+ "scopes": ["trf", "sys_reg_trace"]
+ }
+ ]
+ },
+ {
+ "title": "Platforms",
+ "sections": [
+ {
+ "title": "Allwinner",
+ "scopes": ["allwinner", "plat/allwinner"]
+ },
+ {
+ "title": "Arm",
+ "scopes": ["arm", "plat/arm"],
+ "sections": [
+ {
+ "title": "FPGA",
+ "scopes": ["fpga", "arm_fgpa", "arm_fpga", "plat/arm_fpga"]
+ },
+ {
+ "title": "FVP",
+ "scopes": ["fvp", "plat/fvp"]
+ },
+ {
+ "title": "FVP-R",
+ "scopes": ["fvp-r", "fvp_r"]
+ },
+ {
+ "title": "Juno",
+ "scopes": ["juno"]
+ },
+ {
+ "title": "Morello",
+ "scopes": ["morello"]
+ },
+ {
+ "title": "RD",
+ "scopes": ["rd"],
+ "sections": [
+ {
+ "title": "RD-N2",
+ "scopes": ["rdn2", "board/rdn2"]
+ }
+ ]
+ },
+ {
+ "title": "SGI",
+ "scopes": ["sgi", "plat/sgi", "plat/arm/sgi" ]
+ },
+ {
+ "title": "TC",
+ "scopes": ["tc"],
+ "sections": [
+ {
+ "title": "TC0",
+ "scopes": ["tc0", "plat/tc0"]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "title": "Marvell",
+ "scopes": ["marvell", "plat/marvell"],
+ "sections": [
+ {
+ "title": "Armada",
+ "scopes": ["armada", "plat/marvell/armada"],
+ "sections": [
+ {
+ "title": "A3K",
+ "scopes": ["a3k", "plat/marvell/a3k"]
+ },
+ {
+ "title": "A8K",
+ "scopes": ["a8k", "plat/marvell/a8k"]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "title": "MediaTek",
+ "scopes": ["mediatek", "plat/mediatek/common", "plat/mediatek"],
+ "sections": [
+ {
+ "title": "MT8183",
+ "scopes": ["mt8183", "plat/mediatek/mt8183"]
+ },
+ {
+ "title": "MT8192",
+ "scopes": ["mt8192", "plat/mdeiatek/mt8192"]
+ },
+ {
+ "title": "MT8195",
+ "scopes": ["mt8195", "plat/mediatek/me8195", "plat/mediatek/mt8195", "plat/mdeiatek/mt8195"]
+ }
+ ]
+ },
+ {
+ "title": "NVIDIA",
+ "scopes": ["nvidia"],
+ "sections": [
+ {
+ "title": "Tegra",
+ "scopes": ["tegra", "plat/tegra"],
+ "sections": [
+ {
+ "title": "Tegra 132",
+ "scopes": ["tegra132"]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "title": "NXP",
+ "scopes": ["nxp", "plat/nxp", "plat/nxp/common"],
+ "sections": [
+ {
+ "title": "i.MX",
+ "scopes": ["imx", "plat/imx", "plat/imx/imx"],
+ "sections": [
+ {
+ "title": "i.MX 8M",
+ "scopes": ["imx8m", "plat/imx8m", "plat/imx/imx8m"],
+ "sections": [
+ {
+ "title": "i.MX 8M Mini",
+ "scopes": ["imx8mm", "plat/imx/imx8m/imx8mm"]
+ },
+ {
+ "title": "i.MX 8M Plus",
+ "scopes": ["imx8mp", "plat/imx/imx8m/imx8mp"]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "title": "Layerscape",
+ "scopes": ["layerscape", "docs/nxp/layerscape"],
+ "sections": [
+ {
+ "title": "LX2",
+ "scopes": ["lx2", "plat/nxp/lx2"],
+ "sections": [
+ {
+ "title": "LX216",
+ "scopes": ["lx216", "plat/nxp/lx216x"],
+ "sections": [
+ {
+ "title": "LX2160",
+ "scopes": ["lx2160", "plat/soc-lx2160"]
+ }
+ ]
+ },
+ {
+ "title": "LS1028A",
+ "scopes": ["ls1028a", "plat/nxp/ls1028a"],
+ "sections": [
+ {
+ "title": "LS1028ARDB",
+ "scopes": ["ls1028ardb", "plat/nxp/ls1028ardb"]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "title": "QEMU",
+ "scopes": ["qemu", "plat/qemu"]
+ },
+ {
+ "title": "QTI",
+ "scopes": ["qti"],
+ "sections": [
+ {
+ "title": "SC1780",
+ "scopes": ["sc7180", "plat/qti/sc7180"]
+ },
+ {
+ "title": "SC7280",
+ "scopes": ["sc7280", "plat/qti/sc7280"]
+ }
+ ]
+ },
+ {
+ "title": "Raspberry Pi",
+ "scopes": ["rpi"],
+ "sections": [
+ {
+ "title": "Raspberry Pi 4",
+ "scopes": ["rpi4"]
+ }
+ ]
+ },
+ {
+ "title": "Renesas",
+ "scopes": ["renesas"],
+ "sections": [
+ {
+ "title": "R-Car",
+ "scopes": ["rcar", "plat/rcar"],
+ "sections": [
+ {
+ "title": "R-Car 3",
+ "scopes": ["rcar3", "plat/rcar3"]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "title": "Rockchip",
+ "scopes": ["rockchip"],
+ "sections": [
+ {
+ "title": "RK3399",
+ "scopes": ["rk3399", "rockchip/rk3399", "rk3399/suspend"]
+ }
+ ]
+ },
+ {
+ "title": "Socionext",
+ "scopes": ["socionext"],
+ "sections": [
+ {
+ "title": "Synquacer",
+ "scopes": ["synquacer", "plat/synquacer"]
+ }
+ ]
+ },
+ {
+ "title": "ST",
+ "scopes": ["st", "plat/st"],
+ "sections": [
+ {
+ "title": "ST32MP1",
+ "scopes": ["stm32mp1", "plat/st/stm32mp1"]
+ }
+ ]
+ },
+ {
+ "title": "Xilinx",
+ "scopes": ["xilinx", "plat/xilinx"],
+ "sections": [
+ {
+ "title": "Versal",
+ "scopes": ["versal", "plat/xilinx/versal/include", "plat/xilinx/versal", "plat/versal"]
+ },
+ {
+ "title": "ZynqMP",
+ "scopes": ["zynqmp", "plat/zynqmp", "plat/xilinx/zynqmp"]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "title": "Bootloader Images",
+ "scopes": ["bl", "bl_common"],
+ "sections": [
+ {
+ "title": "BL1",
+ "scopes": ["bl1"]
+ },
+ {
+ "title": "BL2",
+ "scopes": ["bl2"]
+ }
+ ]
+ },
+ {
+ "title": "Services",
+ "scopes": ["services"],
+ "sections": [
+ {
+ "title": "FF-A",
+ "scopes": ["ffa", "ff-a"]
+ },
+ {
+ "title": "RME",
+ "scopes": ["rme"]
+ },
+ {
+ "title": "SPM",
+ "scopes": ["spm", "spmc", "spmd", "SPMD", "spm_mm"]
+ }
+ ]
+ },
+ {
+ "title": "Libraries",
+ "sections": [
+ {
+ "title": "CPU Support",
+ "scopes": ["cpus", "cpu", "errata", "errata_report"]
+ },
+ {
+ "title": "EL3 Runtime",
+ "scopes": ["el3-runtime", "el3_runtime"]
+ },
+ {
+ "title": "FCONF",
+ "scopes": ["fconf"]
+ },
+ {
+ "title": "MPMM",
+ "scopes": ["mpmm"]
+ },
+ {
+ "title": "OP-TEE",
+ "scopes": ["optee", "lib/optee"]
+ },
+ {
+ "title": "PSCI",
+ "scopes": ["psci"]
+ },
+ {
+ "title": "GPT",
+ "scopes": ["gpt", "gpt_rme"]
+ },
+ {
+ "title": "SMCCC",
+ "scopes": ["smccc"]
+ },
+ {
+ "title": "Translation Tables",
+ "scopes": ["xlat"]
+ }
+ ]
+ },
+ {
+ "title": "Drivers",
+ "sections": [
+ {
+ "title": "Authentication",
+ "scopes": ["auth", "driver/auth"],
+ "sections": [
+ {
+ "title": "CryptoCell-713",
+ "scopes": ["cc-713"]
+ }
+ ]
+ },
+ {
+ "title": "FWU",
+ "scopes": ["fwu", "fwu_metadata"]
+ },
+ {
+ "title": "I/O",
+ "scopes": ["io"],
+ "sections": [
+ {
+ "title": "MTD",
+ "scopes": ["mtd", "io_mtd"]
+ }
+ ]
+ },
+ {
+ "title": "Measured Boot",
+ "scopes": ["measured-boot", "measured boot", "measured_boot"]
+ },
+ {
+ "title": "MMC",
+ "scopes": ["mmc", "drivers/mmc"]
+ },
+ {
+ "title": "MTD",
+ "scopes": ["mtd", "drivers/mtd"],
+ "sections": [
+ {
+ "title": "NAND",
+ "scopes": ["nand"],
+ "sections": [
+ {
+ "title": "SPI NAND",
+ "scopes": ["spi-nand", "spi_nand"]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "title": "SCMI",
+ "scopes": ["scmi", "scmi_common", "drivers/scmi-msg"]
+ },
+ {
+ "title": "UFS",
+ "scopes": ["ufs"]
+ },
+ {
+ "title": "Arm",
+ "scopes": ["arm-drivers"],
+ "sections": [
+ {
+ "title": "Ethos-N",
+ "scopes": ["ethos-n", "drivers/arm/ethosn"]
+ },
+ {
+ "title": "GIC",
+ "scopes": ["gic"],
+ "sections": [
+ {
+ "title": "GICv3",
+ "scopes": ["gicv3"],
+ "sections": [
+ {
+ "title": "GIC-600AE",
+ "scopes": ["gic600ae"]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "title": "TZC",
+ "scopes": ["tzc"],
+ "sections": [
+ {
+ "title": "TZC-400",
+ "scopes": ["tzc400", "drivers/tzc400"]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "title": "Marvell",
+ "scopes": ["marvell-drivers"],
+ "sections": [
+ {
+ "title": "COMPHY",
+ "scopes": ["marvell-comphy", "drivers/marvell/comphy"],
+ "sections": [
+ {
+ "title": "Armada 3700",
+ "scopes": ["marvell-comphy-3700", "drivers/marvell/comphy-3700"]
+ },
+ {
+ "title": "CP110",
+ "scopes": ["marvell-comphy-cp110", "drivers/marvell/comphy-cp110"]
+ }
+ ]
+ },
+ {
+ "title": "UART",
+ "scopes": ["marvell-uart", "plat/marvell/uart"]
+ },
+ {
+ "title": "Armada",
+ "scopes": ["armada-drivers"],
+ "sections": [
+ {
+ "title": "A3K",
+ "scopes": ["a3k-drivers"],
+ "sections": [
+ {
+ "title": "A3720",
+ "scopes": ["a3720-uart", "plat/marvell/a3720/uart"]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "title": "MediaTek",
+ "scopes": ["mediatek-drivers"],
+ "sections": [
+ {
+ "title": "APU",
+ "scopes": ["mediatek-apu", "plat/mediatek/apu"]
+ },
+ {
+ "title": "EMI MPU",
+ "scopes": ["mediatek-emi-mpu", "plat/mediatek/mpu"]
+ },
+ {
+ "title": "PMIC Wrapper",
+ "scopes": ["mediatek-pmic-wrapper", "plat/mediatek/pmic_wrap"]
+ },
+ {
+ "title": "MT8192",
+ "scopes": ["mt8192-drivers"],
+ "sections": [
+ {
+ "title": "SPM",
+ "scopes": ["mt8192-spm", "mediatek/mt8192/spm"]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "title": "NXP",
+ "scopes": ["nxp-drivers"],
+ "sections": [
+ {
+ "title": "DCFG",
+ "scopes": ["nxp-dcfg", "driver/nxp/dcfg"]
+ },
+ {
+ "title": "FLEXSPI",
+ "scopes": ["flexspi", "include/drivers/flexspi", "driver/nxp/xspi"]
+ },
+ {
+ "title": "SCFG",
+ "scopes": ["nxp-scfg", "nxp/scfg"]
+ },
+ {
+ "title": "SFP",
+ "scopes": ["nxp-sfp", "drivers/nxp/sfp"]
+ }
+ ]
+ },
+ {
+ "title": "Renesas",
+ "scopes": ["renesas-drivers"],
+ "sections": [
+ {
+ "title": "R-Car3",
+ "scopes": ["rcar3-drivers", "drivers/rcar3"]
+ }
+ ]
+ },
+ {
+ "title": "ST",
+ "scopes": ["st-drivers", "drivers/st"],
+ "sections": [
+ {
+ "title": "Clock",
+ "scopes": ["st-clock", "stm32mp_clk", "drivers/st/clk", "stm32mp1_clk"]
+ },
+ {
+ "title": "I/O",
+ "scopes": ["st-io-drivers"],
+ "sections": [
+ {
+ "title": "STM32 Image",
+ "scopes": ["st-io-stm32image", "io-stm32image", "io_stm32image"]
+ }
+ ]
+ },
+ {
+ "title": "SDMMC2",
+ "scopes": ["st-sdmmc2", "stm32_sdmmc2"]
+ },
+ {
+ "title": "ST PMIC",
+ "scopes": ["st-pmic", "drivers/st/pmic"]
+ },
+ {
+ "title": "STPMIC1",
+ "scopes": ["stpmic1"]
+ },
+ {
+ "title": "UART",
+ "scopes": ["st-uart"],
+ "sections": [
+ {
+ "title": "STM32 Console",
+ "scopes": ["stm32-console", "stm32_console"]
+ }
+ ]
+ },
+ {
+ "title": "USB",
+ "scopes": ["st-usb", "drivers/st/usb"]
+ }
+ ]
+ },
+ {
+ "title": "USB",
+ "scopes": ["usb", "drivers/usb"]
+ }
+ ]
+ },
+ {
+ "title": "Miscellaneous",
+ "sections": [
+ {
+ "title": "AArch64",
+ "scopes": ["aarch64"]
+ },
+ {
+ "title": "Debug",
+ "scopes": ["debug", "common/debug"]
+ },
+ {
+ "title": "CRC32",
+ "scopes": ["crc32"],
+ "sections": [
+ {
+ "title": "Hardware CRC32",
+ "scopes": ["hw-crc32", "hw_crc", "hw_crc32"]
+ },
+ {
+ "title": "Software CRC32",
+ "scopes": ["sw-crc32", "sw_crc32"]
+ }
+ ]
+ },
+ {
+ "title": "DT Bindings",
+ "scopes": ["dt-bindings"]
+ },
+ {
+ "title": "FDT Wrappers",
+ "scopes": ["fdt-wrappers"]
+ },
+ {
+ "title": "FDTs",
+ "scopes": ["fdts", "fdt"],
+ "sections": [
+ {
+ "title": "Morello",
+ "scopes": ["morello-fdts", "fdts/morello"]
+ },
+ {
+ "title": "STM32MP1",
+ "scopes": ["stm32mp1-fdts", "fdts stm32mp1"]
+ }
+ ]
+ },
+ {
+ "title": "PIE",
+ "scopes": ["pie"]
+ },
+ {
+ "title": "Security",
+ "scopes": ["security"]
+ },
+ {
+ "title": "SDEI",
+ "scopes": ["sdei"]
+ },
+ {
+ "title": "TBBR",
+ "scopes": ["tbbr"]
+ },
+ {
+ "title": "NXP",
+ "sections": [
+ {
+ "title": "OCRAM",
+ "scopes": ["nxp-ocram", "nxp/common/ocram"]
+ },
+ {
+ "title": "PSCI",
+ "scopes": ["nxp-psci", "plat/nxp/common/psci"]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "title": "Documentation",
+ "scopes": ["docs", "doc"],
+ "sections": [
+ {
+ "title": "Changelog",
+ "scopes": ["changelog"]
+ },
+ {
+ "title": "Commit Style",
+ "scopes": ["commit-style"]
+ },
+ {
+ "title": "Contribution Guidelines",
+ "scopes": ["contributing", "contribution-guidelines", "docs-contributing.rst"]
+ },
+ {
+ "title": "Maintainers",
+ "scopes": ["maintainers"]
+ },
+ {
+ "title": "Prerequisites",
+ "scopes": ["prerequisites"]
+ }
+ ]
+ },
+ {
+ "title": "Build System",
+ "scopes": ["build", "makefile", "Makefile"],
+ "sections": [
+ {
+ "title": "Git Hooks",
+ "scopes": ["hooks"]
+ }
+ ]
+ },
+ {
+ "title": "Tools",
+ "sections": [
+ {
+ "title": "STM32 Image",
+ "scopes": ["stm32image", "tools/stm32image"]
+ }
+ ]
+ },
+ {
+ "title": "Dependencies",
+ "scopes": ["deps"],
+ "sections": [
+ {
+ "title": "checkpatch",
+ "scopes": ["checkpatch"]
+ },
+ {
+ "title": "libfdt",
+ "scopes": ["libfdt"]
+ },
+ {
+ "title": "Node Package Manager (NPM)",
+ "scopes": ["npm"]
+ }
+ ]
+ }
+ ]
+}
diff --git a/.versionrc.js b/.versionrc.js
new file mode 100644
index 000000000..1046b281b
--- /dev/null
+++ b/.versionrc.js
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2021, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+/* eslint-env es6 */
+
+"use strict";
+
+const cz = require("./.cz.json");
+
+/*
+ * Convert the Commitizen types array into the format accepted by the Conventional Changelog
+ * Conventional Commits plugin (which our own plugin extends).
+ */
+const types = cz.types.map(type => {
+ if (!type.hidden) {
+ /*
+ * Conventional Changelog prevents each section from appearing only if it has no designated
+ * title, regardless of the value of the `hidden` flag.
+ */
+ type.section = type.title;
+ }
+
+ delete type.title;
+ delete type.description;
+
+ return type;
+});
+
+module.exports = {
+ "header": "# Change Log & Release Notes\n\nThis document contains a summary of the new features, changes, fixes and known\nissues in each release of Trusted Firmware-A.\n",
+ "preset": {
+ "name": "tf-a",
+ "commitUrlFormat": "https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/{{hash}}",
+ "compareUrlFormat": "https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/{{previousTag}}..{{currentTag}}",
+ "userUrlFormat": "https://github.com/{{user}}",
+
+ "types": types,
+ "sections": cz.sections,
+ },
+ "bumpFiles": [
+ {
+ "filename": "Makefile",
+ "updater": {
+ "readVersion": function (contents) {
+ const major = contents.match(/^VERSION_MAJOR\s*:=\s*(\d+?)$/m)[1];
+ const minor = contents.match(/^VERSION_MINOR\s*:=\s*(\d+?)$/m)[1];
+
+ return `${major}.${minor}.0`;
+ },
+
+ "writeVersion": function (contents, version) {
+ const major = version.split(".")[0];
+ const minor = version.split(".")[1];
+
+ contents = contents.replace(/^(VERSION_MAJOR\s*:=\s*)(\d+?)$/m, `$1${major}`);
+ contents = contents.replace(/^(VERSION_MINOR\s*:=\s*)(\d+?)$/m, `$1${minor}`);
+
+ return contents;
+ }
+ }
+ }
+ ]
+};
diff --git a/commitlint.config.js b/commitlint.config.js
deleted file mode 100644
index 94cad8f2b..000000000
--- a/commitlint.config.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/* eslint-env node */
-
-"use strict";
-
-const config = require("./.cz.json");
-
-module.exports = {
- extends: ["@commitlint/config-conventional"],
- rules: {
- "header-max-length": [1, "always", config.maxHeaderWidth], /* Warning */
- "body-max-line-length": [1, "always", config.maxLineWidth], /* Warning */
- "signed-off-by": [0, "always", "Signed-off-by:"] /* Disabled - buggy */
- }
-};
diff --git a/docs/about/maintainers.rst b/docs/about/maintainers.rst
index 7a48601b7..680683dea 100644
--- a/docs/about/maintainers.rst
+++ b/docs/about/maintainers.rst
@@ -747,6 +747,12 @@ Threat Model
:|G|: `vwadekar`_
:|F|: docs/threat_model/
+Conventional Changelog Extensions
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+:|M|: Chris Kay <chris.kay@arm.com>
+:|G|: `CJKay`_
+:|F|: tools/conventional-changelog-tf-a
+
.. _AlexeiFedorov: https://github.com/AlexeiFedorov
.. _Andre-ARM: https://github.com/Andre-ARM
.. _Anson-Huang: https://github.com/Anson-Huang
diff --git a/docs/change-log.md b/docs/change-log.md
new file mode 100644
index 000000000..0d75dc561
--- /dev/null
+++ b/docs/change-log.md
@@ -0,0 +1,3766 @@
+# Change Log & Release Notes
+
+This document contains a summary of the new features, changes, fixes and known
+issues in each release of Trusted Firmware-A.
+
+## 2.5.0 (2021-05-17)
+
+### New Features
+
+- Architecture support
+
+ - Added support for speculation barrier(`FEAT_SB`) for non-Armv8.5 platforms
+ starting from Armv8.0
+ - Added support for Activity Monitors Extension version 1.1(`FEAT_AMUv1p1`)
+ - Added helper functions for Random number generator(`FEAT_RNG`) registers
+ - Added support for Armv8.6 Multi-threaded PMU extensions (`FEAT_MTPMU`)
+ - Added support for MTE Asymmetric Fault Handling extensions(`FEAT_MTE3`)
+ - Added support for Privileged Access Never extensions(`FEAT_PANx`)
+
+- Bootloader images
+
+ - Added PIE support for AArch32 builds
+ - Enable Trusted Random Number Generator service for BL32(sp_min)
+
+- Build System
+
+ - Added build option for Arm Feature Modifiers
+
+- Drivers
+
+ - Added support for interrupts in TZC-400 driver
+ - Broadcom
+ - Added support for I2C, MDIO and USB drivers
+ - Marvell
+ - Added support for secure read/write of dfc register-set
+ - Added support for thermal sensor driver
+ - Implement a3700_core_getc API in console driver
+ - Added rx training on 10G port
+ - Marvell Mochi
+ - Added support for cn913x in PCIe mode
+ - Marvell Armada A8K
+ - Added support for TRNG-IP-76 driver and accessing RNG register
+ - Mediatek MT8192
+ - Added support for following drivers
+ - MPU configuration for SCP/PCIe
+ - SPM suspend
+ - Vcore DVFS
+ - LPM
+ - PTP3
+ - UART save and restore
+ - Power-off
+ - PMIC
+ - CPU hotplug and MCDI support
+ - SPMC
+ - MPU
+ - Mediatek MT8195
+ - Added support for following drivers
+ - GPIO, NCDI, SPMC drivers
+ - Power-off
+ - CPU hotplug, reboot and MCDI
+ - Delay timer and sys timer
+ - GIC
+ - NXP
+ - Added support for
+ - non-volatile storage API
+ - chain of trust and trusted board boot using two modes: MBEDTLS and CSF
+ - fip-handler necessary for DDR initialization
+ - SMMU and console drivers
+ - crypto hardware accelerator driver
+ - following drivers: SD, EMMC, QSPI, FLEXSPI, GPIO, GIC, CSU, PMU, DDR
+ - NXP Security Monitor and SFP driver
+ - interconnect config APIs using ARM CCN-CCI driver
+ - TZC APIs to configure DDR region
+ - generic timer driver
+ - Device configuration driver
+ - IMX
+ - Added support for image loading and io-storage driver for TBBR fip booting
+ - Renesas
+ - Added support for PFC and EMMC driver
+ - RZ Family:
+ - G2N, G2E and G2H SoCs
+ - Added support for watchdog, QoS, PFC and DRAM initialization
+ - RZG Family:
+ - G2M
+ - Added support for QoS and DRAM initialization
+ - Xilinx
+ - Added JTAG DCC support for Versal and ZynqMP SoC family.
+
+- Libraries
+
+ - C standard library
+ - Added support to print `%` in `snprintf()` and `printf()` APIs
+ - Added support for strtoull, strtoll, strtoul, strtol APIs from FreeBSD
+ project
+ - CPU support
+ - Added support for
+ - Cortex_A78C CPU
+ - Makalu ELP CPU
+ - Makalu CPU
+ - Matterhorn ELP CPU
+ - Neoverse-N2 CPU
+ - CPU Errata
+ - Arm Cortex-A76: Added workaround for erratum 1946160
+ - Arm Cortex-A77: Added workaround for erratum 1946167
+ - Arm Cortex-A78: Added workaround for erratum 1941498 and 1951500
+ - Arm Neoverse-N1: Added workaround for erratum 1946160
+ - Flattened device tree(libfdt)
+ - Added support for wrapper function to read UUIDs in string format from dtb
+
+- Platforms
+
+ - Added support for MediaTek MT8195
+ - Added support for Arm RD-N2 board
+ - Allwinner
+ - Added support for H616 SoC
+ - Arm
+ - Added support for GPT parser
+ - Protect GICR frames for fused/unused cores
+ - Arm Morello
+ - Added VirtIO network device to Morello FVP fdts
+ - Arm RD-N2
+ - Added support for variant 1 of RD-N2 platform
+ - Enable AMU support
+ - Arm RD-V1
+ - Enable AMU support
+ - Arm SGI
+ - Added support for platform variant build option
+ - Arm TC0
+ - Added Matterhorn ELP CPU support
+ - Added support for opteed
+ - Arm Juno
+ - Added support to use hw_config in BL31
+ - Use TRNG entropy source for SMCCC TRNG interface
+ - Condition Juno entropy source with CRC instructions
+ - Marvell Mochi
+ - Added support for detection of secure mode
+ - Marvell ARMADA
+ - Added support for new compile option A3720_DB_PM_WAKEUP_SRC
+ - Added support doing system reset via CM3 secure coprocessor
+ - Made several makefile enhancements required to build WTMI_MULTI_IMG and
+ TIMDDRTOOL
+ - Added support for building DOIMAGETOOL tool
+ - Added new target mrvl_bootimage
+ - Mediatek MT8192
+ - Added support for rtc power off sequence
+ - Mediatek MT8195
+ - Added support for SiP service
+ - STM32MP1
+ - Added support for
+ - Seeed ODYSSEY SoM and board
+ - SDMMC2 and I2C2 pins in pinctrl
+ - I2C2 peripheral in DTS
+ - PIE for BL32
+ - TZC-400 interrupt managament
+ - Linux Automation MC-1 board
+ - Renesas RZG
+ - Added support for identifying EK874 RZ/G2E board
+ - Added support for identifying HopeRun HiHope RZ/G2H and RZ/G2H boards
+ - Rockchip
+ - Added support for stack protector
+ - QEMU
+ - Added support for `max` CPU
+ - Added Cortex-A72 support to `virt` platform
+ - Enabled trigger reboot from secure pl061
+ - QEMU SBSA
+ - Added support for sbsa-ref Embedded Controller
+ - NXP
+ - Added support for warm reset to retain ddr content
+ - Added support for image loader necessary for loading fip image
+ - lx2160a SoC Family
+ - Added support for
+ - new platform lx2160a-aqds
+ - new platform lx2160a-rdb
+ - new platform lx2162a-aqds
+ - errata handling
+ - IMX imx8mm
+ - Added support for trusted board boot
+ - TI K3
+ - Added support for lite device board
+ - Enabled Cortex-A72 erratum 1319367
+ - Enabled Cortex-A53 erratum 1530924
+ - Xilinx ZynqMP
+ - Added support for PS and system reset on WDT restart
+ - Added support for error management
+ - Enable support for log messages necessary for debug
+ - Added support for PM API SMC call for efuse and register access
+
+- Processes
+
+ - Introduced process for platform deprecation
+ - Added documentation for TF-A threat model
+ - Provided a copy of the MIT license to comply with the license requirements
+ of the arm-gic.h source file (originating from the Linux kernel project and
+ re-distributed in TF-A).
+
+- Services
+
+ - Added support for TRNG firmware interface service
+ - Arm
+ - Added SiP service to configure Ethos-N NPU
+ - SPMC
+ - Added documentation for SPM(Hafnium) SMMUv3 driver
+ - SPMD
+ - Added support for
+ - FFA_INTERRUPT forwading ABI
+ - FFA_SECONDARY_EP_REGISTER ABI
+ - FF-A v1.0 boot time power management, SPMC secondary core boot and early
+ run-time power management
+
+- Tools
+
+ - FIPTool
+ - Added mechanism to allow platform specific image UUID
+ - git hooks
+ - Added support for conventional commits through commitlint hook, commitizen
+ hook and husky configuration files.
+ - NXP tool
+ - Added support for a tool that creates pbl file from BL2
+ - Renesas RZ/G2
+ - Added tool support for creating bootparam and cert_header images
+ - CertCreate
+ - Added support for platform-defined certificates, keys, and extensions
+ using the platform's makefile
+ - shared tools
+ - Added EFI_GUID representation to uuid helper data structure
+
+### Changed
+
+- Common components
+
+ - Print newline after hex address in aarch64 el3_panic function
+ - Use proper `#address-cells` and `#size-cells` for reserved-memory in dtbs
+
+- Drivers
+
+ - Move SCMI driver from ST platform directory and make it common to all
+ platforms
+ - Arm GICv3
+ - Shift eSPI register offset in GICD_OFFSET_64()
+ - Use mpidr to probe GICR for current CPU
+ - Arm TZC-400
+ - Adjust filter tag if it set to FILTER_BIT_ALL
+ - Cadence
+ - Enhance UART driver APIs to put characters to fifo
+ - Mediatek MT8192
+ - Move timer driver to common folder
+ - Enhanced sys_cirq driver to add more IC services
+ - Renesas
+ - Move ddr and delay driver to common directory
+ - Renesas rcar
+ - Treat log as device memory in console driver
+ - Renesas RZ Family:
+ - G2N and G2H SoCs
+ - Select MMC_CH1 for eMMC channel
+ - Marvell
+ - Added support for checking if TRNG unit is present
+ - Marvell A3K
+ - Set TXDCLK_2X_SEL bit during PCIe initialization
+ - Set mask parameter for every reg_set call
+ - Marvell Mochi
+ - Added missing stream IDs configurations
+ - MbedTLS
+ - Migrated to Mbed TLS v2.26.0
+ - IMX imx8mp
+ - Change the bl31 physical load address
+ - QEMU SBSA
+ - Enable secure variable storage
+ - SCMI
+ - Update power domain protocol version to 2.0
+ - STM32
+ - Remove dead code from nand FMC driver
+
+- Libraries
+
+ - C Standard Library
+ - Use macros to reduce duplicated code between snprintf and printf
+ - CPU support
+ - Sanity check pointers before use in AArch32 builds
+ - Arm Cortex-A78
+ - Remove rainier cpu workaround for errata 1542319
+ - Arm Makalu ELP
+ - Added "\_arm" suffix to Makalu ELP CPU lib
+
+- Miscellaneous
+
+ - Editorconfig
+ - set max line length to 100
+
+- Platforms
+
+ - Allwinner
+ - Added reserved-memory node to DT
+ - Express memmap more dynamically
+ - Move SEPARATE_NOBITS_REGION to platforms
+ - Limit FDT checks to reduce code size
+ - Use CPUIDLE hardware when available
+ - Allow conditional compilation of SCPI and native PSCI ops
+ - Always use a 3MHz RSB bus clock
+ - Enable workaround for Cortex-A53 erratum 1530924
+ - Fixed non-default PRELOADED_BL33_BASE
+ - Leave CPU power alone during BL31 setup
+ - Added several psci hooks enhancements to improve system shutdown/reset
+ sequence
+ - Return the PMIC to I2C mode after use
+ - Separate code to power off self and other CPUs
+ - Split native and SCPI-based PSCI implementations
+ - Allwinner H6
+ - Added R_PRCM security setup for H6 board
+ - Added SPC security setup for H6 board
+ - Use RSB for the PMIC connection on H6
+ - Arm
+ - Store UUID as a string, rather than ints
+ - Replace FIP base and size macro with a generic name
+ - Move compile time switch from source to dt file
+ - Don't provide NT_FW_CONFIG when booting hafnium
+ - Do not setup 'disabled' regulator
+ - Increase SP max size
+ - Remove false dependency of ARM_LINUX_KERNEL_AS_BL33 on RESET_TO_BL31 and
+ allow it to be enabled independently
+ - Arm FVP
+ - Do not map GIC region in BL1 and BL2
+ - Arm Juno
+ - Refactor juno_getentropy() to return 64 bits on each call
+ - Arm Morello
+ - Remove "virtio-rng" from Morello FVP
+ - Enable virtIO P9 device for Morello fvp
+ - Arm RDV1
+ - Allow all PSCI callbacks on RD-V1
+ - Rename rddaniel to rdv1
+ - Arm RDV1MC
+ - Rename rddanielxlr to rdv1mc
+ - Initialize TZC-400 controllers
+ - Arm TC0
+ - Updated GICR base address
+ - Use scmi_dvfs clock index 1 for cores 4-7 through fdt
+ - Added reserved-memory node for OP-TEE fdts
+ - Enabled Theodul DSU in TC platform
+ - OP-TEE as S-EL1 SP with SPMC at S-EL2
+ - Update Matterhorm ELP DVFS clock index
+ - Arm SGI
+ - Allow access to TZC controller on all chips
+ - Define memory regions for multi-chip platforms
+ - Allow access to nor2 flash and system registers from S-EL0
+ - Define default list of memory regions for DMC-620 TZC
+ - Improve macros defining cper buffer memory region
+ - Refactor DMC-620 error handling SMC function id
+ - Refactor SDEI specific macros
+ - Added platform id value for RDN2 platform
+ - Refactored header file inclusions and inclusion of memory mapping
+ - Arm RDN2
+ - Allow usage of secure partitions on RDN2 platform
+ - Update GIC redistributor and TZC base address
+ - Arm SGM775
+ - Deprecate Arm sgm775 FVP platform
+ - Marvell
+ - Increase TX FIFO EMPTY timeout from 2ms to 3ms
+ - Update delay code to be compatible with 1200 MHz CPU
+ - Marvell ARMADA
+ - Postpone MSS CPU startup to BL31 stage
+ - Allow builds without MSS support
+ - Use MSS SRAM in secure mode
+ - Added missing FORCE, .PHONY and clean targets
+ - Cleanup MSS SRAM if used for copy
+ - Move definition of mrvl_flash target to common marvell_common.mk file
+ - Show informative build messages and blank lines
+ - Marvell ARMADA A3K
+ - Added a new target mrvl_uart which builds UART image
+ - Added checks that WTP, MV_DDR_PATH and CRYPTOPP_PATH are correctly defined
+ - Allow use of the system Crypto++ library
+ - Build \$(WTMI_ENC_IMG) in \$(BUILD_PLAT) directory
+ - Build intermediate files in \$(BUILD_PLAT) directory
+ - Build UART image files directly in \$(BUILD_UART) subdirectory
+ - Correctly set DDR_TOPOLOGY and CLOCKSPRESET for WTMI
+ - Do not use 'echo -e' in Makefile
+ - Improve 4GB DRAM usage from 3.375 GB to 3.75 GB
+ - Remove unused variable WTMI_SYSINIT_IMG from Makefile
+ - Simplify check if WTP variable is defined
+ - Split building \$(WTMI_MULTI_IMG) and \$(TIMDDRTOOL)
+ - Marvell ARMADA A8K
+ - Allow CP1/CP2 mapping at BLE stage
+ - Mediatek MT8183
+ - Added timer V20 compensation
+ - Nvidia Tegra
+ - Rename SMC API
+ - TI K3
+ - Make plat_get_syscnt_freq2 helper check CNT_FID0 register
+ - Fill non-message data fields in sec_proxy with 0x0
+ - Update ti_sci_msg_req_reboot ABI to include domain
+ - Enable USE_COHERENT_MEM only for the generic board
+ - Explicitly map SEC_SRAM_BASE to 0x0
+ - Use BL31_SIZE instead of computing
+ - Define the correct number of max table entries and increase SRAM size to
+ account for additional table
+ - Raspberry Pi4
+ - Switch to gicv2.mk and GICV2_SOURCES
+ - Renesas
+ - Move headers and assembly files to common folder
+ - Renesas rzg
+ - Added device tree memory node enhancements
+ - Rockchip
+ - Switch to using common gicv3.mk
+ - STM32MP1
+ - Set BL sizes regardless of flags
+ - QEMU
+ - Include gicv2.mk for compiling GICv2 source files
+ - Change DEVICE2 definition for MMU
+ - Added helper to calculate the position shift from MPIDR
+ - QEMU SBSA
+ - Include libraries for Cortex-A72
+ - Increase SHARED_RAM_SIZE
+ - Addes support in spm_mm for upto 512 cores
+ - Added support for topology handling
+ - QTI
+ - Mandate SMC implementation
+ - Xilinx
+ - Rename the IPI CRC checksum macro
+ - Use fno-jump-tables flag in CPPFLAGS
+ - Xilinx versal
+ - Added the IPI CRC checksum macro support
+ - Mark IPI calls secure/non-secure
+ - Enable sgi to communicate with linux using IPI
+ - Remove Cortex-A53 compilation
+ - Xilinx ZynqMP
+ - Configure counter frequency during initialization
+ - Filter errors related to clock gate permissions
+ - Implement pinctrl request/release EEMI API
+ - Reimplement pinctrl get/set config parameter EEMI API calls
+ - Reimplement pinctrl set/get function EEMI API
+ - Update error codes to match Linux and PMU Firmware
+ - Update PM version and support PM version check
+ - Update return type in query functions
+ - Added missing ids for 43/46/47dr devices
+ - Checked for DLL status before doing reset
+ - Disable ITAPDLYENA bit for zero ITAP delay
+ - Include GICv2 makefile
+ - Remove the custom crash implementation
+
+- Services
+
+ - SPMD
+ - Lock the g_spmd_pm structure
+ - Declare third cactus instance as UP SP
+ - Provide number of vCPUs and VM size for first SP
+ - Remove `chosen` node from SPMC manifests
+ - Move OP-TEE SP manifest DTS to FVP platform
+ - Update OP-TEE SP manifest with device-regions node
+ - Remove device-memory node from SPMC manifests
+ - SPM_MM
+ - Use sp_boot_info to set SP context
+ - SDEI
+ - Updata the affinity of shared event
+
+- Tools
+
+ - FIPtool
+ - Do not print duplicate verbose lines about building fiptool
+ - CertCreate
+ - Updated tool for platform defined certs, keys & extensions
+ - Create only requested certificates
+ - Avoid duplicates in extension stack
+
+### Resolved Issues
+
+- Several fixes for typos and mis-spellings in documentation
+
+- Build system
+
+ - Fixed \$\{FIP_NAME} to be rebuilt only when needed in Makefile
+ - Do not mark file targets as .PHONY target in Makefile
+
+- Drivers
+
+ - Authorization
+ - Avoid NV counter upgrade without certificate validation
+ - Arm GICv3
+ - Fixed logical issue for num_eints
+ - Limit SPI ID to avoid misjudgement in GICD_OFFSET()
+ - Fixed potential GICD context override with ESPI enabled
+ - Marvell A3700
+ - Fixed configuring polarity invert bits
+ - Arm TZC-400
+ - Correct FAIL_CONTROL Privileged bit
+ - Fixed logical error in FILTER_BIT definitions
+ - Renesas rcar
+ - Fixed several coding style violations reported by checkpatch
+
+- Libraries
+
+ - Arch helpers
+ - Fixed assertions in processing dynamic relocations for AArch64 builds
+ - C standard library
+ - Fixed MISRA issues in memset() ABI
+ - RAS
+ - Fixed bug of binary search in RAS interrupt handler
+
+- Platforms
+
+ - Arm
+ - Fixed missing copyrights in arm-gic.h file
+ - Fixed the order of header files in several dts files
+ - Fixed error message printing in board makefile
+ - Fixed bug of overriding the last node in image load helper API
+ - Fixed stdout-path in fdts files of TC0 and N1SDP platforms
+ - Turn ON/OFF redistributor in sync with GIC CPU interface ON/OFF for css
+ platforms
+ - Arm FVP
+ - Fixed Generic Timer interrupt types in platform dts files
+ - Arm Juno
+ - Fixed parallel build issue for romlib config
+ - Arm SGI
+ - Fixed bug in SDEI receive event of RAS handler
+ - Intel Agilex
+ - Fixed PLAT_MAX_PWR_LVL value
+ - Marvell
+ - Fixed SPD handling in dram port
+ - Marvell ARMADA
+ - Fixed TRNG return SMC handling
+ - Fixed the logic used for LD selector mask
+ - Fixed MSS firmware loader for A8K family
+ - ST
+ - Fixed few violations reported by coverity static checks
+ - STM32MP1
+ - Fixed SELFREF_TO_X32 mask in ddr driver
+ - Do not keep mmc_device_info in stack
+ - Correct plat_crash_console_flush()
+ - QEMU SBSA
+ - Fixed memory type of secure NOR flash
+ - QTI
+ - Fixed NUM_APID and REG_APID_MAP() argument in SPMI driver
+ - Intel
+ - Do not keep mmc_device_info in stack
+ - Hisilicon
+ - Do not keep mmc_device_info in stack
+
+- Services
+
+ - EL3 runtime
+ - Fixed the EL2 context save/restore routine by removing EL2 generic timer
+ system registers
+ - Added fix for exception handler in BL31 by synchronizing pending EA using
+ DSB barrier
+ - SPMD
+ - Fixed error codes to use int32_t type
+ - TSPD
+ - Added bug fix in tspd interrupt handling when TSP_NS_INTR_ASYNC_PREEMPT is
+ enabled
+ - TRNG
+ - Fixed compilation errors with -O0 compile option
+ - DebugFS
+ - Checked channel index before calling clone function
+ - PSCI
+ - Fixed limit of 256 CPUs caused by cast to unsigned char
+ - TSP
+ - Fixed compilation erros when built with GCC 11.0.0 toolchain
+
+- Tools
+
+ - FIPtool
+ - Do not call `make clean` for `all` target
+ - CertCreate
+ - Fixed bug to avoid cleaning when building the binary
+ - Used preallocated parts of the HASH struct to avoid leaking HASH struct
+ fields
+ - Free arguments copied with strdup
+ - Free keys after use
+ - Free X509_EXTENSION structures on stack to avoid leaking them
+ - Optimized the code to avoid unnecessary attempts to create non-requested
+ certificates
+
+## 2.4.0 (2020-11-17)
+
+### New Features
+
+- Architecture support
+ - Armv8.6-A
+ - Added support for Armv8.6 Enhanced Counter Virtualization (ECV)
+ - Added support for Armv8.6 Fine Grained Traps (FGT)
+ - Added support for Armv8.6 WFE trap delays
+- Bootloader images
+ - Added support for Measured Boot
+- Build System
+ - Added build option `COT_DESC_IN_DTB` to create Chain of Trust at runtime
+ - Added build option `OPENSSL_DIR` to direct tools to OpenSSL libraries
+ - Added build option `RAS_TRAP_LOWER_EL_ERR_ACCESS` to enable trapping RAS
+ register accesses from EL1/EL2 to EL3
+ - Extended build option `BRANCH_PROTECTION` to support branch target
+ identification
+- Common components
+ - Added support for exporting CPU nodes to the device tree
+ - Added support for single and dual-root Chains of Trust in secure partitions
+- Drivers
+ - Added Broadcom RNG driver
+ - Added Marvell `mg_conf_cm3` driver
+ - Added System Control and Management Interface (SCMI) driver
+ - Added STMicroelectronics ETZPC driver
+ - Arm GICv3
+ - Added support for detecting topology at runtime
+ - Dual Root
+ - Added support for platform certificates
+ - Marvell Cache LLC
+ - Added support for mapping the entire LLC into SRAM
+ - Marvell CCU
+ - Added workaround for erratum 3033912
+ - Marvell CP110 COMPHY
+ - Added support for SATA COMPHY polarity inversion
+ - Added support for USB COMPHY polarity inversion
+ - Added workaround for erratum IPCE_COMPHY-1353
+ - STM32MP1 Clocks
+ - Added `RTC` as a gateable clock
+ - Added support for shifted clock selector bit masks
+ - Added support for using additional clocks as parents
+- Libraries
+ - C standard library
+ - Added support for hexadecimal and pointer format specifiers in `snprint()`
+ - Added assembly alternatives for various library functions
+ - CPU support
+ - Arm Cortex-A53
+ - Added workaround for erratum 1530924
+ - Arm Cortex-A55
+ - Added workaround for erratum 1530923
+ - Arm Cortex-A57
+ - Added workaround for erratum 1319537
+ - Arm Cortex-A76
+ - Added workaround for erratum 1165522
+ - Added workaround for erratum 1791580
+ - Added workaround for erratum 1868343
+ - Arm Cortex-A72
+ - Added workaround for erratum 1319367
+ - Arm Cortex-A77
+ - Added workaround for erratum 1508412
+ - Added workaround for erratum 1800714
+ - Added workaround for erratum 1925769
+ - Arm Neoverse-N1
+ - Added workaround for erratum 1868343
+ - EL3 Runtime
+ - Added support for saving/restoring registers related to nested
+ virtualization in EL2 context switches if the architecture supports it
+ - FCONF
+ - Added support for Measured Boot
+ - Added support for populating Chain of Trust properties
+ - Added support for loading the `fw_config` image
+ - Measured Boot
+ - Added support for event logging
+- Platforms
+ - Added support for Arm Morello
+ - Added support for Arm TC0
+ - Added support for iEi PUZZLE-M801
+ - Added support for Marvell OCTEON TX2 T9130
+ - Added support for MediaTek MT8192
+ - Added support for NXP i.MX 8M Nano
+ - Added support for NXP i.MX 8M Plus
+ - Added support for QTI CHIP SC7180
+ - Added support for STM32MP151F
+ - Added support for STM32MP153F
+ - Added support for STM32MP157F
+ - Added support for STM32MP151D
+ - Added support for STM32MP153D
+ - Added support for STM32MP157D
+ - Arm
+ - Added support for platform-owned SPs
+ - Added support for resetting to BL31
+ - Arm FPGA
+ - Added support for Klein
+ - Added support for Matterhorn
+ - Added support for additional CPU clusters
+ - Arm FVP
+ - Added support for performing SDEI platform setup at runtime
+ - Added support for SMCCC's `SMCCC_ARCH_SOC_ID` command
+ - Added an `id` field under the NV-counter node in the device tree to
+ differentiate between trusted and non-trusted NV-counters
+ - Added support for extracting the clock frequency from the timer node in
+ the device tree
+ - Arm Juno
+ - Added support for SMCCC's `SMCCC_ARCH_SOC_ID` command
+ - Arm N1SDP
+ - Added support for cross-chip PCI-e
+ - Marvell
+ - Added support for AVS reduction
+ - Marvell ARMADA
+ - Added support for twin-die combined memory device
+ - Marvell ARMADA A8K
+ - Added support for DDR with 32-bit bus width (both ECC and non-ECC)
+ - Marvell AP806
+ - Added workaround for erratum FE-4265711
+ - Marvell AP807
+ - Added workaround for erratum 3033912
+ - Nvidia Tegra
+ - Added debug printouts indicating SC7 entry sequence completion
+ - Added support for SDEI
+ - Added support for stack protection
+ - Added support for GICv3
+ - Added support for SMCCC's `SMCCC_ARCH_SOC_ID` command
+ - Nvidia Tegra194
+ - Added support for RAS exception handling
+ - Added support for SPM
+ - NXP i.MX
+ - Added support for SDEI
+ - QEMU SBSA
+ - Added support for the Secure Partition Manager
+ - QTI
+ - Added RNG driver
+ - Added SPMI PMIC arbitrator driver
+ - Added support for SMCCC's `SMCCC_ARCH_SOC_ID` command
+ - STM32MP1
+ - Added support for exposing peripheral interfaces to the non-secure world
+ at runtime
+ - Added support for SCMI clock and reset services
+ - Added support for STM32MP15x CPU revision Z
+ - Added support for SMCCC services in `SP_MIN`
+- Services
+ - Secure Payload Dispatcher
+ - Added a provision to allow clients to retrieve the service UUID
+ - SPMC
+ - Added secondary core endpoint information to the SPMC context structure
+ - SPMD
+ - Added support for booting OP-TEE as a guest S-EL1 Secure Partition on top
+ of Hafnium in S-EL2
+ - Added a provision for handling SPMC messages to register secondary core
+ entry points
+ - Added support for power management operations
+- Tools
+ - CertCreate
+ - Added support for secure partitions
+ - CertTool
+ - Added support for the `fw_config` image
+ - FIPTool
+ - Added support for the `fw_config` image
+
+### Changed
+
+- Architecture support
+- Bootloader images
+- Build System
+ - The top-level Makefile now supports building FipTool on Windows
+ - The default value of `KEY_SIZE` has been changed to to 2048 when RSA is in
+ use
+ - The previously-deprecated macro `__ASSEMBLY__` has now been removed
+- Common components
+ - Certain functions that flush the console will no longer return error
+ information
+- Drivers
+ - Arm GIC
+ - Usage of `drivers/arm/gic/common/gic_common.c` has now been deprecated in
+ favour of `drivers/arm/gic/vX/gicvX.mk`
+ - Added support for detecting the presence of a GIC600-AE
+ - Added support for detecting the presence of a GIC-Clayton
+ - Marvell MCI
+ - Now performs link tuning for all MCI interfaces to improve performance
+ - Marvell MoChi
+ - PIDI masters are no longer forced into a non-secure access level when
+ `LLC_SRAM` is enabled
+ - The SD/MMC controllers are now accessible from guest virtual machines
+ - Mbed TLS
+ - Migrated to Mbed TLS v2.24.0
+ - STM32 FMC2 NAND
+ - Adjusted FMC node bindings to include an EBI controller node
+ - STM32 Reset
+ - Added an optional timeout argument to assertion functions
+ - STM32MP1 Clocks
+ - Enabled several additional system clocks during initialization
+- Libraries
+ - C Standard Library
+ - Improved `memset` performance by avoiding single-byte writes
+ - Added optimized assembly variants of `memset`
+ - CPU support
+ - Renamed Cortex-Hercules to Cortex-A78
+ - Renamed Cortex-Hercules AE to Cortex-A78 AE
+ - Renamed Neoverse Zeus to Neoverse V1
+ - Coreboot
+ - Updated ‘coreboot_get_memory_type’ API to take an extra argument as a
+ ’memory size’ that used to return a valid memory type.
+ - libfdt
+ - Updated to latest upstream version
+- Platforms
+ - Allwinner
+ - Disabled non-secure access to PRCM power control registers
+ - Arm
+ - `BL32_BASE` is now platform-dependent when `SPD_spmd` is enabled
+ - Added support for loading the Chain of Trust from the device tree
+ - The firmware update check is now executed only once
+ - NV-counter base addresses are now loaded from the device tree when
+ `COT_DESC_IN_DTB` is enabled
+ - Now loads and populates `fw_config` and `tb_fw_config`
+ - FCONF population now occurs after caches have been enabled in order to
+ reduce boot times
+ - Arm Corstone-700
+ - Platform support has been split into both an FVP and an FPGA variant
+ - Arm FPGA
+ - DTB and BL33 load addresses have been given sensible default values
+ - Now reads generic timer counter frequency, GICD and GICR base addresses,
+ and UART address from DT
+ - Now treats the primary PL011 UART as an SBSA Generic UART
+ - Arm FVP
+ - Secure interrupt descriptions, UART parameters, clock frequencies and
+ GICv3 parameters are now queried through FCONF
+ - UART parameters are now queried through the device tree
+ - Added an owner field to Cactus secure partitions
+ - Increased the maximum size of BL2 when the Chain of Trust is loaded from
+ the device tree
+ - Reduces the maximum size of BL31
+ - The `FVP_USE_SP804_TIMER` and `FVP_VE_USE_SP804_TIMER` build options have
+ been removed in favour of a common `USE_SP804_TIMER` option
+ - Added a third Cactus partition to manifests
+ - Device tree nodes now store UUIDs in big-endian
+ - Arm Juno
+ - Increased the maximum size of BL2 when optimizations have not been applied
+ - Reduced the maximum size of BL31 and BL32
+ - Marvell AP807
+ - Enabled snoop filters
+ - Marvell ARMADA A3K
+ - UART recovery images are now suffixed with `.bin`
+ - Marvell ARMADA A8K
+ - Option `BL31_CACHE_DISABLE` is now disabled (`0`) by default
+ - Nvidia Tegra
+ - Added VPR resize supported check when processing video memory resize
+ requests
+ - Added SMMU verification to prevent potential issues caused by undetected
+ corruption of the SMMU configuration during boot
+ - The GIC CPU interface is now properly disabled after CPU off
+ - The GICv2 sources list and the `BL31_SIZE` definition have been made
+ platform-specific
+ - The SPE driver will no longer flush the console when writing individual
+ characters
+ - Nvidia Tegra194
+ - TZDRAM setup has been moved to platform-specific early boot handlers
+ - Increased verbosity of debug prints for RAS SErrors
+ - Support for powering down CPUs during CPU suspend has been removed
+ - Now verifies firewall settings before using resources
+ - TI K3
+ - The UART number has been made configurable through `K3_USART`
+ - Rockchip RK3368
+ - The maximum number of memory map regions has been increased to 20
+ - Socionext Uniphier
+ - The maximum size of BL33 has been increased to support larger bootloaders
+ - STM32
+ - Removed platform-specific DT functions in favour of using existing generic
+ alternatives
+ - STM32MP1
+ - Increased verbosity of exception reports in debug builds
+ - Device trees have been updated to align with the Linux kernel
+ - Now uses the ETZPC driver to configure secure-aware interfaces for
+ assignment to the non-secure world
+ - Finished good variants have been added to the board identifier
+ enumerations
+ - Non-secure access to clocks and reset domains now depends on their state
+ of registration
+ - NEON is now disabled in `SP_MIN`
+ - The last page of `SYSRAM` is now used as SCMI shared memory
+ - Checks to verify platform compatibility have been added to verify that an
+ image is compatible with the chip ID of the running platform
+ - QEMU SBSA
+ - Removed support for Arm's Cortex-A53
+- Services
+ - Renamed SPCI to FF-A
+ - SPMD
+ - No longer forwards requests to the non-secure world when retrieving
+ partition information
+ - SPMC manifest size is now retrieved directly from SPMD instead of the
+ device tree
+ - The FF-A version handler now returns SPMD's version when the origin of the
+ call is secure, and SPMC's version when the origin of the call is
+ non-secure
+ - SPMC
+ - Updated the manifest to declare CPU nodes in descending order as per the
+ SPM (Hafnium) multicore requirement
+ - Updated the device tree to mark 2GB as device memory for the first
+ partition excluding trusted DRAM region (which is reserved for SPMC)
+ - Increased the number of EC contexts to the maximum number of PEs as per
+ the FF-A specification
+- Tools
+ - FIPTool
+ - Now returns `0` on `help` and `help <command>`
+ - Marvell DoImage
+ - Updated Mbed TLS support to v2.8
+ - SPTool
+ - Now appends CertTool arguments
+
+### Resolved Issues
+
+- Bootloader images
+ - Fixed compilation errors for dual-root Chains of Trust caused by symbol
+ collision
+ - BL31
+ - Fixed compilation errors on platforms with fewer than 4 cores caused by
+ initialization code exceeding the end of the stacks
+ - Fixed compilation errors when building a position-independent image
+- Build System
+ - Fixed invalid empty version strings
+ - Fixed compilation errors on Windows caused by a non-portable architecture
+ revision comparison
+- Drivers
+ - Arm GIC
+ - Fixed spurious interrupts caused by a missing barrier
+ - STM32 Flexible Memory Controller 2 (FMC2) NAND driver
+ - Fixed runtime instability caused by incorrect error detection logic
+ - STM32MP1 Clock driver
+ - Fixed incorrectly-formatted log messages
+ - Fixed runtime instability caused by improper clock gating procedures
+ - STMicroelectronics Raw NAND driver
+ - Fixed runtime instability caused by incorrect unit conversion when waiting
+ for NAND readiness
+- Libraries
+ - AMU
+ - Fixed timeout errors caused by excess error logging
+ - EL3 Runtime
+ - Fixed runtime instability caused by improper register save/restore routine
+ in EL2
+ - FCONF
+ - Fixed failure to initialize GICv3 caused by overly-strict device tree
+ requirements
+ - Measured Boot
+ - Fixed driver errors caused by a missing default value for the `HASH_ALG`
+ build option
+ - SPE
+ - Fixed feature detection check that prevented CPUs supporting SVE from
+ detecting support for SPE in the non-secure world
+ - Translation Tables
+ - Fixed various MISRA-C 2012 static analysis violations
+- Platforms
+ - Allwinner A64
+ - Fixed USB issues on certain battery-powered device caused by improperly
+ activated USB power rail
+ - Arm
+ - Fixed compilation errors caused by increase in BL2 size
+ - Fixed compilation errors caused by missing Makefile dependencies to
+ generated files when building the FIP
+ - Fixed MISRA-C 2012 static analysis violations caused by unused structures
+ in include directives intended to be feature-gated
+ - Arm FPGA
+ - Fixed initialization issues caused by incorrect MPIDR topology mapping
+ logic
+ - Arm RD-N1-edge
+ - Fixed compilation errors caused by mismatched parentheses in Makefile
+ - Arm SGI
+ - Fixed crashes due to the flash memory used for cold reboot attack
+ protection not being mapped
+ - Intel Agilex
+ - Fixed initialization issues caused by several compounding bugs
+ - Marvell
+ - Fixed compilation warnings caused by multiple Makefile inclusions
+ - Marvell ARMADA A3K
+ - Fixed boot issue in debug builds caused by checks on the BL33 load address
+ that are not appropriate for this platform
+ - Nvidia Tegra
+ - Fixed incorrect delay timer reads
+ - Fixed spurious interrupts in the non-secure world during cold boot caused
+ by the arbitration bit in the memory controller not being cleared
+ - Fixed faulty video memory resize sequence
+ - Nvidia Tegra194
+ - Fixed incorrect alignment of TZDRAM base address
+ - NXP iMX8M
+ - Fixed CPU hot-plug issues caused by race condition
+ - STM32MP1
+ - Fixed compilation errors in highly-parallel builds caused by incorrect
+ Makefile dependencies
+ - STM32MP157C-ED1
+ - Fixed initialization issues caused by missing device tree hash node
+ - Raspberry Pi 3
+ - Fixed compilation errors caused by incorrect dependency ordering in
+ Makefile
+ - Rockchip
+ - Fixed initialization issues caused by non-critical errors when parsing FDT
+ being treated as critical
+ - Rockchip RK3368
+ - Fixed runtime instability caused by incorrect CPUID shift value
+ - QEMU
+ - Fixed compilation errors caused by incorrect dependency ordering in
+ Makefile
+ - QEMU SBSA
+ - Fixed initialization issues caused by FDT exceeding reserved memory size
+ - QTI
+ - Fixed compilation errors caused by inclusion of a non-existent file
+- Services
+ - FF-A (previously SPCI)
+ - Fixed SPMD aborts caused by incorrect behaviour when the manifest is
+ page-aligned
+- Tools
+ - Fixed compilation issues when compiling tools from within their respective
+ directories
+ - FIPTool
+ - Fixed command line parsing issues on Windows when using arguments whose
+ names also happen to be a subset of another's
+ - Marvell DoImage
+ - Fixed PKCS signature verification errors at boot on some platforms caused
+ by generation of misaligned images
+
+### Known Issues
+
+- Platforms
+ - NVIDIA Tegra
+ - Signed comparison compiler warnings occurring in libfdt are currently
+ being worked around by disabling the warning for the platform until the
+ underlying issue is resolved in libfdt
+
+## 2.3 (2020-04-20)
+
+### New Features
+
+- Arm Architecture
+ - Add support for Armv8.4-SecEL2 extension through the SPCI defined SPMD/SPMC
+ components.
+ - Build option to support EL2 context save and restore in the secure world
+ (CTX_INCLUDE_EL2_REGS).
+ - Add support for SMCCC v1.2 (introducing the new SMCCC_ARCH_SOC_ID SMC). Note
+ that the support is compliant, but the SVE registers save/restore will be
+ done as part of future S-EL2/SPM development.
+- BL-specific
+ - Enhanced BL2 bootloader flow to load secure partitions based on firmware
+ configuration data (fconf).
+ - Changes necessary to support SEPARATE_NOBITS_REGION feature
+ - TSP and BL2_AT_EL3: Add Position Independent Execution `PIE` support
+- Build System
+ - Add support for documentation build as a target in Makefile
+ - Add `COT` build option to select the Chain of Trust to use when the Trusted
+ Boot feature is enabled (default: `tbbr`).
+ - Added creation and injection of secure partition packages into the FIP.
+ - Build option to support SPMC component loading and run at S-EL1 or S-EL2
+ (SPMD_SPM_AT_SEL2).
+ - Enable MTE support
+ - Enable Link Time Optimization in GCC
+ - Enable -Wredundant-decls warning check
+ - Makefile: Add support to optionally encrypt BL31 and BL32
+ - Add support to pass the nt_fw_config DTB to OP-TEE.
+ - Introduce per-BL `CPPFLAGS`, `ASFLAGS`, and `LDFLAGS`
+ - build_macros: Add CREATE_SEQ function to generate sequence of numbers
+- CPU Support
+ - cortex-a57: Enable higher performance non-cacheable load forwarding
+ - Hercules: Workaround for Errata 1688305
+ - Klein: Support added for Klein CPU
+ - Matterhorn: Support added for Matterhorn CPU
+- Drivers
+ - auth: Add `calc_hash` function for hash calculation. Used for authentication
+ of images when measured boot is enabled.
+ - cryptocell: Add authenticated decryption framework, and support for
+ CryptoCell-713 and CryptoCell-712 RSA 3K
+ - gic600: Add support for multichip configuration and Clayton
+ - gicv3: Introduce makefile, Add extended PPI and SPI range, Add support for
+ probing multiple GIC Redistributor frames
+ - gicv4: Add GICv4 extension for GIC driver
+ - io: Add an IO abstraction layer to load encrypted firmwares
+ - mhu: Derive doorbell base address
+ - mtd: Add SPI-NOR, SPI-NAND, SPI-MEM, and raw NAND framework
+ - scmi: Allow use of multiple SCMI channels
+ - scu: Add a driver for snoop control unit
+- Libraries
+ - coreboot: Add memory range parsing and use generic base address
+ - compiler_rt: Import popcountdi2.c and popcountsi2.c files, aeabi_ldivmode.S
+ file and dependencies
+ - debugFS: Add DebugFS functionality
+ - el3_runtime: Add support for enabling S-EL2
+ - fconf: Add Firmware Configuration Framework (fconf) (experimental).
+ - libc: Add memrchr function
+ - locks: bakery: Use is_dcache_enabled() helper and add a DMB to the
+ 'read_cache_op' macro
+ - psci: Add support to enable different personality of the same soc.
+ - xlat_tables_v2: Add support to pass shareability attribute for normal memory
+ region, use get_current_el_maybe_constant() in is_dcache_enabled(),
+ read-only xlat tables for BL31 memory, and add enable_mmu()
+- New Platforms Support
+ - arm/arm_fpga: New platform support added for FPGA
+ - arm/rddaniel: New platform support added for rd-daniel platform
+ - brcm/stingray: New platform support added for Broadcom stingray platform
+ - nvidia/tegra194: New platform support for Nvidia Tegra194 platform
+- Platforms
+ - allwinner: Implement PSCI system suspend using SCPI, add a msgbox driver for
+ use with SCPI, and reserve and map space for the SCP firmware
+ - allwinner: axp: Add AXP805 support
+ - allwinner: power: Add DLDO4 power rail
+ - amlogic: axg: Add a build flag when using ATOS as BL32 and support for the
+ A113D (AXG) platform
+ - arm/a5ds: Add ethernet node and L2 cache node in devicetree
+ - arm/common: Add support for the new `dualroot` chain of trust
+ - arm/common: Add support for SEPARATE_NOBITS_REGION
+ - arm/common: Re-enable PIE when RESET_TO_BL31=1
+ - arm/common: Allow boards to specify second DRAM Base address and to define
+ PLAT_ARM_TZC_FILTERS
+ - arm/corstone700: Add support for mhuv2 and stack protector
+ - arm/fvp: Add support for fconf in BL31 and SP_MIN. Populate power domain
+ descriptor dynamically by leveraging fconf APIs.
+ - arm/fvp: Add Cactus/Ivy Secure Partition information and use two instances
+ of Cactus at S-EL1
+ - arm/fvp: Add support to run BL32 in TDRAM and BL31 in secure DRAM
+ - arm/fvp: Add support for GICv4 extension and BL2 hash calculation in BL1
+ - arm/n1sdp: Setup multichip gic routing table, update platform macros for
+ dual-chip setup, introduce platform information SDS region, add support to
+ update presence of External LLC, and enable the NEOVERSE_N1_EXTERNAL_LLC
+ flag
+ - arm/rdn1edge: Add support for dual-chip configuration and use CREATE_SEQ
+ helper macro to compare chip count
+ - arm/sgm: Always use SCMI for SGM platforms
+ - arm/sgm775: Add support for dynamic config using fconf
+ - arm/sgi: Add multi-chip mode parameter in HW_CONFIG dts, macros for remote
+ chip device region, chip_id and multi_chip_mode to platform variant info,
+ and introduce number of chips macro
+ - brcm: Add BL2 and BL31 support common across Broadcom platforms
+ - brcm: Add iproc SPI Nor flash support, spi driver, emmc driver, and support
+ to retrieve plat_toc_flags
+ - hisilicon: hikey960: Enable system power off callback
+ - intel: Enable bridge access, SiP SMC secure register access, and uboot
+ entrypoint support
+ - intel: Implement platform specific system reset 2
+ - intel: Introduce mailbox response length handling
+ - imx: console: Use CONSOLE_T_BASE for UART base address and generic console_t
+ data structure
+ - imx8mm: Provide uart base as build option and add the support for opteed spd
+ on imx8mq/imx8mm
+ - imx8qx: Provide debug uart num as build
+ - imx8qm: Apply clk/pinmux configuration for DEBUG_CONSOLE and provide debug
+ uart num as build param
+ - marvell: a8k: Implement platform specific power off and add support for
+ loading MG CM3 images
+ - mediatek: mt8183: Add Vmodem/Vcore DVS init level
+ - qemu: Support optional encryption of BL31 and BL32 images and
+ ARM_LINUX_KERNEL_AS_BL33 to pass FDT address
+ - qemu: Define ARMV7_SUPPORTS_VFP
+ - qemu: Implement PSCI_CPU_OFF and qemu_system_off via semihosting
+ - renesas: rcar_gen3: Add new board revision for M3ULCB
+ - rockchip: Enable workaround for erratum 855873, claim a macro to enable hdcp
+ feature for DP, enable power domains of rk3399 before reset, add support for
+ UART3 as serial output, and initialize reset and poweroff GPIOs with known
+ invalid value
+ - rpi: Implement PSCI CPU_OFF, use MMIO accessor, autodetect Mini-UART vs.
+ PL011 configuration, and allow using PL011 UART for RPi3/RPi4
+ - rpi3: Include GPIO driver in all BL stages and use same "clock-less" setup
+ scheme as RPi4
+ - rpi3/4: Add support for offlining CPUs
+ - st: stm32mp1: platform.mk: Support generating multiple images in one build,
+ migrate to implicit rules, derive map file name from target name, generate
+ linker script with fixed name, and use PHONY for the appropriate targets
+ - st: stm32mp1: Add support for SPI-NOR, raw NAND, and SPI-NAND boot device,
+ QSPI, FMC2 driver
+ - st: stm32mp1: Use stm32mp_get_ddr_ns_size() function, set XN attribute for
+ some areas in BL2, dynamically map DDR later and non-cacheable during its
+ test, add a function to get non-secure DDR size, add DT helper for reg by
+ name, and add compilation flags for boot devices
+ - socionext: uniphier: Turn on ENABLE_PIE
+ - ti: k3: Add PIE support
+ - xilinx: versal: Add set wakeup source, client wakeup, query data, request
+ wakeup, PM_INIT_FINALIZE, PM_GET_TRUSTZONE_VERSION, PM IOCTL, support for
+ suspend related, and Get_ChipID APIs
+ - xilinx: versal: Implement power down/restart related EEMI, SMC handler for
+ EEMI, PLL related PM, clock related PM, pin control related PM, reset
+ related PM, device related PM , APIs
+ - xilinx: versal: Enable ipi mailbox service
+ - xilinx: versal: Add get_api_version support and support to send PM API to
+ PMC using IPI
+ - xilinx: zynqmp: Add checksum support for IPI data, GET_CALLBACK_DATA
+ function, support to query max divisor, CLK_SET_RATE_PARENT in gem clock
+ node, support for custom type flags, LPD WDT clock to the pm_clock
+ structure, idcodes for new RFSoC silicons ZU48DR and ZU49DR, and id for new
+ RFSoC device ZU39DR
+- Security
+ - Use Speculation Barrier instruction for v8.5+ cores
+ - Add support for optional firmware encryption feature (experimental).
+ - Introduce a new `dualroot` chain of trust.
+ - aarch64: Prevent speculative execution past ERET
+ - aarch32: Stop speculative execution past exception returns.
+- SPCI
+ - Introduced the Secure Partition Manager Dispatcher (SPMD) component as a new
+ standard service.
+- Tools
+ - cert_create: Introduce CoT build option and TBBR CoT makefile, and define
+ the dualroot CoT
+ - encrypt_fw: Add firmware authenticated encryption tool
+ - memory: Add show_memory script that prints a representation of the memory
+ layout for the latest build
+
+### Changed
+
+- Arm Architecture
+ - PIE: Make call to GDT relocation fixup generalized
+- BL-Specific
+ - Increase maximum size of BL2 image
+ - BL31: Discard .dynsym .dynstr .hash sections to make ENABLE_PIE work
+ - BL31: Split into two separate memory regions
+ - Unify BL linker scripts and reduce code duplication.
+- Build System
+ - Changes to drive cert_create for dualroot CoT
+ - Enable -Wlogical-op always
+ - Enable -Wshadow always
+ - Refactor the warning flags
+ - PIE: Pass PIE options only to BL31
+ - Reduce space lost to object alignment
+ - Set lld as the default linker for Clang builds
+ - Remove -Wunused-const-variable and -Wpadded warning
+ - Remove -Wmissing-declarations warning from WARNING1 level
+- Drivers
+ - authentication: Necessary fix in drivers to upgrade to mbedtls-2.18.0
+ - console: Integrate UART base address in generic console_t
+ - gicv3: Change API for GICR_IPRIORITYR accessors and separate GICD and GICR
+ accessor functions
+ - io: Change seek offset to signed long long and panic in case of io setup
+ failure
+ - smmu: SMMUv3: Changed retry loop to delay timer
+ - tbbr: Reduce size of hash and ECDSA key buffers when possible
+- Library Code
+ - libc: Consolidate the size_t, unified, and NULL definitions, and unify
+ intmax_t and uintmax_t on AArch32/64
+ - ROMLIB: Optimize memory layout when ROMLIB is used
+ - xlat_tables_v2: Use ARRAY_SIZE in REGISTER_XLAT_CONTEXT_FULL_SPEC, merge
+ REGISTER_XLAT_CONTEXT\_{FULL_SPEC,RO_BASE_TABLE}, and simplify end address
+ checks in mmap_add_region_check()
+- Platforms
+ - allwinner: Adjust SRAM A2 base to include the ARISC vectors, clean up MMU
+ setup, reenable USE_COHERENT_MEM, remove unused include path, move the
+ NOBITS region to SRAM A1, convert AXP803 regulator setup code into a driver,
+ enable clock before resetting I2C/RSB
+ - allwinner: h6: power: Switch to using the AXP driver
+ - allwinner: a64: power: Use fdt_for_each_subnode, remove obsolete register
+ check, remove duplicate DT check, and make sunxi_turn_off_soc static
+ - allwinner: Build PMIC bus drivers only in BL31, clean up PMIC-related error
+ handling, and synchronize PMIC enumerations
+ - arm/a5ds: Change boot address to point to DDR address
+ - arm/common: Check for out-of-bound accesses in the platform io policies
+ - arm/corstone700: Updating the kernel arguments to support initramfs, use
+ fdts DDR memory and XIP rootfs, and set UART clocks to 32MHz
+ - arm/fvp: Modify multithreaded dts file of DynamIQ FVPs, slightly bump the
+ stack size for bl1 and bl2, remove re-definition of topology related build
+ options, stop reclaiming init code with Clang builds, and map only the
+ needed DRAM region statically in BL31/SP_MIN
+ - arm/juno: Maximize space allocated to SCP_BL2
+ - arm/sgi: Bump bl1 RW limit, mark remote chip shared ram as non-cacheable,
+ move GIC related constants to board files, include AFF3 affinity in core
+ position calculation, move bl31_platform_setup to board file, and move
+ topology information to board folder
+ - common: Refactor load_auth_image_internal().
+ - hisilicon: Remove uefi-tools in hikey and hikey960 documentation
+ - intel: Modify non secure access function, BL31 address mapping, mailbox's
+ get_config_status, and stratix10 BL31 parameter handling
+ - intel: Remove un-needed checks for qspi driver r/w and s10 unused source
+ code
+ - intel: Change all global sip function to static
+ - intel: Refactor common platform code
+ - intel: Create SiP service header file
+ - marvell: armada: scp_bl2: Allow loading up to 8 images
+ - marvell: comphy-a3700: Support SGMII COMPHY power off and fix USB3 powering
+ on when on lane 2
+ - marvell: Consolidate console register calls
+ - mediatek: mt8183: Protect 4GB~8GB dram memory, refine GIC driver for low
+ power scenarios, and switch PLL/CLKSQ/ck_off/axi_26m control to SPM
+ - qemu: Update flash address map to keep FIP in secure FLASH0
+ - renesas: rcar_gen3: Update IPL and Secure Monitor Rev.2.0.6, update DDR
+ setting for H3, M3, M3N, change fixed destination address of BL31 and BL32,
+ add missing #{address,size}-cells into generated DT, pass DT to OpTee OS,
+ and move DDR drivers out of staging
+ - rockchip: Make miniloader ddr_parameter handling optional, cleanup securing
+ of ddr regions, move secure init to separate file, use base+size for secure
+ ddr regions, bring TZRAM_SIZE values in lined, and prevent macro expansion
+ in paths
+ - rpi: Move plat_helpers.S to common
+ - rpi3: gpio: Simplify GPIO setup
+ - rpi4: Skip UART initialisation
+ - st: stm32m1: Use generic console_t data structure, remove second QSPI flash
+ instance, update for FMC2 pin muxing, and reduce MAX_XLAT_TABLES to 4
+ - socionext: uniphier: Make on-chip SRAM and I/O register regions configurable
+ - socionext: uniphier: Make PSCI related, counter control, UART, pinmon, NAND
+ controller, and eMMC controller base addresses configurable
+ - socionext: uniphier: Change block_addressing flag and the return value type
+ of .is_usb_boot() to bool
+ - socionext: uniphier: Run BL33 at EL2, call uniphier_scp_is_running() only
+ when on-chip STM is supported, define PLAT_XLAT_TABLES_DYNAMIC only for BL2,
+ support read-only xlat tables, use enable_mmu() in common function, shrink
+ UNIPHIER_ROM_REGION_SIZE, prepare uniphier_soc_info() for next SoC, extend
+ boot device detection for future SoCs, make all BL images completely
+ position-independent, make uniphier_mmap_setup() work with PIE, pass SCP
+ base address as a function parameter, set buffer offset and length for
+ io_block dynamically, and use more mmap_add_dynamic_region() for loading
+ images
+ - spd/trusty: Disable error messages seen during boot, allow gic base to be
+ specified with GICD_BASE, and allow getting trusty memsize from
+ BL32_MEM_SIZE instead of TSP_SEC_MEM_SIZE
+ - ti: k3: common: Enable ARM cluster power down and rename device IDs to be
+ more consistent
+ - ti: k3: drivers: ti_sci: Put sequence number in coherent memory and remove
+ indirect structure of const data
+ - xilinx: Move ipi mailbox svc to xilinx common
+ - xilinx: zynqmp: Use GIC framework for warm restart
+ - xilinx: zynqmp: pm: Move custom clock flags to typeflags, remove
+ CLK_TOPSW_LSBUS from invalid clock list and rename FPD WDT clock ID
+ - xilinx: versal: Increase OCM memory size for DEBUG builds and adjust cpu
+ clock, Move versal_def.h and versal_private to include directory
+- Tools
+ - sptool: Updated sptool to accommodate building secure partition packages.
+
+### Resolved Issues
+
+- Arm Architecture
+ - Fix crash dump for lower EL
+- BL-Specific
+ - Bug fix: Protect TSP prints with lock
+ - Fix boot failures on some builds linked with ld.lld.
+- Build System
+ - Fix clang build if CC is not in the path.
+ - Fix 'BL stage' comment for build macros
+- Code Quality
+ - coverity: Fix various MISRA violations including null pointer violations, C
+ issues in BL1/BL2/BL31 and FDT helper functions, using boolean essential,
+ type, and removing unnecessary header file and comparisons to LONG_MAX in
+ debugfs devfip
+ - Based on coding guidelines, replace all `unsigned long` depending on if
+ fixed based on AArch32 or AArch64.
+ - Unify type of "cpu_idx" and Platform specific defines across PSCI module.
+- Drivers
+ - auth: Necessary fix in drivers to upgrade to mbedtls-2.18.0
+ - delay_timer: Fix non-standard frequency issue in udelay
+ - gicv3: Fix compiler dependent behavior
+ - gic600: Fix include ordering according to the coding style and power up
+ sequence
+- Library Code
+ - el3_runtime: Fix stack pointer maintenance on EA handling path, fixup
+ 'cm_setup_context' prototype, and adds TPIDR_EL2 register to the context
+ save restore routines
+ - libc: Fix SIZE_MAX on AArch32
+ - locks: T589: Fix insufficient ordering guarantees in bakery lock
+ - pmf: Fix 'tautological-constant-compare' error, Make the runtime
+ instrumentation work on AArch32, and Simplify PMF helper macro definitions
+ across header files
+ - xlat_tables_v2: Fix assembler warning of PLAT_RO_XLAT_TABLES
+- Platforms
+ - allwinner: Fix H6 GPIO and CCU memory map addresses and incorrect ARISC code
+ patch offset check
+ - arm/a5ds: Correct system freq and Cache Writeback Granule, and cleanup
+ enable-method in devicetree
+ - arm/fvp: Fix incorrect GIC mapping, BL31 load address and image size for
+ RESET_TO_BL31=1, topology description of cpus for DynamIQ based FVP, and
+ multithreaded FVP power domain tree
+ - arm/fvp: spm-mm: Correcting instructions to build SPM for FVP
+ - arm/common: Fix ROTPK hash generation for ECDSA encryption, BL2 bug in
+ dynamic configuration initialisation, and current RECLAIM_INIT_CODE behavior
+ - arm/rde1edge: Fix incorrect topology tree description
+ - arm/sgi: Fix the incorrect check for SCMI channel ID
+ - common: Flush dcache when storing timestamp
+ - intel: Fix UEFI decompression issue, memory calibration, SMC SIP service,
+ mailbox config return status, mailbox driver logic, FPGA manager on
+ reconfiguration, and mailbox send_cmd issue
+ - imx: Fix shift-overflow errors, the rdc memory region slot's offset,
+ multiple definition of ipc_handle, missing inclusion of cdefs.h, and correct
+ the SGIs that used for secure interrupt
+ - mediatek: mt8183: Fix AARCH64 init fail on CPU0
+ - rockchip: Fix definition of struct param_ddr_usage
+ - rpi4: Fix documentation of armstub config entry
+ - st: Correct io possible NULL pointer dereference and device_size type, nand
+ xor_ecc.val assigned value, static analysis tool issues, and fix incorrect
+ return value and correctly check pwr-regulators node
+ - xilinx: zynqmp: Correct syscnt freq for QEMU and fix clock models and IDs of
+ GEM-related clocks
+
+### Known Issues
+
+- Build System
+ - dtb: DTB creation not supported when building on a Windows host.
+
+ This step in the build process is skipped when running on a Windows host. A
+ known issue from the 1.6 release.
+
+ - Intermittent assertion firing `ASSERT: services/spd/tspd/tspd_main.c:105`
+- Coverity
+ - Intermittent Race condition in Coverity Jenkins Build Job
+- Platforms
+ - arm/juno: System suspend from Linux does not function as documented in the
+ user guide
+
+ Following the instructions provided in the user guide document does not
+ result in the platform entering system suspend state as expected. A message
+ relating to the hdlcd driver failing to suspend will be emitted on the Linux
+ terminal.
+
+ - mediatek/mt6795: This platform does not build in this release
+
+## 2.2 (2019-10-22)
+
+### New Features
+
+- Architecture
+ - Enable Pointer Authentication (PAuth) support for Secure World
+
+ - Adds support for ARMv8.3-PAuth in BL1 SMC calls and BL2U image for
+ firmware updates.
+
+ - Enable Memory Tagging Extension (MTE) support in both secure and non-secure
+ worlds
+
+ - Adds support for the new Memory Tagging Extension arriving in ARMv8.5. MTE
+ support is now enabled by default on systems that support it at EL0.
+ - To enable it at ELx for both the non-secure and the secure world, the
+ compiler flag `CTX_INCLUDE_MTE_REGS` includes register saving and
+ restoring when necessary in order to prevent information leakage between
+ the worlds.
+
+ - Add support for Branch Target Identification (BTI)
+- Build System
+ - Modify FVP makefile for CPUs that support both AArch64/32
+ - AArch32: Allow compiling with soft-float toolchain
+ - Makefile: Add default warning flags
+ - Add Makefile check for PAuth and AArch64
+ - Add compile-time errors for HW_ASSISTED_COHERENCY flag
+ - Apply compile-time check for AArch64-only CPUs
+ - build_macros: Add mechanism to prevent bin generation.
+ - Add support for default stack-protector flag
+ - spd: opteed: Enable NS_TIMER_SWITCH
+ - plat/arm: Skip BL2U if RESET_TO_SP_MIN flag is set
+ - Add new build option to let each platform select which implementation of
+ spinlocks it wants to use
+- CPU Support
+ - DSU: Workaround for erratum 798953 and 936184
+ - Neoverse N1: Force cacheable atomic to near atomic
+ - Neoverse N1: Workaround for erratum 1073348, 1130799, 1165347, 1207823,
+ 1220197, 1257314, 1262606, 1262888, 1275112, 1315703, 1542419
+ - Neoverse Zeus: Apply the MSR SSBS instruction
+ - cortex-Hercules/HerculesAE: Support added for Cortex-Hercules and
+ Cortex-HerculesAE CPUs
+ - cortex-Hercules/HerculesAE: Enable AMU for Cortex-Hercules and
+ Cortex-HerculesAE
+ - cortex-a76AE: Support added for Cortex-A76AE CPU
+ - cortex-a76: Workaround for erratum 1257314, 1262606, 1262888, 1275112,
+ 1286807
+ - cortex-a65/a65AE: Support added for Cortex-A65 and Cortex-A65AE CPUs
+ - cortex-a65: Enable AMU for Cortex-A65
+ - cortex-a55: Workaround for erratum 1221012
+ - cortex-a35: Workaround for erratum 855472
+ - cortex-a9: Workaround for erratum 794073
+- Drivers
+ - console: Allow the console to register multiple times
+
+ - delay: Timeout detection support
+
+ - gicv3: Enabled multi-socket GIC redistributor frame discovery and migrated
+ ARM platforms to the new API
+
+ - Adds `gicv3_rdistif_probe` function that delegates the responsibility of
+ discovering the corresponding redistributor base frame to each CPU itself.
+
+ - sbsa: Add SBSA watchdog driver
+
+ - st/stm32_hash: Add HASH driver
+
+ - ti/uart: Add an AArch32 variant
+- Library at ROM (romlib)
+ - Introduce BTI support in Library at ROM (romlib)
+- New Platforms Support
+ - amlogic: g12a: New platform support added for the S905X2 (G12A) platform
+ - amlogic: meson/gxl: New platform support added for Amlogic Meson S905x (GXL)
+ - arm/a5ds: New platform support added for A5 DesignStart
+ - arm/corstone: New platform support added for Corstone-700
+ - intel: New platform support added for Agilex
+ - mediatek: New platform support added for MediaTek mt8183
+ - qemu/qemu_sbsa: New platform support added for QEMU SBSA platform
+ - renesas/rcar_gen3: plat: New platform support added for D3
+ - rockchip: New platform support added for px30
+ - rockchip: New platform support added for rk3288
+ - rpi: New platform support added for Raspberry Pi 4
+- Platforms
+ - arm/common: Introduce wrapper functions to setup secure watchdog
+ - arm/fvp: Add Delay Timer driver to BL1 and BL31 and option for defining
+ platform DRAM2 base
+ - arm/fvp: Add Linux DTS files for 32 bit threaded FVPs
+ - arm/n1sdp: Add code for DDR ECC enablement and BL33 copy to DDR, Initialise
+ CNTFRQ in Non Secure CNTBaseN
+ - arm/juno: Use shared mbedtls heap between BL1 and BL2 and add basic support
+ for dynamic config
+ - imx: Basic support for PicoPi iMX7D, rdc module init, caam module init,
+ aipstz init, IMX_SIP_GET_SOC_INFO, IMX_SIP_BUILDINFO added
+ - intel: Add ncore ccu driver
+ - mediatek/mt81\*: Use new bl31_params_parse() helper
+ - nvidia: tegra: Add support for multi console interface
+ - qemu/qemu_sbsa: Adding memory mapping for both FLASH0/FLASH1
+ - qemu: Added gicv3 support, new console interface in AArch32, and
+ sub-platforms
+ - renesas/rcar_gen3: plat: Add R-Car V3M support, new board revision for
+ H3ULCB, DBSC4 setting before self-refresh mode
+ - socionext/uniphier: Support console based on multi-console
+ - st: stm32mp1: Add OP-TEE, Avenger96, watchdog, LpDDR3, authentication
+ support and general SYSCFG management
+ - ti/k3: common: Add support for J721E, Use coherent memory for shared data,
+ Trap all asynchronous bus errors to EL3
+ - xilinx/zynqmp: Add support for multi console interface, Initialize IPI table
+ from zynqmp_config_setup()
+- PSCI
+ - Adding new optional PSCI hook `pwr_domain_on_finish_late`
+ - This PSCI hook `pwr_domain_on_finish_late` is similar to
+ `pwr_domain_on_finish` but is guaranteed to be invoked when the respective
+ core and cluster are participating in coherency.
+- Security
+ - Speculative Store Bypass Safe (SSBS): Further enhance protection against
+ Spectre variant 4 by disabling speculative loads/stores (SPSR.SSBS bit) by
+ default.
+ - UBSAN support and handlers
+ - Adds support for the Undefined Behaviour sanitizer. There are two types of
+ support offered - minimalistic trapping support which essentially
+ immediately crashes on undefined behaviour and full support with full
+ debug messages.
+- Tools
+ - cert_create: Add support for bigger RSA key sizes (3KB and 4KB), previously
+ the maximum size was 2KB.
+ - fiptool: Add support to build fiptool on Windows.
+
+### Changed
+
+- Architecture
+ - Refactor ARMv8.3 Pointer Authentication support code
+ - backtrace: Strip PAC field when PAUTH is enabled
+ - Prettify crash reporting output on AArch64.
+ - Rework smc_unknown return code path in smc_handler
+ - Leverage the existing `el3_exit()` return routine for smc_unknown return
+ path rather than a custom set of instructions.
+- BL-Specific
+ - Invalidate dcache build option for BL2 entry at EL3
+ - Add missing support for BL2_AT_EL3 in XIP memory
+- Boot Flow
+ - Add helper to parse BL31 parameters (both versions)
+ - Factor out cross-BL API into export headers suitable for 3rd party code
+ - Introduce lightweight BL platform parameter library
+- Drivers
+ - auth: Memory optimization for Chain of Trust (CoT) description
+ - bsec: Move bsec_mode_is_closed_device() service to platform
+ - cryptocell: Move Cryptocell specific API into driver
+ - gicv3: Prevent pending G1S interrupt from becoming G0 interrupt
+ - mbedtls: Remove weak heap implementation
+ - mmc: Increase delay between ACMD41 retries
+ - mmc: stm32_sdmmc2: Correctly manage block size
+ - mmc: stm32_sdmmc2: Manage max-frequency property from DT
+ - synopsys/emmc: Do not change FIFO TH as this breaks some platforms
+ - synopsys: Update synopsys drivers to not rely on undefined overflow
+ behaviour
+ - ufs: Extend the delay after reset to wait for some slower chips
+- Platforms
+ - amlogic/meson/gxl: Remove BL2 dependency from BL31
+ - arm/common: Shorten the Firmware Update (FWU) process
+ - arm/fvp: Remove GIC initialisation from secondary core cold boot
+ - arm/sgm: Temporarily disable shared Mbed TLS heap for SGM
+ - hisilicon: Update hisilicon drivers to not rely on undefined overflow
+ behaviour
+ - imx: imx8: Replace PLAT_IMX8\* with PLAT_imx8\*, remove duplicated linker
+ symbols and deprecated code include, keep only IRQ 32 unmasked, enable all
+ power domain by default
+ - marvell: Prevent SError accessing PCIe link, Switch to xlat_tables_v2, do
+ not rely on argument passed via smc, make sure that comphy init will use
+ correct address
+ - mediatek: mt8173: Refactor RTC and PMIC drivers
+ - mediatek: mt8173: Apply MULTI_CONSOLE framework
+ - nvidia: Tegra: memctrl_v2: fix "overflow before widen" coverity issue
+ - qemu: Simplify the image size calculation, Move and generalise FDT PSCI
+ fixup, move gicv2 codes to separate file
+ - renesas/rcar_gen3: Convert to multi-console API, update QoS setting, Update
+ IPL and Secure Monitor Rev2.0.4, Change to restore timer counter value at
+ resume, Update DDR setting rev.0.35, qos: change subslot cycle, Change
+ periodic write DQ training option.
+ - rockchip: Allow SOCs with undefined wfe check bits, Streamline and complete
+ UARTn_BASE macros, drop rockchip-specific imported linker symbols for bl31,
+ Disable binary generation for all SOCs, Allow console device to be set by
+ DTB, Use new bl31_params_parse functions
+ - rpi/rpi3: Move shared rpi3 files into common directory
+ - socionext/uniphier: Set CONSOLE_FLAG_TRANSLATE_CRLF and clean up console
+ driver
+ - socionext/uniphier: Replace DIV_ROUND_UP() with div_round_up() from
+ utils_def.h
+ - st/stm32mp: Split stm32mp_io_setup function, move
+ stm32_get_gpio_bank_clock() to private file, correctly handle Clock
+ Spreading Generator, move oscillator functions to generic file, realign
+ device tree files with internal devs, enable RTCAPB clock for dual-core
+ chips, use a common function to check spinlock is available, move
+ check_header() to common code
+ - ti/k3: Enable SEPARATE_CODE_AND_RODATA by default, Remove shared RAM space,
+ Drop \_ADDRESS from K3_USART_BASE to match other defines, Remove MSMC port
+ definitions, Allow USE_COHERENT_MEM for K3, Set L2 latency on A72 cores
+- PSCI
+ - PSCI: Lookup list of parent nodes to lock only once
+- Secure Partition Manager (SPM): SPCI Prototype
+ - Fix service UUID lookup
+ - Adjust size of virtual address space per partition
+ - Refactor xlat context creation
+ - Move shim layer to TTBR1_EL1
+ - Ignore empty regions in resource description
+- Security
+ - Refactor SPSR initialisation code
+ - SMMUv3: Abort DMA transactions
+ - For security DMA should be blocked at the SMMU by default unless
+ explicitly enabled for a device. SMMU is disabled after reset with all
+ streams bypassing the SMMU, and abortion of all incoming transactions
+ implements a default deny policy on reset.
+ - Moves `bl1_platform_setup()` function from arm_bl1_setup.c to FVP
+ platforms' fvp_bl1_setup.c and fvp_ve_bl1_setup.c files.
+- Tools
+ - cert_create: Remove RSA PKCS#1 v1.5 support
+
+### Resolved Issues
+
+- Architecture
+ - Fix the CAS spinlock implementation by adding a missing DSB in
+ `spin_unlock()`
+ - AArch64: Fix SCTLR bit definitions
+ - Removes incorrect `SCTLR_V_BIT` definition and adds definitions for
+ ARMv8.3-Pauth `EnIB`, `EnDA` and `EnDB` bits.
+ - Fix restoration of PAuth context
+ - Replace call to `pauth_context_save()` with `pauth_context_restore()` in
+ case of unknown SMC call.
+- BL-Specific Issues
+ - Fix BL31 crash reporting on AArch64 only platforms
+- Build System
+ - Remove several warnings reported with W=2 and W=1
+- Code Quality Issues
+ - SCTLR and ACTLR are 32-bit for AArch32 and 64-bit for AArch64
+ - Unify type of "cpu_idx" across PSCI module.
+ - Assert if power level value greater then PSCI_INVALID_PWR_LVL
+ - Unsigned long should not be used as per coding guidelines
+ - Reduce the number of memory leaks in cert_create
+ - Fix type of cot_desc_ptr
+ - Use explicit-width data types in AAPCS parameter structs
+ - Add python configuration for editorconfig
+ - BL1: Fix type consistency
+ - Enable -Wshift-overflow=2 to check for undefined shift behavior
+ - Updated upstream platforms to not rely on undefined overflow behaviour
+- Coverity Quality Issues
+ - Remove GGC ignore -Warray-bounds
+ - Fix Coverity #261967, Infinite loop
+ - Fix Coverity #343017, Missing unlock
+ - Fix Coverity #343008, Side affect in assertion
+ - Fix Coverity #342970, Uninitialized scalar variable
+- CPU Support
+ - cortex-a12: Fix MIDR mask
+- Drivers
+ - console: Remove Arm console unregister on suspend
+ - gicv3: Fix support for full SPI range
+ - scmi: Fix wrong payload length
+- Library Code
+ - libc: Fix sparse warning for \_\_assert()
+ - libc: Fix memchr implementation
+- Platforms
+ - rpi: rpi3: Fix compilation error when stack protector is enabled
+ - socionext/uniphier: Fix compilation fail for SPM support build config
+ - st/stm32mp1: Fix TZC400 configuration against non-secure DDR
+ - ti/k3: common: Fix RO data area size calculation
+- Security
+ - AArch32: Disable Secure Cycle Counter
+ - Changes the implementation for disabling Secure Cycle Counter. For ARMv8.5
+ the counter gets disabled by setting `SDCR.SCCD` bit on CPU cold/warm
+ boot. For the earlier architectures PMCR register is saved/restored on
+ secure world entry/exit from/to Non-secure state, and cycle counting gets
+ disabled by setting PMCR.DP bit.
+ - AArch64: Disable Secure Cycle Counter
+ - For ARMv8.5 the counter gets disabled by setting `MDCR_El3.SCCD` bit on
+ CPU cold/warm boot. For the earlier architectures PMCR_EL0 register is
+ saved/restored on secure world entry/exit from/to Non-secure state, and
+ cycle counting gets disabled by setting PMCR_EL0.DP bit.
+
+### Deprecations
+
+- Common Code
+ - Remove MULTI_CONSOLE_API flag and references to it
+ - Remove deprecated `plat_crash_console_*`
+ - Remove deprecated interfaces `get_afflvl_shift`, `mpidr_mask_lower_afflvls`,
+ `eret`
+ - AARCH32/AARCH64 macros are now deprecated in favor of `__aarch64__`
+ - `__ASSEMBLY__` macro is now deprecated in favor of `__ASSEMBLER__`
+- Drivers
+ - console: Removed legacy console API
+ - console: Remove deprecated finish_console_register
+ - tzc: Remove deprecated types `tzc_action_t` and `tzc_region_attributes_t`
+- Secure Partition Manager (SPM):
+ - Prototype SPCI-based SPM (services/std_svc/spm) will be replaced with
+ alternative methods of secure partitioning support.
+
+### Known Issues
+
+- Build System Issues
+ - dtb: DTB creation not supported when building on a Windows host.
+
+ This step in the build process is skipped when running on a Windows host. A
+ known issue from the 1.6 release.
+- Platform Issues
+ - arm/juno: System suspend from Linux does not function as documented in the
+ user guide
+
+ Following the instructions provided in the user guide document does not
+ result in the platform entering system suspend state as expected. A message
+ relating to the hdlcd driver failing to suspend will be emitted on the Linux
+ terminal.
+
+ - mediatek/mt6795: This platform does not build in this release
+
+## 2.1 (2019-03-29)
+
+### New Features
+
+- Architecture
+
+ - Support for ARMv8.3 pointer authentication in the normal and secure worlds
+
+ The use of pointer authentication in the normal world is enabled whenever
+ architectural support is available, without the need for additional build
+ flags.
+
+ Use of pointer authentication in the secure world remains an experimental
+ configuration at this time. Using both the `ENABLE_PAUTH` and
+ `CTX_INCLUDE_PAUTH_REGS` build flags, pointer authentication can be enabled
+ in EL3 and S-EL1/0.
+
+ See the {ref}`Firmware Design` document for additional details on the use of
+ pointer authentication.
+
+ - Enable Data Independent Timing (DIT) in EL3, where supported
+
+- Build System
+
+ - Support for BL-specific build flags
+
+ - Support setting compiler target architecture based on `ARM_ARCH_MINOR` build
+ option.
+
+ - New `RECLAIM_INIT_CODE` build flag:
+
+ A significant amount of the code used for the initialization of BL31 is not
+ needed again after boot time. In order to reduce the runtime memory
+ footprint, the memory used for this code can be reclaimed after
+ initialization.
+
+ Certain boot-time functions were marked with the `__init` attribute to
+ enable this reclamation.
+
+- CPU Support
+
+ - cortex-a76: Workaround for erratum 1073348
+ - cortex-a76: Workaround for erratum 1220197
+ - cortex-a76: Workaround for erratum 1130799
+ - cortex-a75: Workaround for erratum 790748
+ - cortex-a75: Workaround for erratum 764081
+ - cortex-a73: Workaround for erratum 852427
+ - cortex-a73: Workaround for erratum 855423
+ - cortex-a57: Workaround for erratum 817169
+ - cortex-a57: Workaround for erratum 814670
+ - cortex-a55: Workaround for erratum 903758
+ - cortex-a55: Workaround for erratum 846532
+ - cortex-a55: Workaround for erratum 798797
+ - cortex-a55: Workaround for erratum 778703
+ - cortex-a55: Workaround for erratum 768277
+ - cortex-a53: Workaround for erratum 819472
+ - cortex-a53: Workaround for erratum 824069
+ - cortex-a53: Workaround for erratum 827319
+ - cortex-a17: Workaround for erratum 852423
+ - cortex-a17: Workaround for erratum 852421
+ - cortex-a15: Workaround for erratum 816470
+ - cortex-a15: Workaround for erratum 827671
+
+- Documentation
+
+ - Exception Handling Framework documentation
+ - Library at ROM (romlib) documentation
+ - RAS framework documentation
+ - Coding Guidelines document
+
+- Drivers
+
+ - ccn: Add API for setting and reading node registers
+
+ - Adds `ccn_read_node_reg` function
+ - Adds `ccn_write_node_reg` function
+
+ - partition: Support MBR partition entries
+
+ - scmi: Add `plat_css_get_scmi_info` function
+
+ Adds a new API `plat_css_get_scmi_info` which lets the platform register a
+ platform-specific instance of `scmi_channel_plat_info_t` and remove the
+ default values
+
+ - tzc380: Add TZC-380 TrustZone Controller driver
+
+ - tzc-dmc620: Add driver to manage the TrustZone Controller within the DMC-620
+ Dynamic Memory Controller
+
+- Library at ROM (romlib)
+
+ - Add platform-specific jump table list
+
+ - Allow patching of romlib functions
+
+ This change allows patching of functions in the romlib. This can be done by
+ adding "patch" at the end of the jump table entry for the function that
+ needs to be patched in the file jmptbl.i.
+
+- Library Code
+
+ - Support non-LPAE-enabled MMU tables in AArch32
+ - mmio: Add `mmio_clrsetbits_16` function
+ - 16-bit variant of `mmio_clrsetbits`
+ - object_pool: Add Object Pool Allocator
+ - Manages object allocation using a fixed-size static array
+ - Adds `pool_alloc` and `pool_alloc_n` functions
+ - Does not provide any functions to free allocated objects (by design)
+ - libc: Added `strlcpy` function
+ - libc: Import `strrchr` function from FreeBSD
+ - xlat_tables: Add support for ARMv8.4-TTST
+ - xlat_tables: Support mapping regions without an explicitly specified VA
+
+- Math
+
+ - Added softudiv macro to support software division
+
+- Memory Partitioning And Monitoring (MPAM)
+
+ - Enabled MPAM EL2 traps (`MPAMHCR_EL2` and `MPAM_EL2`)
+
+- Platforms
+
+ - amlogic: Add support for Meson S905 (GXBB)
+
+ - arm/fvp_ve: Add support for FVP Versatile Express platform
+
+ - arm/n1sdp: Add support for Neoverse N1 System Development platform
+
+ - arm/rde1edge: Add support for Neoverse E1 platform
+
+ - arm/rdn1edge: Add support for Neoverse N1 platform
+
+ - arm: Add support for booting directly to Linux without an intermediate
+ loader (AArch32)
+
+ - arm/juno: Enable new CPU errata workarounds for A53 and A57
+
+ - arm/juno: Add romlib support
+
+ Building a combined BL1 and ROMLIB binary file with the correct page
+ alignment is now supported on the Juno platform. When `USE_ROMLIB` is set
+ for Juno, it generates the combined file `bl1_romlib.bin` which needs to be
+ used instead of bl1.bin.
+
+ - intel/stratix: Add support for Intel Stratix 10 SoC FPGA platform
+
+ - marvell: Add support for Armada-37xx SoC platform
+
+ - nxp: Add support for i.MX8M and i.MX7 Warp7 platforms
+
+ - renesas: Add support for R-Car Gen3 platform
+
+ - xilinx: Add support for Versal ACAP platforms
+
+- Position-Independent Executable (PIE)
+
+ PIE support has initially been added to BL31. The `ENABLE_PIE` build flag is
+ used to enable or disable this functionality as required.
+
+- Secure Partition Manager
+
+ - New SPM implementation based on SPCI Alpha 1 draft specification
+
+ A new version of SPM has been implemented, based on the SPCI (Secure
+ Partition Client Interface) and SPRT (Secure Partition Runtime) draft
+ specifications.
+
+ The new implementation is a prototype that is expected to undergo intensive
+ rework as the specifications change. It has basic support for multiple
+ Secure Partitions and Resource Descriptions.
+
+ The older version of SPM, based on MM (ARM Management Mode Interface
+ Specification), is still present in the codebase. A new build flag, `SPM_MM`
+ has been added to allow selection of the desired implementation. This flag
+ defaults to 1, selecting the MM-based implementation.
+
+- Security
+
+ - Spectre Variant-1 mitigations (`CVE-2017-5753`)
+
+ - Use Speculation Store Bypass Safe (SSBS) functionality where available
+
+ Provides mitigation against `CVE-2018-19440` (Not saving x0 to x3 registers
+ can leak information from one Normal World SMC client to another)
+
+### Changed
+
+- Build System
+
+ - Warning levels are now selectable with `W=<1,2,3>`
+ - Removed unneeded include paths in PLAT_INCLUDES
+ - "Warnings as errors" (Werror) can be disabled using `E=0`
+ - Support totally quiet output with `-s` flag
+ - Support passing options to checkpatch using `CHECKPATCH_OPTS=<opts>`
+ - Invoke host compiler with `HOSTCC / HOSTCCFLAGS` instead of `CC / CFLAGS`
+ - Make device tree pre-processing similar to U-boot/Linux by:
+ - Creating separate `CPPFLAGS` for DT preprocessing so that compiler options
+ specific to it can be accommodated.
+ - Replacing `CPP` with `PP` for DT pre-processing
+
+- CPU Support
+
+ - Errata report function definition is now mandatory for CPU support files
+
+ CPU operation files must now define a `<name>_errata_report` function to
+ print errata status. This is no longer a weak reference.
+
+- Documentation
+
+ - Migrated some content from GitHub wiki to `docs/` directory
+ - Security advisories now have CVE links
+ - Updated copyright guidelines
+
+- Drivers
+
+ - console: The `MULTI_CONSOLE_API` framework has been rewritten in C
+
+ - console: Ported multi-console driver to AArch32
+
+ - gic: Remove 'lowest priority' constants
+
+ Removed `GIC_LOWEST_SEC_PRIORITY` and `GIC_LOWEST_NS_PRIORITY`. Platforms
+ should define these if required, or instead determine the correct priority
+ values at runtime.
+
+ - delay_timer: Check that the Generic Timer extension is present
+
+ - mmc: Increase command reply timeout to 10 milliseconds
+
+ - mmc: Poll eMMC device status to ensure `EXT_CSD` command completion
+
+ - mmc: Correctly check return code from `mmc_fill_device_info`
+
+- External Libraries
+
+ - libfdt: Upgraded from 1.4.2 to 1.4.6-9
+
+ >
+
+ - mbed TLS: Upgraded from 2.12 to 2.16
+
+ >
+
+ This change incorporates fixes for security issues that should be reviewed to
+ determine if they are relevant for software implementations using Trusted
+ Firmware-A. See the [mbed TLS releases] page for details on changes from the
+ 2.12 to the 2.16 release.
+
+- Library Code
+
+ - compiler-rt: Updated `lshrdi3.c` and `int_lib.h` with changes from LLVM
+ master branch (r345645)
+ - cpu: Updated macro that checks need for `CVE-2017-5715` mitigation
+ - libc: Made setjmp and longjmp C standard compliant
+ - libc: Allowed overriding the default libc (use `OVERRIDE_LIBC`)
+ - libc: Moved setjmp and longjmp to the `libc/` directory
+
+- Platforms
+
+ - Removed Mbed TLS dependency from plat_bl_common.c
+
+ - arm: Removed unused `ARM_MAP_BL_ROMLIB` macro
+
+ - arm: Removed `ARM_BOARD_OPTIMISE_MEM` feature and build flag
+
+ - arm: Moved several components into `drivers/` directory
+
+ This affects the SDS, SCP, SCPI, MHU and SCMI components
+
+ - arm/juno: Increased maximum BL2 image size to `0xF000`
+
+ This change was required to accommodate a larger `libfdt` library
+
+- SCMI
+
+ - Optimized bakery locks when hardware-assisted coherency is enabled using the
+ `HW_ASSISTED_COHERENCY` build flag
+
+- SDEI
+
+ - Added support for unconditionally resuming secure world execution after {{
+ SDEI }} event processing completes
+
+ {{ SDEI }} interrupts, although targeting EL3, occur on behalf of the
+ non-secure world, and may have higher priority than secure world interrupts.
+ Therefore they might preempt secure execution and yield execution to the
+ non-secure {{ SDEI }} handler. Upon completion of {{ SDEI }} event handling,
+ resume secure execution if it was preempted.
+
+- Translation Tables (XLAT)
+
+ - Dynamically detect need for `Common not Private (TTBRn_ELx.CnP)` bit
+
+ Properly handle the case where `ARMv8.2-TTCNP` is implemented in a CPU that
+ does not implement all mandatory v8.2 features (and so must claim to
+ implement a lower architecture version).
+
+### Resolved Issues
+
+- Architecture
+ - Incorrect check for SSBS feature detection
+ - Unintentional register clobber in AArch32 reset_handler function
+- Build System
+ - Dependency issue during DTB image build
+ - Incorrect variable expansion in Arm platform makefiles
+ - Building on Windows with verbose mode (`V=1`) enabled is broken
+ - AArch32 compilation flags is missing `$(march32-directive)`
+- BL-Specific Issues
+ - bl2: `uintptr_t is not defined` error when `BL2_IN_XIP_MEM` is defined
+ - bl2: Missing prototype warning in `bl2_arch_setup`
+ - bl31: Omission of Global Offset Table (GOT) section
+- Code Quality Issues
+ - Multiple MISRA compliance issues
+ - Potential NULL pointer dereference (Coverity-detected)
+- Drivers
+ - mmc: Local declaration of `scr` variable causes a cache issue when
+ invalidating after the read DMA transfer completes
+ - mmc: `ACMD41` does not send voltage information during initialization,
+ resulting in the command being treated as a query. This prevents the command
+ from initializing the controller.
+ - mmc: When checking device state using `mmc_device_state()` there are no
+ retries attempted in the event of an error
+ - ccn: Incorrect Region ID calculation for RN-I nodes
+ - console: `Fix MULTI_CONSOLE_API` when used as a crash console
+ - partition: Improper NULL checking in gpt.c
+ - partition: Compilation failure in `VERBOSE` mode (`V=1`)
+- Library Code
+ - common: Incorrect check for Address Authentication support
+
+ - xlat: Fix XLAT_V1 / XLAT_V2 incompatibility
+
+ The file `arm_xlat_tables.h` has been renamed to `xlat_tables_compat.h` and
+ has been moved to a common folder. This header can be used to guarantee
+ compatibility, as it includes the correct header based on
+ `XLAT_TABLES_LIB_V2`.
+
+ - xlat: armclang unused-function warning on `xlat_clean_dcache_range`
+
+ - xlat: Invalid `mm_cursor` checks in `mmap_add` and `mmap_add_ctx`
+
+ - sdei: Missing `context.h` header
+- Platforms
+ - common: Missing prototype warning for `plat_log_get_prefix`
+
+ - arm: Insufficient maximum BL33 image size
+
+ - arm: Potential memory corruption during BL2-BL31 transition
+
+ On Arm platforms, the BL2 memory can be overlaid by BL31/BL32. The memory
+ descriptors describing the list of executable images are created in BL2 R/W
+ memory, which could be possibly corrupted later on by BL31/BL32 due to
+ overlay. This patch creates a reserved location in SRAM for these
+ descriptors and are copied over by BL2 before handing over to next BL image.
+
+ - juno: Invalid behaviour when `CSS_USE_SCMI_SDS_DRIVER` is not set
+
+ In `juno_pm.c` the `css_scmi_override_pm_ops` function was used regardless
+ of whether the build flag was set. The original behaviour has been restored
+ in the case where the build flag is not set.
+- Tools
+ - fiptool: Incorrect UUID parsing of blob parameters
+ - doimage: Incorrect object rules in Makefile
+
+### Deprecations
+
+- Common Code
+ - `plat_crash_console_init` function
+ - `plat_crash_console_putc` function
+ - `plat_crash_console_flush` function
+ - `finish_console_register` macro
+- AArch64-specific Code
+ - helpers: `get_afflvl_shift`
+ - helpers: `mpidr_mask_lower_afflvls`
+ - helpers: `eret`
+- Secure Partition Manager (SPM)
+ - Boot-info structure
+
+### Known Issues
+
+- Build System Issues
+ - dtb: DTB creation not supported when building on a Windows host.
+
+ This step in the build process is skipped when running on a Windows host. A
+ known issue from the 1.6 release.
+- Platform Issues
+ - arm/juno: System suspend from Linux does not function as documented in the
+ user guide
+
+ Following the instructions provided in the user guide document does not
+ result in the platform entering system suspend state as expected. A message
+ relating to the hdlcd driver failing to suspend will be emitted on the Linux
+ terminal.
+
+ - arm/juno: The firmware update use-cases do not work with motherboard
+ firmware version \< v1.5.0 (the reset reason is not preserved). The Linaro
+ 18.04 release has MB v1.4.9. The MB v1.5.0 is available in Linaro 18.10
+ release.
+
+ - mediatek/mt6795: This platform does not build in this release
+
+## 2.0 (2018-10-02)
+
+### New Features
+
+- Removal of a number of deprecated APIs
+
+ - A new Platform Compatibility Policy document has been created which
+ references a wiki page that maintains a listing of deprecated interfaces and
+ the release after which they will be removed.
+ - All deprecated interfaces except the MULTI_CONSOLE_API have been removed
+ from the code base.
+ - Various Arm and partner platforms have been updated to remove the use of
+ removed APIs in this release.
+ - This release is otherwise unchanged from 1.6 release
+
+### Issues resolved since last release
+
+- No issues known at 1.6 release resolved in 2.0 release
+
+### Known Issues
+
+- DTB creation not supported when building on a Windows host. This step in the
+ build process is skipped when running on a Windows host. Known issue from 1.6
+ version.
+- As a result of removal of deprecated interfaces the Nvidia Tegra, Marvell
+ Armada 8K and MediaTek MT6795 platforms do not build in this release. Also
+ MediaTek MT8173, NXP QorIQ LS1043A, NXP i.MX8QX, NXP i.MX8QMa, Rockchip
+ RK3328, Rockchip RK3368 and Rockchip RK3399 platforms have not been confirmed
+ to be working after the removal of the deprecated interfaces although they do
+ build.
+
+## 1.6 (2018-09-21)
+
+### New Features
+
+- Addressing Speculation Security Vulnerabilities
+
+ - Implement static workaround for CVE-2018-3639 for AArch32 and AArch64
+ - Add support for dynamic mitigation for CVE-2018-3639
+ - Implement dynamic mitigation for CVE-2018-3639 on Cortex-A76
+ - Ensure {{ SDEI }} handler executes with CVE-2018-3639 mitigation enabled
+
+- Introduce RAS handling on AArch64
+
+ - Some RAS extensions are mandatory for Armv8.2 CPUs, with others mandatory
+ for Armv8.4 CPUs however, all extensions are also optional extensions to the
+ base Armv8.0 architecture.
+ - The Armv8 RAS Extensions introduced Standard Error Records which are a set
+ of standard registers to configure RAS node policy and allow RAS Nodes to
+ record and expose error information for error handling agents.
+ - Capabilities are provided to support RAS Node enumeration and iteration
+ along with individual interrupt registrations and fault injections support.
+ - Introduce handlers for Uncontainable errors, Double Faults and EL3 External
+ Aborts
+
+- Enable Memory Partitioning And Monitoring (MPAM) for lower EL's
+
+ - Memory Partitioning And Monitoring is an Armv8.4 feature that enables
+ various memory system components and resources to define partitions.
+ Software running at various ELs can then assign themselves to the desired
+ partition to control their performance aspects.
+ - When ENABLE_MPAM_FOR_LOWER_ELS is set to 1, EL3 allows lower ELs to access
+ their own MPAM registers without trapping to EL3. This patch however,
+ doesn't make use of partitioning in EL3; platform initialisation code should
+ configure and use partitions in EL3 if required.
+
+- Introduce ROM Lib Feature
+
+ - Support combining several libraries into a self-called "romlib" image, that
+ may be shared across images to reduce memory footprint. The romlib image is
+ stored in ROM but is accessed through a jump-table that may be stored in
+ read-write memory, allowing for the library code to be patched.
+
+- Introduce Backtrace Feature
+
+ - This function displays the backtrace, the current EL and security state to
+ allow a post-processing tool to choose the right binary to interpret the
+ dump.
+ - Print backtrace in assert() and panic() to the console.
+
+- Code hygiene changes and alignment with MISRA C-2012 guideline with fixes
+ addressing issues complying to the following rules:
+
+ - MISRA rules 4.9, 5.1, 5.3, 5.7, 8.2-8.5, 8.8, 8.13, 9.3, 10.1, 10.3-10.4,
+ 10.8, 11.3, 11.6, 12.1, 14.4, 15.7, 16.1-16.7, 17.7-17.8, 20.7, 20.10,
+ 20.12, 21.1, 21.15, 22.7
+ - Clean up the usage of void pointers to access symbols
+ - Increase usage of static qualifier to locally used functions and data
+ - Migrated to use of u_register_t for register read/write to better match
+ AArch32 and AArch64 type sizes
+ - Use int-ll64 for both AArch32 and AArch64 to assist in consistent format
+ strings between architectures
+ - Clean up TF-A libc by removing non arm copyrighted implementations and
+ replacing them with modified FreeBSD and SCC implementations
+
+- Various changes to support Clang linker and assembler
+
+ - The clang assembler/preprocessor is used when Clang is selected. However,
+ the clang linker is not used because it is unable to link TF-A objects due
+ to immaturity of clang linker functionality at this time.
+
+- Refactor support APIs into Libraries
+
+ - Evolve libfdt, mbed TLS library and standard C library sources as proper
+ libraries that TF-A may be linked against.
+
+- CPU Enhancements
+
+ - Add CPU support for Cortex-Ares and Cortex-A76
+ - Add AMU support for Cortex-Ares
+ - Add initial CPU support for Cortex-Deimos
+ - Add initial CPU support for Cortex-Helios
+ - Implement dynamic mitigation for CVE-2018-3639 on Cortex-A76
+ - Implement Cortex-Ares erratum 1043202 workaround
+ - Implement DSU erratum 936184 workaround
+ - Check presence of fix for errata 843419 in Cortex-A53
+ - Check presence of fix for errata 835769 in Cortex-A53
+
+- Translation Tables Enhancements
+
+ - The xlat v2 library has been refactored in order to be reused by different
+ TF components at different EL's including the addition of EL2. Some
+ refactoring to make the code more generic and less specific to TF, in order
+ to reuse the library outside of this project.
+
+- SPM Enhancements
+
+ - General cleanups and refactoring to pave the way to multiple partitions
+ support
+
+- SDEI Enhancements
+
+ - Allow platforms to define explicit events
+ - Determine client EL from NS context's SCR_EL3
+ - Make dispatches synchronous
+ - Introduce jump primitives for BL31
+ - Mask events after CPU wakeup in {{ SDEI }} dispatcher to conform to the
+ specification
+
+- Misc TF-A Core Common Code Enhancements
+
+ - Add support for eXecute In Place (XIP) memory in BL2
+ - Add support for the SMC Calling Convention 2.0
+ - Introduce External Abort handling on AArch64 External Abort routed to EL3
+ was reported as an unhandled exception and caused a panic. This change
+ enables Trusted Firmware-A to handle External Aborts routed to EL3.
+ - Save value of ACTLR_EL1 implementation-defined register in the CPU context
+ structure rather than forcing it to 0.
+ - Introduce ARM_LINUX_KERNEL_AS_BL33 build option, which allows BL31 to
+ directly jump to a Linux kernel. This makes for a quicker and simpler boot
+ flow, which might be useful in some test environments.
+ - Add dynamic configurations for BL31, BL32 and BL33 enabling support for
+ Chain of Trust (COT).
+ - Make TF UUID RFC 4122 compliant
+
+- New Platform Support
+
+ - Arm SGI-575
+ - Arm SGM-775
+ - Allwinner sun50i_64
+ - Allwinner sun50i_h6
+ - NXP QorIQ LS1043A
+ - NXP i.MX8QX
+ - NXP i.MX8QM
+ - NXP i.MX7Solo WaRP7
+ - TI K3
+ - Socionext Synquacer SC2A11
+ - Marvell Armada 8K
+ - STMicroelectronics STM32MP1
+
+- Misc Generic Platform Common Code Enhancements
+
+ - Add MMC framework that supports both eMMC and SD card devices
+
+- Misc Arm Platform Common Code Enhancements
+
+ - Demonstrate PSCI MEM_PROTECT from el3_runtime
+ - Provide RAS support
+ - Migrate AArch64 port to the multi console driver. The old API is deprecated
+ and will eventually be removed.
+ - Move BL31 below BL2 to enable BL2 overlay resulting in changes in the layout
+ of BL images in memory to enable more efficient use of available space.
+ - Add cpp build processing for dtb that allows processing device tree with
+ external includes.
+ - Extend FIP io driver to support multiple FIP devices
+ - Add support for SCMI AP core configuration protocol v1.0
+ - Use SCMI AP core protocol to set the warm boot entrypoint
+ - Add support to Mbed TLS drivers for shared heap among different BL images to
+ help optimise memory usage
+ - Enable non-secure access to UART1 through a build option to support a serial
+ debug port for debugger connection
+
+- Enhancements for Arm Juno Platform
+
+ - Add support for TrustZone Media Protection 1 (TZMP1)
+
+- Enhancements for Arm FVP Platform
+
+ - Dynamic_config: remove the FVP dtb files
+ - Set DYNAMIC_WORKAROUND_CVE_2018_3639=1 on FVP by default
+ - Set the ability to dynamically disable Trusted Boot Board authentication to
+ be off by default with DYN_DISABLE_AUTH
+ - Add librom enhancement support in FVP
+ - Support shared Mbed TLS heap between BL1 and BL2 that allow a reduction in
+ BL2 size for FVP
+
+- Enhancements for Arm SGI/SGM Platform
+
+ - Enable ARM_PLAT_MT flag for SGI-575
+ - Add dts files to enable support for dynamic config
+ - Add RAS support
+ - Support shared Mbed TLS heap for SGI and SGM between BL1 and BL2
+
+- Enhancements for Non Arm Platforms
+
+ - Raspberry Pi Platform
+ - Hikey Platforms
+ - Xilinx Platforms
+ - QEMU Platform
+ - Rockchip rk3399 Platform
+ - TI Platforms
+ - Socionext Platforms
+ - Allwinner Platforms
+ - NXP Platforms
+ - NVIDIA Tegra Platform
+ - Marvell Platforms
+ - STMicroelectronics STM32MP1 Platform
+
+### Issues resolved since last release
+
+- No issues known at 1.5 release resolved in 1.6 release
+
+### Known Issues
+
+- DTB creation not supported when building on a Windows host. This step in the
+ build process is skipped when running on a Windows host. Known issue from 1.5
+ version.
+
+## 1.5 (2018-03-20)
+
+### New features
+
+- Added new firmware support to enable RAS (Reliability, Availability, and
+ Serviceability) functionality.
+
+ - Secure Partition Manager (SPM): A Secure Partition is a software execution
+ environment instantiated in S-EL0 that can be used to implement simple
+ management and security services. The SPM is the firmware component that is
+ responsible for managing a Secure Partition.
+
+ - SDEI dispatcher: Support for interrupt-based {{ SDEI }} events and all
+ interfaces as defined by the {{ SDEI }} specification v1.0, see
+ [SDEI Specification]
+
+ - Exception Handling Framework (EHF): Framework that allows dispatching of EL3
+ interrupts to their registered handlers which are registered based on their
+ priorities. Facilitates firmware-first error handling policy where
+ asynchronous exceptions may be routed to EL3.
+
+ Integrated the TSPD with EHF.
+
+- Updated PSCI support:
+
+ - Implemented PSCI v1.1 optional features `MEM_PROTECT` and `SYSTEM_RESET2`.
+ The supported PSCI version was updated to v1.1.
+
+ - Improved PSCI STAT timestamp collection, including moving accounting for
+ retention states to be inside the locks and fixing handling of wrap-around
+ when calculating residency in AArch32 execution state.
+
+ - Added optional handler for early suspend that executes when suspending to a
+ power-down state and with data caches enabled.
+
+ This may provide a performance improvement on platforms where it is safe to
+ perform some or all of the platform actions from `pwr_domain_suspend` with
+ the data caches enabled.
+
+- Enabled build option, BL2_AT_EL3, for BL2 to allow execution at EL3 without
+ any dependency on TF BL1.
+
+ This allows platforms which already have a non-TF Boot ROM to directly load
+ and execute BL2 and subsequent BL stages without need for BL1. This was not
+ previously possible because BL2 executes at S-EL1 and cannot jump straight to
+ EL3.
+
+- Implemented support for SMCCC v1.1, including `SMCCC_VERSION` and
+ `SMCCC_ARCH_FEATURES`.
+
+ Additionally, added support for `SMCCC_VERSION` in PSCI features to enable
+ discovery of the SMCCC version via PSCI feature call.
+
+- Added Dynamic Configuration framework which enables each of the boot loader
+ stages to be dynamically configured at runtime if required by the platform.
+ The boot loader stage may optionally specify a firmware configuration file
+ and/or hardware configuration file that can then be shared with the next boot
+ loader stage.
+
+ Introduced a new BL handover interface that essentially allows passing of 4
+ arguments between the different BL stages.
+
+ Updated cert_create and fip_tool to support the dynamic configuration files.
+ The COT also updated to support these new files.
+
+- Code hygiene changes and alignment with MISRA guideline:
+
+ - Fix use of undefined macros.
+ - Achieved compliance with Mandatory MISRA coding rules.
+ - Achieved compliance for following Required MISRA rules for the default build
+ configurations on FVP and Juno platforms : 7.3, 8.3, 8.4, 8.5 and 8.8.
+
+- Added support for Armv8.2-A architectural features:
+
+ - Updated translation table set-up to set the CnP (Common not Private) bit for
+ secure page tables so that multiple PEs in the same Inner Shareable domain
+ can use the same translation table entries for a given stage of translation
+ in a particular translation regime.
+ - Extended the supported values of ID_AA64MMFR0_EL1.PARange to include the
+ 52-bit Physical Address range.
+ - Added support for the Scalable Vector Extension to allow Normal world
+ software to access SVE functionality but disable access to SVE, SIMD and
+ floating point functionality from the Secure world in order to prevent
+ corruption of the Z-registers.
+
+- Added support for Armv8.4-A architectural feature Activity Monitor Unit (AMU)
+
+ extensions.
+
+ In addition to the v8.4 architectural extension, AMU support on Cortex-A75 was
+ implemented.
+
+- Enhanced OP-TEE support to enable use of pageable OP-TEE image. The Arm
+ standard platforms are updated to load up to 3 images for OP-TEE; header,
+ pager image and paged image.
+
+ The chain of trust is extended to support the additional images.
+
+- Enhancements to the translation table library:
+
+ - Introduced APIs to get and set the memory attributes of a region.
+ - Added support to manage both privilege levels in translation regimes that
+ describe translations for 2 Exception levels, specifically the EL1&0
+ translation regime, and extended the memory map region attributes to include
+ specifying Non-privileged access.
+ - Added support to specify the granularity of the mappings of each region, for
+ instance a 2MB region can be specified to be mapped with 4KB page tables
+ instead of a 2MB block.
+ - Disabled the higher VA range to avoid unpredictable behaviour if there is an
+ attempt to access addresses in the higher VA range.
+ - Added helpers for Device and Normal memory MAIR encodings that align with
+ the Arm Architecture Reference Manual for Armv8-A (Arm DDI0487B.b).
+ - Code hygiene including fixing type length and signedness of constants,
+ refactoring of function to enable the MMU, removing all instances where the
+ virtual address space is hardcoded and added comments that document
+ alignment needed between memory attributes and attributes specified in
+ TCR_ELx.
+
+- Updated GIC support:
+
+ - Introduce new APIs for GICv2 and GICv3 that provide the capability to
+ specify interrupt properties rather than list of interrupt numbers alone.
+ The Arm platforms and other upstream platforms are migrated to use interrupt
+ properties.
+
+ - Added helpers to save / restore the GICv3 context, specifically the
+ Distributor and Redistributor contexts and architectural parts of the ITS
+ power management. The Distributor and Redistributor helpers also support the
+ implementation-defined part of GIC-500 and GIC-600.
+
+ Updated the Arm FVP platform to save / restore the GICv3 context on system
+ suspend / resume as an example of how to use the helpers.
+
+ Introduced a new TZC secured DDR carve-out for use by Arm platforms for
+ storing EL3 runtime data such as the GICv3 register context.
+
+- Added support for Armv7-A architecture via build option ARM_ARCH_MAJOR=7. This
+ includes following features:
+
+ - Updates GICv2 driver to manage GICv1 with security extensions.
+ - Software implementation for 32bit division.
+ - Enabled use of generic timer for platforms that do not set
+ ARM_CORTEX_Ax=yes.
+ - Support for Armv7-A Virtualization extensions \[DDI0406C_C\].
+ - Support for both Armv7-A platforms that only have 32-bit addressing and
+ Armv7-A platforms that support large page addressing.
+ - Included support for following Armv7 CPUs: Cortex-A12, Cortex-A17,
+ Cortex-A7, Cortex-A5, Cortex-A9, Cortex-A15.
+ - Added support in QEMU for Armv7-A/Cortex-A15.
+
+- Enhancements to Firmware Update feature:
+
+ - Updated the FWU documentation to describe the additional images needed for
+ Firmware update, and how they are used for both the Juno platform and the
+ Arm FVP platforms.
+
+- Enhancements to Trusted Board Boot feature:
+
+ - Added support to cert_create tool for RSA PKCS1# v1.5 and SHA384, SHA512 and
+ SHA256.
+ - For Arm platforms added support to use ECDSA keys.
+ - Enhanced the mbed TLS wrapper layer to include support for both RSA and
+ ECDSA to enable runtime selection between RSA and ECDSA keys.
+
+- Added support for secure interrupt handling in AArch32 sp_min, hardcoded to
+ only handle FIQs.
+
+- Added support to allow a platform to load images from multiple boot sources,
+ for example from a second flash drive.
+
+- Added a logging framework that allows platforms to reduce the logging level at
+ runtime and additionally the prefix string can be defined by the platform.
+
+- Further improvements to register initialisation:
+
+ - Control register PMCR_EL0 / PMCR is set to prohibit cycle counting in the
+ secure world. This register is added to the list of registers that are saved
+ and restored during world switch.
+ - When EL3 is running in AArch32 execution state, the Non-secure version of
+ SCTLR is explicitly initialised during the warmboot flow rather than relying
+ on the hardware to set the correct reset values.
+
+- Enhanced support for Arm platforms:
+
+ - Introduced driver for Shared-Data-Structure (SDS) framework which is used
+ for communication between SCP and the AP CPU, replacing Boot-Over_MHU (BOM)
+ protocol.
+
+ The Juno platform is migrated to use SDS with the SCMI support added in v1.3
+ and is set as default.
+
+ The driver can be found in the plat/arm/css/drivers folder.
+
+ - Improved memory usage by only mapping TSP memory region when the TSPD has
+ been included in the build. This reduces the memory footprint and avoids
+ unnecessary memory being mapped.
+
+ - Updated support for multi-threading CPUs for FVP platforms - always check
+ the MT field in MPDIR and access the bit fields accordingly.
+
+ - Support building for platforms that model DynamIQ configuration by
+ implementing all CPUs in a single cluster.
+
+ - Improved nor flash driver, for instance clearing status registers before
+ sending commands. Driver can be found plat/arm/board/common folder.
+
+- Enhancements to QEMU platform:
+
+ - Added support for TBB.
+ - Added support for using OP-TEE pageable image.
+ - Added support for LOAD_IMAGE_V2.
+ - Migrated to use translation table library v2 by default.
+ - Added support for SEPARATE_CODE_AND_RODATA.
+
+- Applied workarounds CVE-2017-5715 on Arm Cortex-A57, -A72, -A73 and -A75, and
+ for Armv7-A CPUs Cortex-A9, -A15 and -A17.
+
+- Applied errata workaround for Arm Cortex-A57: 859972.
+
+- Applied errata workaround for Arm Cortex-A72: 859971.
+
+- Added support for Poplar 96Board platform.
+
+- Added support for Raspberry Pi 3 platform.
+
+- Added Call Frame Information (CFI) assembler directives to the vector entries
+ which enables debuggers to display the backtrace of functions that triggered a
+ synchronous abort.
+
+- Added ability to build dtb.
+
+- Added support for pre-tool (cert_create and fiptool) image processing enabling
+ compression of the image files before processing by cert_create and fiptool.
+
+ This can reduce fip size and may also speed up loading of images. The image
+ verification will also get faster because certificates are generated based on
+ compressed images.
+
+ Imported zlib 1.2.11 to implement gunzip() for data compression.
+
+- Enhancements to fiptool:
+
+ - Enabled the fiptool to be built using Visual Studio.
+ - Added padding bytes at the end of the last image in the fip to be facilitate
+ transfer by DMA.
+
+### Issues resolved since last release
+
+- TF-A can be built with optimisations disabled (-O0).
+- Memory layout updated to enable Trusted Board Boot on Juno platform when
+ running TF-A in AArch32 execution mode (resolving [tf-issue#501]).
+
+### Known Issues
+
+- DTB creation not supported when building on a Windows host. This step in the
+ build process is skipped when running on a Windows host.
+
+## 1.4 (2017-07-07)
+
+### New features
+
+- Enabled support for platforms with hardware assisted coherency.
+
+ A new build option HW_ASSISTED_COHERENCY allows platforms to take advantage of
+ the following optimisations:
+
+ - Skip performing cache maintenance during power-up and power-down.
+ - Use spin-locks instead of bakery locks.
+ - Enable data caches early on warm-booted CPUs.
+
+- Added support for Cortex-A75 and Cortex-A55 processors.
+
+ Both Cortex-A75 and Cortex-A55 processors use the Arm DynamIQ Shared Unit
+ (DSU). The power-down and power-up sequences are therefore mostly managed in
+ hardware, reducing complexity of the software operations.
+
+- Introduced Arm GIC-600 driver.
+
+ Arm GIC-600 IP complies with Arm GICv3 architecture. For FVP platforms, the
+ GIC-600 driver is chosen when FVP_USE_GIC_DRIVER is set to FVP_GIC600.
+
+- Updated GICv3 support:
+
+ - Introduced power management APIs for GICv3 Redistributor. These APIs allow
+ platforms to power down the Redistributor during CPU power on/off. Requires
+ the GICv3 implementations to have power management operations.
+
+ Implemented the power management APIs for FVP.
+
+ - GIC driver data is flushed by the primary CPU so that secondary CPU do not
+ read stale GIC data.
+
+- Added support for Arm System Control and Management Interface v1.0 (SCMI).
+
+ The SCMI driver implements the power domain management and system power
+ management protocol of the SCMI specification (Arm DEN 0056ASCMI) for
+ communicating with any compliant power controller.
+
+ Support is added for the Juno platform. The driver can be found in the
+ plat/arm/css/drivers folder.
+
+- Added support to enable pre-integration of TBB with the Arm TrustZone
+ CryptoCell product, to take advantage of its hardware Root of Trust and crypto
+ acceleration services.
+
+- Enabled Statistical Profiling Extensions for lower ELs.
+
+ The firmware support is limited to the use of SPE in the Non-secure state and
+ accesses to the SPE specific registers from S-EL1 will trap to EL3.
+
+ The SPE are architecturally specified for AArch64 only.
+
+- Code hygiene changes aligned with MISRA guidelines:
+
+ - Fixed signed / unsigned comparison warnings in the translation table
+ library.
+ - Added U(\_x) macro and together with the existing ULL(\_x) macro fixed some
+ of the signed-ness defects flagged by the MISRA scanner.
+
+- Enhancements to Firmware Update feature:
+
+ - The FWU logic now checks for overlapping images to prevent execution of
+ unauthenticated arbitrary code.
+ - Introduced new FWU_SMC_IMAGE_RESET SMC that changes the image loading state
+ machine to go from COPYING, COPIED or AUTHENTICATED states to RESET state.
+ Previously, this was only possible when the authentication of an image
+ failed or when the execution of the image finished.
+ - Fixed integer overflow which addressed TFV-1: Malformed Firmware Update SMC
+ can result in copy of unexpectedly large data into secure memory.
+
+- Introduced support for Arm Compiler 6 and LLVM (clang).
+
+ TF-A can now also be built with the Arm Compiler 6 or the clang compilers. The
+ assembler and linker must be provided by the GNU toolchain.
+
+ Tested with Arm CC 6.7 and clang 3.9.x and 4.0.x.
+
+- Memory footprint improvements:
+
+ - Introduced `tf_snprintf`, a reduced version of `snprintf` which has support
+ for a limited set of formats.
+
+ The mbedtls driver is updated to optionally use `tf_snprintf` instead of
+ `snprintf`.
+
+ - The `assert()` is updated to no longer print the function name, and
+ additional logging options are supported via an optional platform define
+ `PLAT_LOG_LEVEL_ASSERT`, which controls how verbose the assert output is.
+
+- Enhancements to TF-A support when running in AArch32 execution state:
+
+ - Support booting SP_MIN and BL33 in AArch32 execution mode on Juno. Due to
+ hardware limitations, BL1 and BL2 boot in AArch64 state and there is
+ additional trampoline code to warm reset into SP_MIN in AArch32 execution
+ state.
+ - Added support for Arm Cortex-A53/57/72 MPCore processors including the
+ errata workarounds that are already implemented for AArch64 execution state.
+ - For FVP platforms, added AArch32 Trusted Board Boot support, including the
+ Firmware Update feature.
+
+- Introduced Arm SiP service for use by Arm standard platforms.
+
+ - Added new Arm SiP Service SMCs to enable the Non-secure world to read PMF
+ timestamps.
+
+ Added PMF instrumentation points in TF-A in order to quantify the overall
+ time spent in the PSCI software implementation.
+
+ - Added new Arm SiP service SMC to switch execution state.
+
+ This allows the lower exception level to change its execution state from
+ AArch64 to AArch32, or vice verse, via a request to EL3.
+
+- Migrated to use SPDX\[0\] license identifiers to make software license
+ auditing simpler.
+
+ \:::\{note} Files that have been imported by FreeBSD have not been modified.
+ \:::
+
+ \[0\]: <https://spdx.org/>
+
+- Enhancements to the translation table library:
+
+ - Added version 2 of translation table library that allows different
+ translation tables to be modified by using different 'contexts'. Version 1
+ of the translation table library only allows the current EL's translation
+ tables to be modified.
+
+ Version 2 of the translation table also added support for dynamic regions;
+ regions that can be added and removed dynamically whilst the MMU is enabled.
+ Static regions can only be added or removed before the MMU is enabled.
+
+ The dynamic mapping functionality is enabled or disabled when compiling by
+ setting the build option PLAT_XLAT_TABLES_DYNAMIC to 1 or 0. This can be
+ done per-image.
+
+ - Added support for translation regimes with two virtual address spaces such
+ as the one shared by EL1 and EL0.
+
+ The library does not support initializing translation tables for EL0
+ software.
+
+ - Added support to mark the translation tables as non-cacheable using an
+ additional build option `XLAT_TABLE_NC`.
+
+- Added support for GCC stack protection. A new build option
+ ENABLE_STACK_PROTECTOR was introduced that enables compilation of all BL
+ images with one of the GCC -fstack-protector-\* options.
+
+ A new platform function plat_get_stack_protector_canary() was introduced that
+ returns a value used to initialize the canary for stack corruption detection.
+ For increased effectiveness of protection platforms must provide an
+ implementation that returns a random value.
+
+- Enhanced support for Arm platforms:
+
+ - Added support for multi-threading CPUs, indicated by `MT` field in MPDIR. A
+ new build flag `ARM_PLAT_MT` is added, and when enabled, the functions
+ accessing MPIDR assume that the `MT` bit is set for the platform and access
+ the bit fields accordingly.
+
+ Also, a new API `plat_arm_get_cpu_pe_count` is added when `ARM_PLAT_MT` is
+ enabled, returning the Processing Element count within the physical CPU
+ corresponding to `mpidr`.
+
+ - The Arm platforms migrated to use version 2 of the translation tables.
+
+ - Introduced a new Arm platform layer API `plat_arm_psci_override_pm_ops`
+ which allows Arm platforms to modify `plat_arm_psci_pm_ops` and therefore
+ dynamically define PSCI capability.
+
+ - The Arm platforms migrated to use IMAGE_LOAD_V2 by default.
+
+- Enhanced reporting of errata workaround status with the following policy:
+
+ - If an errata workaround is enabled:
+
+ - If it applies (i.e. the CPU is affected by the errata), an INFO message is
+ printed, confirming that the errata workaround has been applied.
+ - If it does not apply, a VERBOSE message is printed, confirming that the
+ errata workaround has been skipped.
+
+ - If an errata workaround is not enabled, but would have applied had it been,
+ a WARN message is printed, alerting that errata workaround is missing.
+
+- Added build options ARM_ARCH_MAJOR and ARM_ARM_MINOR to choose the
+ architecture version to target TF-A.
+
+- Updated the spin lock implementation to use the more efficient CAS (Compare
+ And Swap) instruction when available. This instruction was introduced in
+ Armv8.1-A.
+
+- Applied errata workaround for Arm Cortex-A53: 855873.
+
+- Applied errata workaround for Arm-Cortex-A57: 813419.
+
+- Enabled all A53 and A57 errata workarounds for Juno, both in AArch64 and
+ AArch32 execution states.
+
+- Added support for Socionext UniPhier SoC platform.
+
+- Added support for Hikey960 and Hikey platforms.
+
+- Added support for Rockchip RK3328 platform.
+
+- Added support for NVidia Tegra T186 platform.
+
+- Added support for Designware emmc driver.
+
+- Imported libfdt v1.4.2 that addresses buffer overflow in fdt_offset_ptr().
+
+- Enhanced the CPU operations framework to allow power handlers to be registered
+ on per-level basis. This enables support for future CPUs that have multiple
+ threads which might need powering down individually.
+
+- Updated register initialisation to prevent unexpected behaviour:
+
+ - Debug registers MDCR-EL3/SDCR and MDCR_EL2/HDCR are initialised to avoid
+ unexpected traps into the higher exception levels and disable secure
+ self-hosted debug. Additionally, secure privileged external debug on Juno is
+ disabled by programming the appropriate Juno SoC registers.
+ - EL2 and EL3 configurable controls are initialised to avoid unexpected traps
+ in the higher exception levels.
+ - Essential control registers are fully initialised on EL3 start-up, when
+ initialising the non-secure and secure context structures and when preparing
+ to leave EL3 for a lower EL. This gives better alignment with the Arm ARM
+ which states that software must initialise RES0 and RES1 fields with 0 / 1.
+
+- Enhanced PSCI support:
+
+ - Introduced new platform interfaces that decouple PSCI stat residency
+ calculation from PMF, enabling platforms to use alternative methods of
+ capturing timestamps.
+ - PSCI stat accounting performed for retention/standby states when requested
+ at multiple power levels.
+
+- Simplified fiptool to have a single linked list of image descriptors.
+
+- For the TSP, resolved corruption of pre-empted secure context by aborting any
+ pre-empted SMC during PSCI power management requests.
+
+### Issues resolved since last release
+
+- TF-A can be built with the latest mbed TLS version (v2.4.2). The earlier
+ version 2.3.0 cannot be used due to build warnings that the TF-A build system
+ interprets as errors.
+- TBBR, including the Firmware Update feature is now supported on FVP platforms
+ when running TF-A in AArch32 state.
+- The version of the AEMv8 Base FVP used in this release has resolved the issue
+ of the model executing a reset instead of terminating in response to a
+ shutdown request using the PSCI SYSTEM_OFF API.
+
+### Known Issues
+
+- Building TF-A with compiler optimisations disabled (-O0) fails.
+- Trusted Board Boot currently does not work on Juno when running Trusted
+ Firmware in AArch32 execution state due to error when loading the sp_min to
+ memory because of lack of free space available. See [tf-issue#501] for more
+ details.
+- The errata workaround for A53 errata 843419 is only available from binutils
+ 2.26 and is not present in GCC4.9. If this errata is applicable to the
+ platform, please use GCC compiler version of at least 5.0. See [PR#1002] for
+ more details.
+
+## 1.3 (2016-10-13)
+
+### New features
+
+- Added support for running TF-A in AArch32 execution state.
+
+ The PSCI library has been refactored to allow integration with **EL3 Runtime
+ Software**. This is software that is executing at the highest secure privilege
+ which is EL3 in AArch64 or Secure SVC/Monitor mode in AArch32. See
+ \{ref}`PSCI Library Integration guide for Armv8-A AArch32 systems`.
+
+ Included is a minimal AArch32 Secure Payload, **SP-MIN**, that illustrates the
+ usage and integration of the PSCI library with EL3 Runtime Software running in
+ AArch32 state.
+
+ Booting to the BL1/BL2 images as well as booting straight to the Secure
+ Payload is supported.
+
+- Improvements to the initialization framework for the PSCI service and Arm
+ Standard Services in general.
+
+ The PSCI service is now initialized as part of Arm Standard Service
+ initialization. This consolidates the initializations of any Arm Standard
+ Service that may be added in the future.
+
+ A new function `get_arm_std_svc_args()` is introduced to get arguments
+ corresponding to each standard service and must be implemented by the EL3
+ Runtime Software.
+
+ For PSCI, a new versioned structure `psci_lib_args_t` is introduced to
+ initialize the PSCI Library. **Note** this is a compatibility break due to the
+ change in the prototype of `psci_setup()`.
+
+- To support AArch32 builds of BL1 and BL2, implemented a new, alternative
+ firmware image loading mechanism that adds flexibility.
+
+ The current mechanism has a hard-coded set of images and execution order
+ (BL31, BL32, etc). The new mechanism is data-driven by a list of image
+ descriptors provided by the platform code.
+
+ Arm platforms have been updated to support the new loading mechanism.
+
+ The new mechanism is enabled by a build flag (`LOAD_IMAGE_V2`) which is
+ currently off by default for the AArch64 build.
+
+ **Note** `TRUSTED_BOARD_BOOT` is currently not supported when `LOAD_IMAGE_V2`
+ is enabled.
+
+- Updated requirements for making contributions to TF-A.
+
+ Commits now must have a 'Signed-off-by:' field to certify that the
+ contribution has been made under the terms of the
+ {download}`Developer Certificate of Origin <../dco.txt>`.
+
+ A signed CLA is no longer required.
+
+ The {ref}`Contributor's Guide` has been updated to reflect this change.
+
+- Introduced Performance Measurement Framework (PMF) which provides support for
+ capturing, storing, dumping and retrieving time-stamps to measure the
+ execution time of critical paths in the firmware. This relies on defining
+ fixed sample points at key places in the code.
+
+- To support the QEMU platform port, imported libfdt v1.4.1 from
+ <https://git.kernel.org/pub/scm/utils/dtc/dtc.git>
+
+- Updated PSCI support:
+
+ - Added support for PSCI NODE_HW_STATE API for Arm platforms.
+ - New optional platform hook, `pwr_domain_pwr_down_wfi()`, in `plat_psci_ops`
+ to enable platforms to perform platform-specific actions needed to enter
+ powerdown, including the 'wfi' invocation.
+ - PSCI STAT residency and count functions have been added on Arm platforms by
+ using PMF.
+
+- Enhancements to the translation table library:
+
+ - Limited memory mapping support for region overlaps to only allow regions to
+ overlap that are identity mapped or have the same virtual to physical
+ address offset, and overlap completely but must not cover the same area.
+
+ This limitation will enable future enhancements without having to support
+ complex edge cases that may not be necessary.
+
+ - The initial translation lookup level is now inferred from the virtual
+ address space size. Previously, it was hard-coded.
+
+ - Added support for mapping Normal, Inner Non-cacheable, Outer Non-cacheable
+ memory in the translation table library.
+
+ This can be useful to map a non-cacheable memory region, such as a DMA
+ buffer.
+
+ - Introduced the MT_EXECUTE/MT_EXECUTE_NEVER memory mapping attributes to
+ specify the access permissions for instruction execution of a memory region.
+
+- Enabled support to isolate code and read-only data on separate memory pages,
+ allowing independent access control to be applied to each.
+
+- Enabled SCR_EL3.SIF (Secure Instruction Fetch) bit in BL1 and BL31 common
+ architectural setup code, preventing fetching instructions from non-secure
+ memory when in secure state.
+
+- Enhancements to FIP support:
+
+ - Replaced `fip_create` with `fiptool` which provides a more consistent and
+ intuitive interface as well as additional support to remove an image from a
+ FIP file.
+ - Enabled printing the SHA256 digest with info command, allowing quick
+ verification of an image within a FIP without having to extract the image
+ and running sha256sum on it.
+ - Added support for unpacking the contents of an existing FIP file into the
+ working directory.
+ - Aligned command line options for specifying images to use same naming
+ convention as specified by TBBR and already used in cert_create tool.
+
+- Refactored the TZC-400 driver to also support memory controllers that
+ integrate TZC functionality, for example Arm CoreLink DMC-500. Also added
+ DMC-500 specific support.
+
+- Implemented generic delay timer based on the system generic counter and
+ migrated all platforms to use it.
+
+- Enhanced support for Arm platforms:
+
+ - Updated image loading support to make SCP images (SCP_BL2 and SCP_BL2U)
+ optional.
+ - Enhanced topology description support to allow multi-cluster topology
+ definitions.
+ - Added interconnect abstraction layer to help platform ports select the right
+ interconnect driver, CCI or CCN, for the platform.
+ - Added support to allow loading BL31 in the TZC-secured DRAM instead of the
+ default secure SRAM.
+ - Added support to use a System Security Control (SSC) Registers Unit enabling
+ TF-A to be compiled to support multiple Arm platforms and then select one at
+ runtime.
+ - Restricted mapping of Trusted ROM in BL1 to what is actually needed by BL1
+ rather than entire Trusted ROM region.
+ - Flash is now mapped as execute-never by default. This increases security by
+ restricting the executable region to what is strictly needed.
+
+- Applied following erratum workarounds for Cortex-A57: 833471, 826977, 829520,
+ 828024 and 826974.
+
+- Added support for Mediatek MT6795 platform.
+
+- Added support for QEMU virtualization Armv8-A target.
+
+- Added support for Rockchip RK3368 and RK3399 platforms.
+
+- Added support for Xilinx Zynq UltraScale+ MPSoC platform.
+
+- Added support for Arm Cortex-A73 MPCore Processor.
+
+- Added support for Arm Cortex-A72 processor.
+
+- Added support for Arm Cortex-A35 processor.
+
+- Added support for Arm Cortex-A32 MPCore Processor.
+
+- Enabled preloaded BL33 alternative boot flow, in which BL2 does not load BL33
+ from non-volatile storage and BL31 hands execution over to a preloaded BL33.
+ The User Guide has been updated with an example of how to use this option with
+ a bootwrapped kernel.
+
+- Added support to build TF-A on a Windows-based host machine.
+
+- Updated Trusted Board Boot prototype implementation:
+
+ - Enabled the ability for a production ROM with TBBR enabled to boot test
+ software before a real ROTPK is deployed (e.g. manufacturing mode). Added
+ support to use ROTPK in certificate without verifying against the platform
+ value when `ROTPK_NOT_DEPLOYED` bit is set.
+ - Added support for non-volatile counter authentication to the Authentication
+ Module to protect against roll-back.
+
+- Updated GICv3 support:
+
+ - Enabled processor power-down and automatic power-on using GICv3.
+ - Enabled G1S or G0 interrupts to be configured independently.
+ - Changed FVP default interrupt driver to be the GICv3-only driver. **Note**
+ the default build of TF-A will not be able to boot Linux kernel with GICv2
+ FDT blob.
+ - Enabled wake-up from CPU_SUSPEND to stand-by by temporarily re-routing
+ interrupts and then restoring after resume.
+
+### Issues resolved since last release
+
+### Known issues
+
+- The version of the AEMv8 Base FVP used in this release resets the model
+ instead of terminating its execution in response to a shutdown request using
+ the PSCI `SYSTEM_OFF` API. This issue will be fixed in a future version of the
+ model.
+- Building TF-A with compiler optimisations disabled (`-O0`) fails.
+- TF-A cannot be built with mbed TLS version v2.3.0 due to build warnings that
+ the TF-A build system interprets as errors.
+- TBBR is not currently supported when running TF-A in AArch32 state.
+
+## 1.2 (2015-12-22)
+
+### New features
+
+- The Trusted Board Boot implementation on Arm platforms now conforms to the
+ mandatory requirements of the TBBR specification.
+
+ In particular, the boot process is now guarded by a Trusted Watchdog, which
+ will reset the system in case of an authentication or loading error. On Arm
+ platforms, a secure instance of Arm SP805 is used as the Trusted Watchdog.
+
+ Also, a firmware update process has been implemented. It enables authenticated
+ firmware to update firmware images from external interfaces to SoC
+ Non-Volatile memories. This feature functions even when the current firmware
+ in the system is corrupt or missing; it therefore may be used as a recovery
+ mode.
+
+- Improvements have been made to the Certificate Generation Tool (`cert_create`)
+ as follows.
+
+ - Added support for the Firmware Update process by extending the Chain of
+ Trust definition in the tool to include the Firmware Update certificate and
+ the required extensions.
+ - Introduced a new API that allows one to specify command line options in the
+ Chain of Trust description. This makes the declaration of the tool's
+ arguments more flexible and easier to extend.
+ - The tool has been reworked to follow a data driven approach, which makes it
+ easier to maintain and extend.
+
+- Extended the FIP tool (`fip_create`) to support the new set of images involved
+ in the Firmware Update process.
+
+- Various memory footprint improvements. In particular:
+
+ - The bakery lock structure for coherent memory has been optimised.
+ - The mbed TLS SHA1 functions are not needed, as SHA256 is used to generate
+ the certificate signature. Therefore, they have been compiled out, reducing
+ the memory footprint of BL1 and BL2 by approximately 6 KB.
+ - On Arm development platforms, each BL stage now individually defines the
+ number of regions that it needs to map in the MMU.
+
+- Added the following new design documents:
+
+ - {ref}`Authentication Framework & Chain of Trust`
+ - {ref}`Firmware Update (FWU)`
+ - {ref}`CPU Reset`
+ - {ref}`PSCI Power Domain Tree Structure`
+
+- Applied the new image terminology to the code base and documentation, as
+ described in the {ref}`Image Terminology` document.
+
+- The build system has been reworked to improve readability and facilitate
+ adding future extensions.
+
+- On Arm standard platforms, BL31 uses the boot console during cold boot but
+ switches to the runtime console for any later logs at runtime. The TSP uses
+ the runtime console for all output.
+
+- Implemented a basic NOR flash driver for Arm platforms. It programs the device
+ using CFI (Common Flash Interface) standard commands.
+
+- Implemented support for booting EL3 payloads on Arm platforms, which reduces
+ the complexity of developing EL3 baremetal code by doing essential baremetal
+ initialization.
+
+- Provided separate drivers for GICv3 and GICv2. These expect the entire
+ software stack to use either GICv2 or GICv3; hybrid GIC software systems are
+ no longer supported and the legacy Arm GIC driver has been deprecated.
+
+- Added support for Juno r1 and r2. A single set of Juno TF-A binaries can run
+ on Juno r0, r1 and r2 boards. Note that this TF-A version depends on a Linaro
+ release that does *not* contain Juno r2 support.
+
+- Added support for MediaTek mt8173 platform.
+
+- Implemented a generic driver for Arm CCN IP.
+
+- Major rework of the PSCI implementation.
+
+ - Added framework to handle composite power states.
+ - Decoupled the notions of affinity instances (which describes the
+ hierarchical arrangement of cores) and of power domain topology, instead of
+ assuming a one-to-one mapping.
+ - Better alignment with version 1.0 of the PSCI specification.
+
+- Added support for the SYSTEM_SUSPEND PSCI API on Arm platforms. When invoked
+ on the last running core on a supported platform, this puts the system into a
+ low power mode with memory retention.
+
+- Unified the reset handling code as much as possible across BL stages. Also
+ introduced some build options to enable optimization of the reset path on
+ platforms that support it.
+
+- Added a simple delay timer API, as well as an SP804 timer driver, which is
+ enabled on FVP.
+
+- Added support for NVidia Tegra T210 and T132 SoCs.
+
+- Reorganised Arm platforms ports to greatly improve code shareability and
+ facilitate the reuse of some of this code by other platforms.
+
+- Added support for Arm Cortex-A72 processor in the CPU specific framework.
+
+- Provided better error handling. Platform ports can now define their own error
+ handling, for example to perform platform specific bookkeeping or post-error
+ actions.
+
+- Implemented a unified driver for Arm Cache Coherent Interconnects used for
+ both CCI-400 & CCI-500 IPs. Arm platforms ports have been migrated to this
+ common driver. The standalone CCI-400 driver has been deprecated.
+
+### Issues resolved since last release
+
+- The Trusted Board Boot implementation has been redesigned to provide greater
+ modularity and scalability. See the
+ \{ref}`Authentication Framework & Chain of Trust` document. All missing
+ mandatory features are now implemented.
+- The FVP and Juno ports may now use the hash of the ROTPK stored in the Trusted
+ Key Storage registers to verify the ROTPK. Alternatively, a development public
+ key hash embedded in the BL1 and BL2 binaries might be used instead. The
+ location of the ROTPK is chosen at build-time using the `ARM_ROTPK_LOCATION`
+ build option.
+- GICv3 is now fully supported and stable.
+
+### Known issues
+
+- The version of the AEMv8 Base FVP used in this release resets the model
+ instead of terminating its execution in response to a shutdown request using
+ the PSCI `SYSTEM_OFF` API. This issue will be fixed in a future version of the
+ model.
+- While this version has low on-chip RAM requirements, there are further RAM
+ usage enhancements that could be made.
+- The upstream documentation could be improved for structural consistency,
+ clarity and completeness. In particular, the design documentation is
+ incomplete for PSCI, the TSP(D) and the Juno platform.
+- Building TF-A with compiler optimisations disabled (`-O0`) fails.
+
+## 1.1 (2015-02-04)
+
+### New features
+
+- A prototype implementation of Trusted Board Boot has been added. Boot loader
+ images are verified by BL1 and BL2 during the cold boot path. BL1 and BL2 use
+ the PolarSSL SSL library to verify certificates and images. The OpenSSL
+ library is used to create the X.509 certificates. Support has been added to
+ `fip_create` tool to package the certificates in a FIP.
+
+- Support for calling CPU and platform specific reset handlers upon entry into
+ BL3-1 during the cold and warm boot paths has been added. This happens after
+ another Boot ROM `reset_handler()` has already run. This enables a developer
+ to perform additional actions or undo actions already performed during the
+ first call of the reset handlers e.g. apply additional errata workarounds.
+
+- Support has been added to demonstrate routing of IRQs to EL3 instead of S-EL1
+ when execution is in secure world.
+
+- The PSCI implementation now conforms to version 1.0 of the PSCI specification.
+ All the mandatory APIs and selected optional APIs are supported. In
+ particular, support for the `PSCI_FEATURES` API has been added. A capability
+ variable is constructed during initialization by examining the `plat_pm_ops`
+ and `spd_pm_ops` exported by the platform and the Secure Payload Dispatcher.
+ This is used by the PSCI FEATURES function to determine which PSCI APIs are
+ supported by the platform.
+
+- Improvements have been made to the PSCI code as follows.
+
+ - The code has been refactored to remove redundant parameters from internal
+ functions.
+ - Changes have been made to the code for PSCI `CPU_SUSPEND`, `CPU_ON` and
+ `CPU_OFF` calls to facilitate an early return to the caller in case a
+ failure condition is detected. For example, a PSCI `CPU_SUSPEND` call
+ returns `SUCCESS` to the caller if a pending interrupt is detected early in
+ the code path.
+ - Optional platform APIs have been added to validate the `power_state` and
+ `entrypoint` parameters early in PSCI `CPU_ON` and `CPU_SUSPEND` code paths.
+ - PSCI migrate APIs have been reworked to invoke the SPD hook to determine the
+ type of Trusted OS and the CPU it is resident on (if applicable). Also,
+ during a PSCI `MIGRATE` call, the SPD hook to migrate the Trusted OS is
+ invoked.
+
+- It is now possible to build TF-A without marking at least an extra page of
+ memory as coherent. The build flag `USE_COHERENT_MEM` can be used to choose
+ between the two implementations. This has been made possible through these
+ changes.
+
+ - An implementation of Bakery locks, where the locks are not allocated in
+ coherent memory has been added.
+ - Memory which was previously marked as coherent is now kept coherent through
+ the use of software cache maintenance operations.
+
+ Approximately, 4K worth of memory is saved for each boot loader stage when
+ `USE_COHERENT_MEM=0`. Enabling this option increases the latencies associated
+ with acquire and release of locks. It also requires changes to the platform
+ ports.
+
+- It is now possible to specify the name of the FIP at build time by defining
+ the `FIP_NAME` variable.
+
+- Issues with dependencies on the 'fiptool' makefile target have been rectified.
+ The `fip_create` tool is now rebuilt whenever its source files change.
+
+- The BL3-1 runtime console is now also used as the crash console. The crash
+ console is changed to SoC UART0 (UART2) from the previous FPGA UART0 (UART0)
+ on Juno. In FVP, it is changed from UART0 to UART1.
+
+- CPU errata workarounds are applied only when the revision and part number
+ match. This behaviour has been made consistent across the debug and release
+ builds. The debug build additionally prints a warning if a mismatch is
+ detected.
+
+- It is now possible to issue cache maintenance operations by set/way for a
+ particular level of data cache. Levels 1-3 are currently supported.
+
+- The following improvements have been made to the FVP port.
+
+ - The build option `FVP_SHARED_DATA_LOCATION` which allowed relocation of
+ shared data into the Trusted DRAM has been deprecated. Shared data is now
+ always located at the base of Trusted SRAM.
+ - BL2 Translation tables have been updated to map only the region of DRAM
+ which is accessible to normal world. This is the region of the 2GB DDR-DRAM
+ memory at 0x80000000 excluding the top 16MB. The top 16MB is accessible to
+ only the secure world.
+ - BL3-2 can now reside in the top 16MB of DRAM which is accessible only to the
+ secure world. This can be done by setting the build flag
+ `FVP_TSP_RAM_LOCATION` to the value `dram`.
+
+- Separate translation tables are created for each boot loader image. The
+ `IMAGE_BLx` build options are used to do this. This allows each stage to
+ create mappings only for areas in the memory map that it needs.
+
+- A Secure Payload Dispatcher (OPTEED) for the OP-TEE Trusted OS has been added.
+ Details of using it with TF-A can be found in {ref}`OP-TEE Dispatcher`
+
+### Issues resolved since last release
+
+- The Juno port has been aligned with the FVP port as follows.
+
+ - Support for reclaiming all BL1 RW memory and BL2 memory by overlaying the
+ BL3-1/BL3-2 NOBITS sections on top of them has been added to the Juno port.
+ - The top 16MB of the 2GB DDR-DRAM memory at 0x80000000 is configured using
+ the TZC-400 controller to be accessible only to the secure world.
+ - The Arm GIC driver is used to configure the GIC-400 instead of using a GIC
+ driver private to the Juno port.
+ - PSCI `CPU_SUSPEND` calls that target a standby state are now supported.
+ - The TZC-400 driver is used to configure the controller instead of direct
+ accesses to the registers.
+
+- The Linux kernel version referred to in the user guide has DVFS and HMP
+ support enabled.
+
+- DS-5 v5.19 did not detect Version 5.8 of the Cortex-A57-A53 Base FVPs in CADI
+ server mode. This issue is not seen with DS-5 v5.20 and Version 6.2 of the
+ Cortex-A57-A53 Base FVPs.
+
+### Known issues
+
+- The Trusted Board Boot implementation is a prototype. There are issues with
+ the modularity and scalability of the design. Support for a Trusted Watchdog,
+ firmware update mechanism, recovery images and Trusted debug is absent. These
+ issues will be addressed in future releases.
+- The FVP and Juno ports do not use the hash of the ROTPK stored in the Trusted
+ Key Storage registers to verify the ROTPK in the `plat_match_rotpk()`
+ function. This prevents the correct establishment of the Chain of Trust at the
+ first step in the Trusted Board Boot process.
+- The version of the AEMv8 Base FVP used in this release resets the model
+ instead of terminating its execution in response to a shutdown request using
+ the PSCI `SYSTEM_OFF` API. This issue will be fixed in a future version of the
+ model.
+- GICv3 support is experimental. There are known issues with GICv3
+ initialization in the TF-A.
+- While this version greatly reduces the on-chip RAM requirements, there are
+ further RAM usage enhancements that could be made.
+- The firmware design documentation for the Test Secure-EL1 Payload (TSP) and
+ its dispatcher (TSPD) is incomplete. Similarly for the PSCI section.
+- The Juno-specific firmware design documentation is incomplete.
+
+## 1.0 (2014-08-28)
+
+### New features
+
+- It is now possible to map higher physical addresses using non-flat virtual to
+ physical address mappings in the MMU setup.
+
+- Wider use is now made of the per-CPU data cache in BL3-1 to store:
+
+ - Pointers to the non-secure and secure security state contexts.
+ - A pointer to the CPU-specific operations.
+ - A pointer to PSCI specific information (for example the current power
+ state).
+ - A crash reporting buffer.
+
+- The following RAM usage improvements result in a BL3-1 RAM usage reduction
+ from 96KB to 56KB (for FVP with TSPD), and a total RAM usage reduction across
+ all images from 208KB to 88KB, compared to the previous release.
+
+ - Removed the separate `early_exception` vectors from BL3-1 (2KB code size
+ saving).
+ - Removed NSRAM from the FVP memory map, allowing the removal of one (4KB)
+ translation table.
+ - Eliminated the internal `psci_suspend_context` array, saving 2KB.
+ - Correctly dimensioned the PSCI `aff_map_node` array, saving 1.5KB in the FVP
+ port.
+ - Removed calling CPU mpidr from the bakery lock API, saving 160 bytes.
+ - Removed current CPU mpidr from PSCI common code, saving 160 bytes.
+ - Inlined the mmio accessor functions, saving 360 bytes.
+ - Fully reclaimed all BL1 RW memory and BL2 memory on the FVP port by
+ overlaying the BL3-1/BL3-2 NOBITS sections on top of these at runtime.
+ - Made storing the FP register context optional, saving 0.5KB per context (8KB
+ on the FVP port, with TSPD enabled and running on 8 CPUs).
+ - Implemented a leaner `tf_printf()` function, allowing the stack to be
+ greatly reduced.
+ - Removed coherent stacks from the codebase. Stacks allocated in normal memory
+ are now used before and after the MMU is enabled. This saves 768 bytes per
+ CPU in BL3-1.
+ - Reworked the crash reporting in BL3-1 to use less stack.
+ - Optimized the EL3 register state stored in the `cpu_context` structure so
+ that registers that do not change during normal execution are re-initialized
+ each time during cold/warm boot, rather than restored from memory. This
+ saves about 1.2KB.
+ - As a result of some of the above, reduced the runtime stack size in all BL
+ images. For BL3-1, this saves 1KB per CPU.
+
+- PSCI SMC handler improvements to correctly handle calls from secure states and
+ from AArch32.
+
+- CPU contexts are now initialized from the `entry_point_info`. BL3-1 fully
+ determines the exception level to use for the non-trusted firmware (BL3-3)
+ based on the SPSR value provided by the BL2 platform code (or otherwise
+ provided to BL3-1). This allows platform code to directly run non-trusted
+ firmware payloads at either EL2 or EL1 without requiring an EL2 stub or OS
+ loader.
+
+- Code refactoring improvements:
+
+ - Refactored `fvp_config` into a common platform header.
+ - Refactored the fvp gic code to be a generic driver that no longer has an
+ explicit dependency on platform code.
+ - Refactored the CCI-400 driver to not have dependency on platform code.
+ - Simplified the IO driver so it's no longer necessary to call `io_init()` and
+ moved all the IO storage framework code to one place.
+ - Simplified the interface the the TZC-400 driver.
+ - Clarified the platform porting interface to the TSP.
+ - Reworked the TSPD setup code to support the alternate BL3-2 initialization
+ flow where BL3-1 generic code hands control to BL3-2, rather than expecting
+ the TSPD to hand control directly to BL3-2.
+ - Considerable rework to PSCI generic code to support CPU specific operations.
+
+- Improved console log output, by:
+
+ - Adding the concept of debug log levels.
+ - Rationalizing the existing debug messages and adding new ones.
+ - Printing out the version of each BL stage at runtime.
+ - Adding support for printing console output from assembler code, including
+ when a crash occurs before the C runtime is initialized.
+
+- Moved up to the latest versions of the FVPs, toolchain, EDK2, kernel, Linaro
+ file system and DS-5.
+
+- On the FVP port, made the use of the Trusted DRAM region optional at build
+ time (off by default). Normal platforms will not have such a "ready-to-use"
+ DRAM area so it is not a good example to use it.
+
+- Added support for PSCI `SYSTEM_OFF` and `SYSTEM_RESET` APIs.
+
+- Added support for CPU specific reset sequences, power down sequences and
+ register dumping during crash reporting. The CPU specific reset sequences
+ include support for errata workarounds.
+
+- Merged the Juno port into the master branch. Added support for CPU hotplug and
+ CPU idle. Updated the user guide to describe how to build and run on the Juno
+ platform.
+
+### Issues resolved since last release
+
+- Removed the concept of top/bottom image loading. The image loader now
+ automatically detects the position of the image inside the current memory
+ layout and updates the layout to minimize fragmentation. This resolves the
+ image loader limitations of previously releases. There are currently no plans
+ to support dynamic image loading.
+- CPU idle now works on the publicized version of the Foundation FVP.
+- All known issues relating to the compiler version used have now been resolved.
+ This TF-A version uses Linaro toolchain 14.07 (based on GCC 4.9).
+
+### Known issues
+
+- GICv3 support is experimental. The Linux kernel patches to support this are
+ not widely available. There are known issues with GICv3 initialization in the
+ TF-A.
+
+- While this version greatly reduces the on-chip RAM requirements, there are
+ further RAM usage enhancements that could be made.
+
+- The firmware design documentation for the Test Secure-EL1 Payload (TSP) and
+ its dispatcher (TSPD) is incomplete. Similarly for the PSCI section.
+
+- The Juno-specific firmware design documentation is incomplete.
+
+- Some recent enhancements to the FVP port have not yet been translated into the
+ Juno port. These will be tracked via the tf-issues project.
+
+- The Linux kernel version referred to in the user guide has DVFS and HMP
+ support disabled due to some known instabilities at the time of this release.
+ A future kernel version will re-enable these features.
+
+- DS-5 v5.19 does not detect Version 5.8 of the Cortex-A57-A53 Base FVPs in CADI
+ server mode. This is because the `<SimName>` reported by the FVP in this
+ version has changed. For example, for the Cortex-A57x4-A53x4 Base FVP, the
+ `<SimName>` reported by the FVP is `FVP_Base_Cortex_A57x4_A53x4`, while DS-5
+ expects it to be `FVP_Base_A57x4_A53x4`.
+
+ The temporary fix to this problem is to change the name of the FVP in
+ `sw/debugger/configdb/Boards/ARM FVP/Base_A57x4_A53x4/cadi_config.xml`. Change
+ the following line:
+
+ ```
+ <SimName>System Generator:FVP_Base_A57x4_A53x4</SimName>
+ ```
+
+ to System Generator:FVP_Base_Cortex-A57x4_A53x4
+
+ A similar change can be made to the other Cortex-A57-A53 Base FVP variants.
+
+## 0.4 (2014-06-03)
+
+### New features
+
+- Makefile improvements:
+
+ - Improved dependency checking when building.
+ - Removed `dump` target (build now always produces dump files).
+ - Enabled platform ports to optionally make use of parts of the Trusted
+ Firmware (e.g. BL3-1 only), rather than being forced to use all parts. Also
+ made the `fip` target optional.
+ - Specified the full path to source files and removed use of the `vpath`
+ keyword.
+
+- Provided translation table library code for potential re-use by platforms
+ other than the FVPs.
+
+- Moved architectural timer setup to platform-specific code.
+
+- Added standby state support to PSCI cpu_suspend implementation.
+
+- SRAM usage improvements:
+
+ - Started using the `-ffunction-sections`, `-fdata-sections` and
+ `--gc-sections` compiler/linker options to remove unused code and data from
+ the images. Previously, all common functions were being built into all
+ binary images, whether or not they were actually used.
+ - Placed all assembler functions in their own section to allow more unused
+ functions to be removed from images.
+ - Updated BL1 and BL2 to use a single coherent stack each, rather than one per
+ CPU.
+ - Changed variables that were unnecessarily declared and initialized as
+ non-const (i.e. in the .data section) so they are either uninitialized (zero
+ init) or const.
+
+- Moved the Test Secure-EL1 Payload (BL3-2) to execute in Trusted SRAM by
+ default. The option for it to run in Trusted DRAM remains.
+
+- Implemented a TrustZone Address Space Controller (TZC-400) driver. A default
+ configuration is provided for the Base FVPs. This means the model parameter
+ `-C bp.secure_memory=1` is now supported.
+
+- Started saving the PSCI cpu_suspend 'power_state' parameter prior to
+ suspending a CPU. This allows platforms that implement multiple power-down
+ states at the same affinity level to identify a specific state.
+
+- Refactored the entire codebase to reduce the amount of nesting in header files
+ and to make the use of system/user includes more consistent. Also split
+ platform.h to separate out the platform porting declarations from the required
+ platform porting definitions and the definitions/declarations specific to the
+ platform port.
+
+- Optimized the data cache clean/invalidate operations.
+
+- Improved the BL3-1 unhandled exception handling and reporting. Unhandled
+ exceptions now result in a dump of registers to the console.
+
+- Major rework to the handover interface between BL stages, in particular the
+ interface to BL3-1. The interface now conforms to a specification and is more
+ future proof.
+
+- Added support for optionally making the BL3-1 entrypoint a reset handler
+ (instead of BL1). This allows platforms with an alternative image loading
+ architecture to re-use BL3-1 with fewer modifications to generic code.
+
+- Reserved some DDR DRAM for secure use on FVP platforms to avoid future
+ compatibility problems with non-secure software.
+
+- Added support for secure interrupts targeting the Secure-EL1 Payload (SP)
+ (using GICv2 routing only). Demonstrated this working by adding an interrupt
+ target and supporting test code to the TSP. Also demonstrated non-secure
+ interrupt handling during TSP processing.
+
+### Issues resolved since last release
+
+- Now support use of the model parameter `-C bp.secure_memory=1` in the Base
+ FVPs (see **New features**).
+- Support for secure world interrupt handling now available (see **New
+ features**).
+- Made enough SRAM savings (see **New features**) to enable the Test Secure-EL1
+ Payload (BL3-2) to execute in Trusted SRAM by default.
+- The tested filesystem used for this release (Linaro AArch64 OpenEmbedded
+ 14.04) now correctly reports progress in the console.
+- Improved the Makefile structure to make it easier to separate out parts of the
+ TF-A for re-use in platform ports. Also, improved target dependency checking.
+
+### Known issues
+
+- GICv3 support is experimental. The Linux kernel patches to support this are
+ not widely available. There are known issues with GICv3 initialization in the
+ TF-A.
+- Dynamic image loading is not available yet. The current image loader
+ implementation (used to load BL2 and all subsequent images) has some
+ limitations. Changing BL2 or BL3-1 load addresses in certain ways can lead to
+ loading errors, even if the images should theoretically fit in memory.
+- TF-A still uses too much on-chip Trusted SRAM. A number of RAM usage
+ enhancements have been identified to rectify this situation.
+- CPU idle does not work on the advertised version of the Foundation FVP. Some
+ FVP fixes are required that are not available externally at the time of
+ writing. This can be worked around by disabling CPU idle in the Linux kernel.
+- Various bugs in TF-A, UEFI and the Linux kernel have been observed when using
+ Linaro toolchain versions later than 13.11. Although most of these have been
+ fixed, some remain at the time of writing. These mainly seem to relate to a
+ subtle change in the way the compiler converts between 64-bit and 32-bit
+ values (e.g. during casting operations), which reveals previously hidden bugs
+ in client code.
+- The firmware design documentation for the Test Secure-EL1 Payload (TSP) and
+ its dispatcher (TSPD) is incomplete. Similarly for the PSCI section.
+
+## 0.3 (2014-02-28)
+
+### New features
+
+- Support for Foundation FVP Version 2.0 added. The documented UEFI
+ configuration disables some devices that are unavailable in the Foundation
+ FVP, including MMC and CLCD. The resultant UEFI binary can be used on the
+ AEMv8 and Cortex-A57-A53 Base FVPs, as well as the Foundation FVP.
+
+ \:::\{note} The software will not work on Version 1.0 of the Foundation FVP.
+ \:::
+
+- Enabled third party contributions. Added a new contributing.md containing
+ instructions for how to contribute and updated copyright text in all files to
+ acknowledge contributors.
+
+- The PSCI CPU_SUSPEND API has been stabilised to the extent where it can be
+ used for entry into power down states with the following restrictions:
+
+ - Entry into standby states is not supported.
+ - The API is only supported on the AEMv8 and Cortex-A57-A53 Base FVPs.
+
+- The PSCI AFFINITY_INFO api has undergone limited testing on the Base FVPs to
+ allow experimental use.
+
+- Required C library and runtime header files are now included locally in TF-A
+ instead of depending on the toolchain standard include paths. The local
+ implementation has been cleaned up and reduced in scope.
+
+- Added I/O abstraction framework, primarily to allow generic code to load
+ images in a platform-independent way. The existing image loading code has been
+ reworked to use the new framework. Semi-hosting and NOR flash I/O drivers are
+ provided.
+
+- Introduced Firmware Image Package (FIP) handling code and tools. A FIP
+ combines multiple firmware images with a Table of Contents (ToC) into a single
+ binary image. The new FIP driver is another type of I/O driver. The Makefile
+ builds a FIP by default and the FVP platform code expect to load a FIP from
+ NOR flash, although some support for image loading using semi- hosting is
+ retained.
+
+ \:::\{note} Building a FIP by default is a non-backwards-compatible change. :::
+
+ \:::\{note} Generic BL2 code now loads a BL3-3 (non-trusted firmware) image
+ into DRAM instead of expecting this to be pre-loaded at known location. This
+ is also a non-backwards-compatible change. :::
+
+ \:::\{note} Some non-trusted firmware (e.g. UEFI) will need to be rebuilt so
+ that it knows the new location to execute from and no longer needs to copy
+ particular code modules to DRAM itself. :::
+
+- Reworked BL2 to BL3-1 handover interface. A new composite structure
+ (bl31_args) holds the superset of information that needs to be passed from BL2
+ to BL3-1, including information on how handover execution control to BL3-2 (if
+ present) and BL3-3 (non-trusted firmware).
+
+- Added library support for CPU context management, allowing the saving and
+ restoring of
+
+ - Shared system registers between Secure-EL1 and EL1.
+ - VFP registers.
+ - Essential EL3 system registers.
+
+- Added a framework for implementing EL3 runtime services. Reworked the PSCI
+ implementation to be one such runtime service.
+
+- Reworked the exception handling logic, making use of both SP_EL0 and SP_EL3
+ stack pointers for determining the type of exception, managing general purpose
+ and system register context on exception entry/exit, and handling SMCs. SMCs
+ are directed to the correct EL3 runtime service.
+
+- Added support for a Test Secure-EL1 Payload (TSP) and a corresponding
+ Dispatcher (TSPD), which is loaded as an EL3 runtime service. The TSPD
+ implements Secure Monitor functionality such as world switching and EL1
+ context management, and is responsible for communication with the TSP.
+
+ \:::\{note} The TSPD does not yet contain support for secure world interrupts.
+ \:::
+
+ \:::\{note} The TSP/TSPD is not built by default. :::
+
+### Issues resolved since last release
+
+- Support has been added for switching context between secure and normal worlds
+ in EL3.
+- PSCI API calls `AFFINITY_INFO` & `PSCI_VERSION` have now been tested (to a
+ limited extent).
+- The TF-A build artifacts are now placed in the `./build` directory and
+ sub-directories instead of being placed in the root of the project.
+- TF-A is now free from build warnings. Build warnings are now treated as
+ errors.
+- TF-A now provides C library support locally within the project to maintain
+ compatibility between toolchains/systems.
+- The PSCI locking code has been reworked so it no longer takes locks in an
+ incorrect sequence.
+- The RAM-disk method of loading a Linux file-system has been confirmed to work
+ with the TF-A and Linux kernel version (based on version 3.13) used in this
+ release, for both Foundation and Base FVPs.
+
+### Known issues
+
+The following is a list of issues which are expected to be fixed in the future
+releases of TF-A.
+
+- The TrustZone Address Space Controller (TZC-400) is not being programmed yet.
+ Use of model parameter `-C bp.secure_memory=1` is not supported.
+- No support yet for secure world interrupt handling.
+- GICv3 support is experimental. The Linux kernel patches to support this are
+ not widely available. There are known issues with GICv3 initialization in
+ TF-A.
+- Dynamic image loading is not available yet. The current image loader
+ implementation (used to load BL2 and all subsequent images) has some
+ limitations. Changing BL2 or BL3-1 load addresses in certain ways can lead to
+ loading errors, even if the images should theoretically fit in memory.
+- TF-A uses too much on-chip Trusted SRAM. Currently the Test Secure-EL1 Payload
+ (BL3-2) executes in Trusted DRAM since there is not enough SRAM. A number of
+ RAM usage enhancements have been identified to rectify this situation.
+- CPU idle does not work on the advertised version of the Foundation FVP. Some
+ FVP fixes are required that are not available externally at the time of
+ writing.
+- Various bugs in TF-A, UEFI and the Linux kernel have been observed when using
+ Linaro toolchain versions later than 13.11. Although most of these have been
+ fixed, some remain at the time of writing. These mainly seem to relate to a
+ subtle change in the way the compiler converts between 64-bit and 32-bit
+ values (e.g. during casting operations), which reveals previously hidden bugs
+ in client code.
+- The tested filesystem used for this release (Linaro AArch64 OpenEmbedded
+ 14.01) does not report progress correctly in the console. It only seems to
+ produce error output, not standard output. It otherwise appears to function
+ correctly. Other filesystem versions on the same software stack do not exhibit
+ the problem.
+- The Makefile structure doesn't make it easy to separate out parts of the TF-A
+ for re-use in platform ports, for example if only BL3-1 is required in a
+ platform port. Also, dependency checking in the Makefile is flawed.
+- The firmware design documentation for the Test Secure-EL1 Payload (TSP) and
+ its dispatcher (TSPD) is incomplete. Similarly for the PSCI section.
+
+## 0.2 (2013-10-25)
+
+### New features
+
+- First source release.
+- Code for the PSCI suspend feature is supplied, although this is not enabled by
+ default since there are known issues (see below).
+
+### Issues resolved since last release
+
+- The "psci" nodes in the FDTs provided in this release now fully comply with
+ the recommendations made in the PSCI specification.
+
+### Known issues
+
+The following is a list of issues which are expected to be fixed in the future
+releases of TF-A.
+
+- The TrustZone Address Space Controller (TZC-400) is not being programmed yet.
+ Use of model parameter `-C bp.secure_memory=1` is not supported.
+- No support yet for secure world interrupt handling or for switching context
+ between secure and normal worlds in EL3.
+- GICv3 support is experimental. The Linux kernel patches to support this are
+ not widely available. There are known issues with GICv3 initialization in
+ TF-A.
+- Dynamic image loading is not available yet. The current image loader
+ implementation (used to load BL2 and all subsequent images) has some
+ limitations. Changing BL2 or BL3-1 load addresses in certain ways can lead to
+ loading errors, even if the images should theoretically fit in memory.
+- Although support for PSCI `CPU_SUSPEND` is present, it is not yet stable and
+ ready for use.
+- PSCI API calls `AFFINITY_INFO` & `PSCI_VERSION` are implemented but have not
+ been tested.
+- The TF-A make files result in all build artifacts being placed in the root of
+ the project. These should be placed in appropriate sub-directories.
+- The compilation of TF-A is not free from compilation warnings. Some of these
+ warnings have not been investigated yet so they could mask real bugs.
+- TF-A currently uses toolchain/system include files like stdio.h. It should
+ provide versions of these within the project to maintain compatibility between
+ toolchains/systems.
+- The PSCI code takes some locks in an incorrect sequence. This may cause
+ problems with suspend and hotplug in certain conditions.
+- The Linux kernel used in this release is based on version 3.12-rc4. Using this
+ kernel with the TF-A fails to start the file-system as a RAM-disk. It fails to
+ execute user-space `init` from the RAM-disk. As an alternative, the
+ VirtioBlock mechanism can be used to provide a file-system to the kernel.
+
+______________________________________________________________________
+
+*Copyright (c) 2013-2020, Arm Limited and Contributors. All rights reserved.*
+
+[mbed tls releases]: https://tls.mbed.org/tech-updates/releases
+[pr#1002]: https://github.com/ARM-software/arm-trusted-firmware/pull/1002#issuecomment-312650193
+[sdei specification]: http://infocenter.arm.com/help/topic/com.arm.doc.den0054a/ARM_DEN0054A_Software_Delegated_Exception_Interface.pdf
+[tf-issue#501]: https://github.com/ARM-software/tf-issues/issues/501
diff --git a/docs/change-log.rst b/docs/change-log.rst
deleted file mode 100644
index 9c475689a..000000000
--- a/docs/change-log.rst
+++ /dev/null
@@ -1,4602 +0,0 @@
-Change Log & Release Notes
-==========================
-
-This document contains a summary of the new features, changes, fixes and known
-issues in each release of Trusted Firmware-A.
-
-Version 2.5
------------
-
-New Features
-^^^^^^^^^^^^
-
-- Architecture support
- - Added support for speculation barrier(``FEAT_SB``) for non-Armv8.5
- platforms starting from Armv8.0
- - Added support for Activity Monitors Extension version 1.1(``FEAT_AMUv1p1``)
- - Added helper functions for Random number generator(``FEAT_RNG``) registers
- - Added support for Armv8.6 Multi-threaded PMU extensions (``FEAT_MTPMU``)
- - Added support for MTE Asymmetric Fault Handling extensions(``FEAT_MTE3``)
- - Added support for Privileged Access Never extensions(``FEAT_PANx``)
-
-- Bootloader images
- - Added PIE support for AArch32 builds
- - Enable Trusted Random Number Generator service for BL32(sp_min)
-
-- Build System
- - Added build option for Arm Feature Modifiers
-
-- Drivers
- - Added support for interrupts in TZC-400 driver
-
- - Broadcom
- - Added support for I2C, MDIO and USB drivers
-
- - Marvell
- - Added support for secure read/write of dfc register-set
- - Added support for thermal sensor driver
- - Implement a3700_core_getc API in console driver
- - Added rx training on 10G port
-
- - Marvell Mochi
- - Added support for cn913x in PCIe mode
-
- - Marvell Armada A8K
- - Added support for TRNG-IP-76 driver and accessing RNG register
-
- - Mediatek MT8192
- - Added support for following drivers
- - MPU configuration for SCP/PCIe
- - SPM suspend
- - Vcore DVFS
- - LPM
- - PTP3
- - UART save and restore
- - Power-off
- - PMIC
- - CPU hotplug and MCDI support
- - SPMC
- - MPU
-
- - Mediatek MT8195
- - Added support for following drivers
- - GPIO, NCDI, SPMC drivers
- - Power-off
- - CPU hotplug, reboot and MCDI
- - Delay timer and sys timer
- - GIC
-
- - NXP
- - Added support for
- - non-volatile storage API
- - chain of trust and trusted board boot using two modes: MBEDTLS and CSF
- - fip-handler necessary for DDR initialization
- - SMMU and console drivers
- - crypto hardware accelerator driver
- - following drivers: SD, EMMC, QSPI, FLEXSPI, GPIO, GIC, CSU, PMU, DDR
- - NXP Security Monitor and SFP driver
- - interconnect config APIs using ARM CCN-CCI driver
- - TZC APIs to configure DDR region
- - generic timer driver
- - Device configuration driver
-
- - IMX
- - Added support for image loading and io-storage driver for TBBR fip booting
-
- - Renesas
- - Added support for PFC and EMMC driver
-
- - RZ Family:
- - G2N, G2E and G2H SoCs
- - Added support for watchdog, QoS, PFC and DRAM initialization
-
- - RZG Family:
- - G2M
- - Added support for QoS and DRAM initialization
-
- - Xilinx
- - Added JTAG DCC support for Versal and ZynqMP SoC family.
-
-- Libraries
- - C standard library
- - Added support to print ``%`` in ``snprintf()`` and ``printf()`` APIs
- - Added support for strtoull, strtoll, strtoul, strtol APIs from FreeBSD project
-
- - CPU support
- - Added support for
- - Cortex_A78C CPU
- - Makalu ELP CPU
- - Makalu CPU
- - Matterhorn ELP CPU
- - Neoverse-N2 CPU
-
- - CPU Errata
- - Arm Cortex-A76: Added workaround for erratum 1946160
-
- - Arm Cortex-A77: Added workaround for erratum 1946167
-
- - Arm Cortex-A78: Added workaround for erratum 1941498 and 1951500
-
- - Arm Neoverse-N1: Added workaround for erratum 1946160
-
- - Flattened device tree(libfdt)
- - Added support for wrapper function to read UUIDs in string format from dtb
-
-- Platforms
- - Added support for MediaTek MT8195
- - Added support for Arm RD-N2 board
-
- - Allwinner
- - Added support for H616 SoC
-
- - Arm
- - Added support for GPT parser
- - Protect GICR frames for fused/unused cores
-
- - Arm Morello
- - Added VirtIO network device to Morello FVP fdts
-
- - Arm RD-N2
- - Added support for variant 1 of RD-N2 platform
- - Enable AMU support
-
- - Arm RD-V1
- - Enable AMU support
-
- - Arm SGI
- - Added support for platform variant build option
-
- - Arm TC0
- - Added Matterhorn ELP CPU support
- - Added support for opteed
-
- - Arm Juno
- - Added support to use hw_config in BL31
- - Use TRNG entropy source for SMCCC TRNG interface
- - Condition Juno entropy source with CRC instructions
-
- - Marvell Mochi
- - Added support for detection of secure mode
-
- - Marvell ARMADA
- - Added support for new compile option A3720_DB_PM_WAKEUP_SRC
- - Added support doing system reset via CM3 secure coprocessor
- - Made several makefile enhancements required to build WTMI_MULTI_IMG and TIMDDRTOOL
- - Added support for building DOIMAGETOOL tool
- - Added new target mrvl_bootimage
-
- - Mediatek MT8192
- - Added support for rtc power off sequence
-
- - Mediatek MT8195
- - Added support for SiP service
-
- - STM32MP1
- - Added support for
- - Seeed ODYSSEY SoM and board
- - SDMMC2 and I2C2 pins in pinctrl
- - I2C2 peripheral in DTS
- - PIE for BL32
- - TZC-400 interrupt managament
- - Linux Automation MC-1 board
-
- - Renesas RZG
- - Added support for identifying EK874 RZ/G2E board
- - Added support for identifying HopeRun HiHope RZ/G2H and RZ/G2H boards
-
- - Rockchip
- - Added support for stack protector
-
- - QEMU
- - Added support for ``max`` CPU
- - Added Cortex-A72 support to ``virt`` platform
- - Enabled trigger reboot from secure pl061
-
- - QEMU SBSA
- - Added support for sbsa-ref Embedded Controller
-
- - NXP
- - Added support for warm reset to retain ddr content
- - Added support for image loader necessary for loading fip image
-
- - lx2160a SoC Family
- - Added support for
- - new platform lx2160a-aqds
- - new platform lx2160a-rdb
- - new platform lx2162a-aqds
- - errata handling
-
- - IMX imx8mm
- - Added support for trusted board boot
-
- - TI K3
- - Added support for lite device board
- - Enabled Cortex-A72 erratum 1319367
- - Enabled Cortex-A53 erratum 1530924
-
- - Xilinx ZynqMP
- - Added support for PS and system reset on WDT restart
- - Added support for error management
- - Enable support for log messages necessary for debug
- - Added support for PM API SMC call for efuse and register access
-
-- Processes
- - Introduced process for platform deprecation
- - Added documentation for TF-A threat model
- - Provided a copy of the MIT license to comply with the license
- requirements of the arm-gic.h source file (originating from the Linux
- kernel project and re-distributed in TF-A).
-
-- Services
- - Added support for TRNG firmware interface service
-
- - Arm
- - Added SiP service to configure Ethos-N NPU
-
- - SPMC
- - Added documentation for SPM(Hafnium) SMMUv3 driver
-
- - SPMD
- - Added support for
- - FFA_INTERRUPT forwading ABI
- - FFA_SECONDARY_EP_REGISTER ABI
- - FF-A v1.0 boot time power management, SPMC secondary core boot and
- early run-time power management
-
-- Tools
-
- - FIPTool
- - Added mechanism to allow platform specific image UUID
-
- - git hooks
- - Added support for conventional commits through commitlint hook,
- commitizen hook and husky configuration files.
-
- - NXP tool
- - Added support for a tool that creates pbl file from BL2
-
- - Renesas RZ/G2
- - Added tool support for creating bootparam and cert_header images
-
- - CertCreate
- - Added support for platform-defined certificates, keys, and extensions using
- the platform's makefile
-
- - shared tools
- - Added EFI_GUID representation to uuid helper data structure
-
-Changed
-^^^^^^^
-
-- Common components
- - Print newline after hex address in aarch64 el3_panic function
- - Use proper ``#address-cells`` and ``#size-cells`` for reserved-memory in dtbs
-
-- Drivers
-
- - Move SCMI driver from ST platform directory and make it common to all platforms
-
- - Arm GICv3
- - Shift eSPI register offset in GICD_OFFSET_64()
- - Use mpidr to probe GICR for current CPU
-
- - Arm TZC-400
- - Adjust filter tag if it set to FILTER_BIT_ALL
-
- - Cadence
- - Enhance UART driver APIs to put characters to fifo
-
- - Mediatek MT8192
- - Move timer driver to common folder
- - Enhanced sys_cirq driver to add more IC services
-
- - Renesas
- - Move ddr and delay driver to common directory
-
- - Renesas rcar
- - Treat log as device memory in console driver
-
- - Renesas RZ Family:
- - G2N and G2H SoCs
- - Select MMC_CH1 for eMMC channel
-
- - Marvell
- - Added support for checking if TRNG unit is present
-
- - Marvell A3K
- - Set TXDCLK_2X_SEL bit during PCIe initialization
- - Set mask parameter for every reg_set call
-
- - Marvell Mochi
- - Added missing stream IDs configurations
-
- - MbedTLS
- - Migrated to Mbed TLS v2.26.0
-
- - IMX imx8mp
- - Change the bl31 physical load address
-
- - QEMU SBSA
- - Enable secure variable storage
-
- - SCMI
- - Update power domain protocol version to 2.0
-
- - STM32
- - Remove dead code from nand FMC driver
-
-- Libraries
- - C Standard Library
- - Use macros to reduce duplicated code between snprintf and printf
-
- - CPU support
- - Sanity check pointers before use in AArch32 builds
-
- - Arm Cortex-A78
- - Remove rainier cpu workaround for errata 1542319
-
- - Arm Makalu ELP
- - Added "_arm" suffix to Makalu ELP CPU lib
-
-
-- Miscellaneous
- - Editorconfig
- - set max line length to 100
-
-- Platforms
- - Allwinner
- - Added reserved-memory node to DT
- - Express memmap more dynamically
- - Move SEPARATE_NOBITS_REGION to platforms
- - Limit FDT checks to reduce code size
- - Use CPUIDLE hardware when available
- - Allow conditional compilation of SCPI and native PSCI ops
- - Always use a 3MHz RSB bus clock
- - Enable workaround for Cortex-A53 erratum 1530924
- - Fixed non-default PRELOADED_BL33_BASE
- - Leave CPU power alone during BL31 setup
- - Added several psci hooks enhancements to improve system shutdown/reset
- sequence
- - Return the PMIC to I2C mode after use
- - Separate code to power off self and other CPUs
- - Split native and SCPI-based PSCI implementations
-
- - Allwinner H6
- - Added R_PRCM security setup for H6 board
- - Added SPC security setup for H6 board
- - Use RSB for the PMIC connection on H6
-
- - Arm
- - Store UUID as a string, rather than ints
- - Replace FIP base and size macro with a generic name
- - Move compile time switch from source to dt file
- - Don't provide NT_FW_CONFIG when booting hafnium
- - Do not setup 'disabled' regulator
- - Increase SP max size
- - Remove false dependency of ARM_LINUX_KERNEL_AS_BL33 on RESET_TO_BL31
- and allow it to be enabled independently
-
- - Arm FVP
- - Do not map GIC region in BL1 and BL2
-
- - Arm Juno
- - Refactor juno_getentropy() to return 64 bits on each call
-
- - Arm Morello
- - Remove "virtio-rng" from Morello FVP
- - Enable virtIO P9 device for Morello fvp
-
- - Arm RDV1
- - Allow all PSCI callbacks on RD-V1
- - Rename rddaniel to rdv1
-
- - Arm RDV1MC
- - Rename rddanielxlr to rdv1mc
- - Initialize TZC-400 controllers
-
- - Arm TC0
- - Updated GICR base address
- - Use scmi_dvfs clock index 1 for cores 4-7 through fdt
- - Added reserved-memory node for OP-TEE fdts
- - Enabled Theodul DSU in TC platform
- - OP-TEE as S-EL1 SP with SPMC at S-EL2
- - Update Matterhorm ELP DVFS clock index
-
- - Arm SGI
- - Allow access to TZC controller on all chips
- - Define memory regions for multi-chip platforms
- - Allow access to nor2 flash and system registers from S-EL0
- - Define default list of memory regions for DMC-620 TZC
- - Improve macros defining cper buffer memory region
- - Refactor DMC-620 error handling SMC function id
- - Refactor SDEI specific macros
- - Added platform id value for RDN2 platform
- - Refactored header file inclusions and inclusion of memory mapping
-
- - Arm RDN2
- - Allow usage of secure partitions on RDN2 platform
- - Update GIC redistributor and TZC base address
-
- - Arm SGM775
- - Deprecate Arm sgm775 FVP platform
-
- - Marvell
- - Increase TX FIFO EMPTY timeout from 2ms to 3ms
- - Update delay code to be compatible with 1200 MHz CPU
-
- - Marvell ARMADA
- - Postpone MSS CPU startup to BL31 stage
- - Allow builds without MSS support
- - Use MSS SRAM in secure mode
- - Added missing FORCE, .PHONY and clean targets
- - Cleanup MSS SRAM if used for copy
- - Move definition of mrvl_flash target to common marvell_common.mk file
- - Show informative build messages and blank lines
-
- - Marvell ARMADA A3K
- - Added a new target mrvl_uart which builds UART image
- - Added checks that WTP, MV_DDR_PATH and CRYPTOPP_PATH are correctly defined
- - Allow use of the system Crypto++ library
- - Build $(WTMI_ENC_IMG) in $(BUILD_PLAT) directory
- - Build intermediate files in $(BUILD_PLAT) directory
- - Build UART image files directly in $(BUILD_UART) subdirectory
- - Correctly set DDR_TOPOLOGY and CLOCKSPRESET for WTMI
- - Do not use 'echo -e' in Makefile
- - Improve 4GB DRAM usage from 3.375 GB to 3.75 GB
- - Remove unused variable WTMI_SYSINIT_IMG from Makefile
- - Simplify check if WTP variable is defined
- - Split building $(WTMI_MULTI_IMG) and $(TIMDDRTOOL)
-
- - Marvell ARMADA A8K
- - Allow CP1/CP2 mapping at BLE stage
-
- - Mediatek MT8183
- - Added timer V20 compensation
-
- - Nvidia Tegra
- - Rename SMC API
-
- - TI K3
- - Make plat_get_syscnt_freq2 helper check CNT_FID0 register
- - Fill non-message data fields in sec_proxy with 0x0
- - Update ti_sci_msg_req_reboot ABI to include domain
- - Enable USE_COHERENT_MEM only for the generic board
- - Explicitly map SEC_SRAM_BASE to 0x0
- - Use BL31_SIZE instead of computing
- - Define the correct number of max table entries and increase SRAM size
- to account for additional table
-
- - Raspberry Pi4
- - Switch to gicv2.mk and GICV2_SOURCES
-
- - Renesas
- - Move headers and assembly files to common folder
-
- - Renesas rzg
- - Added device tree memory node enhancements
-
- - Rockchip
- - Switch to using common gicv3.mk
-
- - STM32MP1
- - Set BL sizes regardless of flags
-
- - QEMU
- - Include gicv2.mk for compiling GICv2 source files
- - Change DEVICE2 definition for MMU
- - Added helper to calculate the position shift from MPIDR
-
- - QEMU SBSA
- - Include libraries for Cortex-A72
- - Increase SHARED_RAM_SIZE
- - Addes support in spm_mm for upto 512 cores
- - Added support for topology handling
-
- - QTI
- - Mandate SMC implementation
-
- - Xilinx
- - Rename the IPI CRC checksum macro
- - Use fno-jump-tables flag in CPPFLAGS
-
- - Xilinx versal
- - Added the IPI CRC checksum macro support
- - Mark IPI calls secure/non-secure
- - Enable sgi to communicate with linux using IPI
- - Remove Cortex-A53 compilation
-
- - Xilinx ZynqMP
- - Configure counter frequency during initialization
- - Filter errors related to clock gate permissions
- - Implement pinctrl request/release EEMI API
- - Reimplement pinctrl get/set config parameter EEMI API calls
- - Reimplement pinctrl set/get function EEMI API
- - Update error codes to match Linux and PMU Firmware
- - Update PM version and support PM version check
- - Update return type in query functions
- - Added missing ids for 43/46/47dr devices
- - Checked for DLL status before doing reset
- - Disable ITAPDLYENA bit for zero ITAP delay
- - Include GICv2 makefile
- - Remove the custom crash implementation
-
-- Services
-
- - SPMD
- - Lock the g_spmd_pm structure
- - Declare third cactus instance as UP SP
- - Provide number of vCPUs and VM size for first SP
- - Remove ``chosen`` node from SPMC manifests
- - Move OP-TEE SP manifest DTS to FVP platform
- - Update OP-TEE SP manifest with device-regions node
- - Remove device-memory node from SPMC manifests
-
- - SPM_MM
- - Use sp_boot_info to set SP context
-
- - SDEI
- - Updata the affinity of shared event
-
-- Tools
- - FIPtool
- - Do not print duplicate verbose lines about building fiptool
-
- - CertCreate
- - Updated tool for platform defined certs, keys & extensions
- - Create only requested certificates
- - Avoid duplicates in extension stack
-
-Resolved Issues
-^^^^^^^^^^^^^^^
-- Several fixes for typos and mis-spellings in documentation
-
-- Build system
- - Fixed ${FIP_NAME} to be rebuilt only when needed in Makefile
- - Do not mark file targets as .PHONY target in Makefile
-
-- Drivers
- - Authorization
- - Avoid NV counter upgrade without certificate validation
-
- - Arm GICv3
- - Fixed logical issue for num_eints
- - Limit SPI ID to avoid misjudgement in GICD_OFFSET()
- - Fixed potential GICD context override with ESPI enabled
-
- - Marvell A3700
- - Fixed configuring polarity invert bits
-
- - Arm TZC-400
- - Correct FAIL_CONTROL Privileged bit
- - Fixed logical error in FILTER_BIT definitions
-
- - Renesas rcar
- - Fixed several coding style violations reported by checkpatch
-
-- Libraries
- - Arch helpers
- - Fixed assertions in processing dynamic relocations for AArch64 builds
-
- - C standard library
- - Fixed MISRA issues in memset() ABI
-
- - RAS
- - Fixed bug of binary search in RAS interrupt handler
-
-- Platforms
-
- - Arm
- - Fixed missing copyrights in arm-gic.h file
- - Fixed the order of header files in several dts files
- - Fixed error message printing in board makefile
- - Fixed bug of overriding the last node in image load helper API
- - Fixed stdout-path in fdts files of TC0 and N1SDP platforms
- - Turn ON/OFF redistributor in sync with GIC CPU interface ON/OFF for css platforms
-
- - Arm FVP
- - Fixed Generic Timer interrupt types in platform dts files
-
- - Arm Juno
- - Fixed parallel build issue for romlib config
-
- - Arm SGI
- - Fixed bug in SDEI receive event of RAS handler
-
- - Intel Agilex
- - Fixed PLAT_MAX_PWR_LVL value
-
- - Marvell
- - Fixed SPD handling in dram port
-
- - Marvell ARMADA
- - Fixed TRNG return SMC handling
- - Fixed the logic used for LD selector mask
- - Fixed MSS firmware loader for A8K family
-
- - ST
- - Fixed few violations reported by coverity static checks
-
- - STM32MP1
- - Fixed SELFREF_TO_X32 mask in ddr driver
- - Do not keep mmc_device_info in stack
- - Correct plat_crash_console_flush()
-
- - QEMU SBSA
- - Fixed memory type of secure NOR flash
-
- - QTI
- - Fixed NUM_APID and REG_APID_MAP() argument in SPMI driver
-
- - Intel
- - Do not keep mmc_device_info in stack
-
- - Hisilicon
- - Do not keep mmc_device_info in stack
-
-
-- Services
-
- - EL3 runtime
- - Fixed the EL2 context save/restore routine by removing EL2 generic
- timer system registers
- - Added fix for exception handler in BL31 by synchronizing pending EA
- using DSB barrier
-
- - SPMD
- - Fixed error codes to use int32_t type
-
- - TSPD
- - Added bug fix in tspd interrupt handling when TSP_NS_INTR_ASYNC_PREEMPT is enabled
-
- - TRNG
- - Fixed compilation errors with -O0 compile option
-
- - DebugFS
- - Checked channel index before calling clone function
-
- - PSCI
- - Fixed limit of 256 CPUs caused by cast to unsigned char
-
- - TSP
- - Fixed compilation erros when built with GCC 11.0.0 toolchain
-
-- Tools
- - FIPtool
- - Do not call ``make clean`` for ``all`` target
-
- - CertCreate
- - Fixed bug to avoid cleaning when building the binary
- - Used preallocated parts of the HASH struct to avoid leaking HASH struct fields
- - Free arguments copied with strdup
- - Free keys after use
- - Free X509_EXTENSION structures on stack to avoid leaking them
- - Optimized the code to avoid unnecessary attempts to create non-requested
- certificates
-
-Version 2.4
------------
-
-New Features
-^^^^^^^^^^^^
-
-- Architecture support
- - Armv8.6-A
- - Added support for Armv8.6 Enhanced Counter Virtualization (ECV)
- - Added support for Armv8.6 Fine Grained Traps (FGT)
- - Added support for Armv8.6 WFE trap delays
-
-- Bootloader images
- - Added support for Measured Boot
-
-- Build System
- - Added build option ``COT_DESC_IN_DTB`` to create Chain of Trust at runtime
- - Added build option ``OPENSSL_DIR`` to direct tools to OpenSSL libraries
- - Added build option ``RAS_TRAP_LOWER_EL_ERR_ACCESS`` to enable trapping RAS
- register accesses from EL1/EL2 to EL3
- - Extended build option ``BRANCH_PROTECTION`` to support branch target
- identification
-
-- Common components
- - Added support for exporting CPU nodes to the device tree
- - Added support for single and dual-root Chains of Trust in secure
- partitions
-
-- Drivers
- - Added Broadcom RNG driver
- - Added Marvell ``mg_conf_cm3`` driver
- - Added System Control and Management Interface (SCMI) driver
- - Added STMicroelectronics ETZPC driver
-
- - Arm GICv3
- - Added support for detecting topology at runtime
-
- - Dual Root
- - Added support for platform certificates
-
- - Marvell Cache LLC
- - Added support for mapping the entire LLC into SRAM
-
- - Marvell CCU
- - Added workaround for erratum 3033912
-
- - Marvell CP110 COMPHY
- - Added support for SATA COMPHY polarity inversion
- - Added support for USB COMPHY polarity inversion
- - Added workaround for erratum IPCE_COMPHY-1353
-
- - STM32MP1 Clocks
- - Added ``RTC`` as a gateable clock
- - Added support for shifted clock selector bit masks
- - Added support for using additional clocks as parents
-
-- Libraries
- - C standard library
- - Added support for hexadecimal and pointer format specifiers in
- ``snprint()``
- - Added assembly alternatives for various library functions
-
- - CPU support
- - Arm Cortex-A53
- - Added workaround for erratum 1530924
-
- - Arm Cortex-A55
- - Added workaround for erratum 1530923
-
- - Arm Cortex-A57
- - Added workaround for erratum 1319537
-
- - Arm Cortex-A76
- - Added workaround for erratum 1165522
- - Added workaround for erratum 1791580
- - Added workaround for erratum 1868343
-
- - Arm Cortex-A72
- - Added workaround for erratum 1319367
-
- - Arm Cortex-A77
- - Added workaround for erratum 1508412
- - Added workaround for erratum 1800714
- - Added workaround for erratum 1925769
-
- - Arm Neoverse-N1
- - Added workaround for erratum 1868343
-
- - EL3 Runtime
- - Added support for saving/restoring registers related to nested
- virtualization in EL2 context switches if the architecture supports it
-
- - FCONF
- - Added support for Measured Boot
- - Added support for populating Chain of Trust properties
- - Added support for loading the ``fw_config`` image
-
- - Measured Boot
- - Added support for event logging
-
-- Platforms
- - Added support for Arm Morello
- - Added support for Arm TC0
- - Added support for iEi PUZZLE-M801
- - Added support for Marvell OCTEON TX2 T9130
- - Added support for MediaTek MT8192
- - Added support for NXP i.MX 8M Nano
- - Added support for NXP i.MX 8M Plus
- - Added support for QTI CHIP SC7180
- - Added support for STM32MP151F
- - Added support for STM32MP153F
- - Added support for STM32MP157F
- - Added support for STM32MP151D
- - Added support for STM32MP153D
- - Added support for STM32MP157D
-
- - Arm
- - Added support for platform-owned SPs
- - Added support for resetting to BL31
-
- - Arm FPGA
- - Added support for Klein
- - Added support for Matterhorn
- - Added support for additional CPU clusters
-
- - Arm FVP
- - Added support for performing SDEI platform setup at runtime
- - Added support for SMCCC's ``SMCCC_ARCH_SOC_ID`` command
- - Added an ``id`` field under the NV-counter node in the device tree to
- differentiate between trusted and non-trusted NV-counters
- - Added support for extracting the clock frequency from the timer node
- in the device tree
-
- - Arm Juno
- - Added support for SMCCC's ``SMCCC_ARCH_SOC_ID`` command
-
- - Arm N1SDP
- - Added support for cross-chip PCI-e
-
- - Marvell
- - Added support for AVS reduction
-
- - Marvell ARMADA
- - Added support for twin-die combined memory device
-
- - Marvell ARMADA A8K
- - Added support for DDR with 32-bit bus width (both ECC and non-ECC)
-
- - Marvell AP806
- - Added workaround for erratum FE-4265711
-
- - Marvell AP807
- - Added workaround for erratum 3033912
-
- - Nvidia Tegra
- - Added debug printouts indicating SC7 entry sequence completion
- - Added support for SDEI
- - Added support for stack protection
- - Added support for GICv3
- - Added support for SMCCC's ``SMCCC_ARCH_SOC_ID`` command
-
- - Nvidia Tegra194
- - Added support for RAS exception handling
- - Added support for SPM
-
- - NXP i.MX
- - Added support for SDEI
-
- - QEMU SBSA
- - Added support for the Secure Partition Manager
-
- - QTI
- - Added RNG driver
- - Added SPMI PMIC arbitrator driver
- - Added support for SMCCC's ``SMCCC_ARCH_SOC_ID`` command
-
- - STM32MP1
- - Added support for exposing peripheral interfaces to the non-secure
- world at runtime
- - Added support for SCMI clock and reset services
- - Added support for STM32MP15x CPU revision Z
- - Added support for SMCCC services in ``SP_MIN``
-
-- Services
- - Secure Payload Dispatcher
- - Added a provision to allow clients to retrieve the service UUID
-
- - SPMC
- - Added secondary core endpoint information to the SPMC context
- structure
-
- - SPMD
- - Added support for booting OP-TEE as a guest S-EL1 Secure Partition on
- top of Hafnium in S-EL2
- - Added a provision for handling SPMC messages to register secondary
- core entry points
- - Added support for power management operations
-
-- Tools
- - CertCreate
- - Added support for secure partitions
-
- - CertTool
- - Added support for the ``fw_config`` image
-
- - FIPTool
- - Added support for the ``fw_config`` image
-
-Changed
-^^^^^^^
-
-- Architecture support
-
-- Bootloader images
-
-- Build System
- - The top-level Makefile now supports building FipTool on Windows
- - The default value of ``KEY_SIZE`` has been changed to to 2048 when RSA is
- in use
- - The previously-deprecated macro ``__ASSEMBLY__`` has now been removed
-
-- Common components
- - Certain functions that flush the console will no longer return error
- information
-
-- Drivers
- - Arm GIC
- - Usage of ``drivers/arm/gic/common/gic_common.c`` has now been
- deprecated in favour of ``drivers/arm/gic/vX/gicvX.mk``
- - Added support for detecting the presence of a GIC600-AE
- - Added support for detecting the presence of a GIC-Clayton
-
- - Marvell MCI
- - Now performs link tuning for all MCI interfaces to improve performance
-
- - Marvell MoChi
- - PIDI masters are no longer forced into a non-secure access level when
- ``LLC_SRAM`` is enabled
- - The SD/MMC controllers are now accessible from guest virtual machines
-
- - Mbed TLS
- - Migrated to Mbed TLS v2.24.0
-
- - STM32 FMC2 NAND
- - Adjusted FMC node bindings to include an EBI controller node
-
- - STM32 Reset
- - Added an optional timeout argument to assertion functions
-
- - STM32MP1 Clocks
- - Enabled several additional system clocks during initialization
-
-- Libraries
- - C Standard Library
- - Improved ``memset`` performance by avoiding single-byte writes
- - Added optimized assembly variants of ``memset``
-
- - CPU support
- - Renamed Cortex-Hercules to Cortex-A78
- - Renamed Cortex-Hercules AE to Cortex-A78 AE
- - Renamed Neoverse Zeus to Neoverse V1
-
- - Coreboot
- - Updated ‘coreboot_get_memory_type’ API to take an extra argument as a
- ’memory size’ that used to return a valid memory type.
-
- - libfdt
- - Updated to latest upstream version
-
-- Platforms
- - Allwinner
- - Disabled non-secure access to PRCM power control registers
-
- - Arm
- - ``BL32_BASE`` is now platform-dependent when ``SPD_spmd`` is enabled
- - Added support for loading the Chain of Trust from the device tree
- - The firmware update check is now executed only once
- - NV-counter base addresses are now loaded from the device tree when
- ``COT_DESC_IN_DTB`` is enabled
- - Now loads and populates ``fw_config`` and ``tb_fw_config``
- - FCONF population now occurs after caches have been enabled in order
- to reduce boot times
-
- - Arm Corstone-700
- - Platform support has been split into both an FVP and an FPGA variant
-
- - Arm FPGA
- - DTB and BL33 load addresses have been given sensible default values
- - Now reads generic timer counter frequency, GICD and GICR base
- addresses, and UART address from DT
- - Now treats the primary PL011 UART as an SBSA Generic UART
-
- - Arm FVP
- - Secure interrupt descriptions, UART parameters, clock frequencies and
- GICv3 parameters are now queried through FCONF
- - UART parameters are now queried through the device tree
- - Added an owner field to Cactus secure partitions
- - Increased the maximum size of BL2 when the Chain of Trust is loaded
- from the device tree
- - Reduces the maximum size of BL31
- - The ``FVP_USE_SP804_TIMER`` and ``FVP_VE_USE_SP804_TIMER`` build
- options have been removed in favour of a common ``USE_SP804_TIMER``
- option
- - Added a third Cactus partition to manifests
- - Device tree nodes now store UUIDs in big-endian
-
- - Arm Juno
- - Increased the maximum size of BL2 when optimizations have not been
- applied
- - Reduced the maximum size of BL31 and BL32
-
- - Marvell AP807
- - Enabled snoop filters
-
- - Marvell ARMADA A3K
- - UART recovery images are now suffixed with ``.bin``
-
- - Marvell ARMADA A8K
- - Option ``BL31_CACHE_DISABLE`` is now disabled (``0``) by default
-
- - Nvidia Tegra
- - Added VPR resize supported check when processing video memory resize
- requests
- - Added SMMU verification to prevent potential issues caused by
- undetected corruption of the SMMU configuration during boot
- - The GIC CPU interface is now properly disabled after CPU off
- - The GICv2 sources list and the ``BL31_SIZE`` definition have been made
- platform-specific
- - The SPE driver will no longer flush the console when writing
- individual characters
-
- - Nvidia Tegra194
- - TZDRAM setup has been moved to platform-specific early boot handlers
- - Increased verbosity of debug prints for RAS SErrors
- - Support for powering down CPUs during CPU suspend has been removed
- - Now verifies firewall settings before using resources
-
- - TI K3
- - The UART number has been made configurable through ``K3_USART``
-
- - Rockchip RK3368
- - The maximum number of memory map regions has been increased to 20
-
- - Socionext Uniphier
- - The maximum size of BL33 has been increased to support larger
- bootloaders
-
- - STM32
- - Removed platform-specific DT functions in favour of using existing
- generic alternatives
-
- - STM32MP1
- - Increased verbosity of exception reports in debug builds
- - Device trees have been updated to align with the Linux kernel
- - Now uses the ETZPC driver to configure secure-aware interfaces for
- assignment to the non-secure world
- - Finished good variants have been added to the board identifier
- enumerations
- - Non-secure access to clocks and reset domains now depends on their
- state of registration
- - NEON is now disabled in ``SP_MIN``
- - The last page of ``SYSRAM`` is now used as SCMI shared memory
- - Checks to verify platform compatibility have been added to verify that
- an image is compatible with the chip ID of the running platform
-
- - QEMU SBSA
- - Removed support for Arm's Cortex-A53
-
-- Services
- - Renamed SPCI to FF-A
-
- - SPMD
- - No longer forwards requests to the non-secure world when retrieving
- partition information
- - SPMC manifest size is now retrieved directly from SPMD instead of the
- device tree
- - The FF-A version handler now returns SPMD's version when the origin
- of the call is secure, and SPMC's version when the origin of the call
- is non-secure
-
- - SPMC
- - Updated the manifest to declare CPU nodes in descending order as per
- the SPM (Hafnium) multicore requirement
- - Updated the device tree to mark 2GB as device memory for the first
- partition excluding trusted DRAM region (which is reserved for SPMC)
- - Increased the number of EC contexts to the maximum number of PEs as
- per the FF-A specification
-
-- Tools
- - FIPTool
- - Now returns ``0`` on ``help`` and ``help <command>``
-
- - Marvell DoImage
- - Updated Mbed TLS support to v2.8
-
- - SPTool
- - Now appends CertTool arguments
-
-Resolved Issues
-^^^^^^^^^^^^^^^
-
-- Bootloader images
- - Fixed compilation errors for dual-root Chains of Trust caused by symbol
- collision
-
- - BL31
- - Fixed compilation errors on platforms with fewer than 4 cores caused
- by initialization code exceeding the end of the stacks
- - Fixed compilation errors when building a position-independent image
-
-- Build System
- - Fixed invalid empty version strings
- - Fixed compilation errors on Windows caused by a non-portable architecture
- revision comparison
-
-- Drivers
- - Arm GIC
- - Fixed spurious interrupts caused by a missing barrier
-
- - STM32 Flexible Memory Controller 2 (FMC2) NAND driver
- - Fixed runtime instability caused by incorrect error detection logic
-
- - STM32MP1 Clock driver
- - Fixed incorrectly-formatted log messages
- - Fixed runtime instability caused by improper clock gating procedures
-
- - STMicroelectronics Raw NAND driver
- - Fixed runtime instability caused by incorrect unit conversion when
- waiting for NAND readiness
-
-- Libraries
- - AMU
- - Fixed timeout errors caused by excess error logging
-
- - EL3 Runtime
- - Fixed runtime instability caused by improper register save/restore
- routine in EL2
-
- - FCONF
- - Fixed failure to initialize GICv3 caused by overly-strict device tree
- requirements
-
- - Measured Boot
- - Fixed driver errors caused by a missing default value for the
- ``HASH_ALG`` build option
-
- - SPE
- - Fixed feature detection check that prevented CPUs supporting SVE from
- detecting support for SPE in the non-secure world
-
- - Translation Tables
- - Fixed various MISRA-C 2012 static analysis violations
-
-- Platforms
- - Allwinner A64
- - Fixed USB issues on certain battery-powered device caused by
- improperly activated USB power rail
-
- - Arm
- - Fixed compilation errors caused by increase in BL2 size
- - Fixed compilation errors caused by missing Makefile dependencies to
- generated files when building the FIP
- - Fixed MISRA-C 2012 static analysis violations caused by unused
- structures in include directives intended to be feature-gated
-
- - Arm FPGA
- - Fixed initialization issues caused by incorrect MPIDR topology mapping
- logic
-
- - Arm RD-N1-edge
- - Fixed compilation errors caused by mismatched parentheses in Makefile
-
- - Arm SGI
- - Fixed crashes due to the flash memory used for cold reboot attack
- protection not being mapped
-
- - Intel Agilex
- - Fixed initialization issues caused by several compounding bugs
-
- - Marvell
- - Fixed compilation warnings caused by multiple Makefile inclusions
-
- - Marvell ARMADA A3K
- - Fixed boot issue in debug builds caused by checks on the BL33 load
- address that are not appropriate for this platform
-
- - Nvidia Tegra
- - Fixed incorrect delay timer reads
- - Fixed spurious interrupts in the non-secure world during cold boot
- caused by the arbitration bit in the memory controller not being
- cleared
- - Fixed faulty video memory resize sequence
-
- - Nvidia Tegra194
- - Fixed incorrect alignment of TZDRAM base address
-
- - NXP iMX8M
- - Fixed CPU hot-plug issues caused by race condition
-
- - STM32MP1
- - Fixed compilation errors in highly-parallel builds caused by incorrect
- Makefile dependencies
-
- - STM32MP157C-ED1
- - Fixed initialization issues caused by missing device tree hash node
-
- - Raspberry Pi 3
- - Fixed compilation errors caused by incorrect dependency ordering in
- Makefile
-
- - Rockchip
- - Fixed initialization issues caused by non-critical errors when parsing
- FDT being treated as critical
-
- - Rockchip RK3368
- - Fixed runtime instability caused by incorrect CPUID shift value
-
- - QEMU
- - Fixed compilation errors caused by incorrect dependency ordering in
- Makefile
-
- - QEMU SBSA
- - Fixed initialization issues caused by FDT exceeding reserved memory
- size
-
- - QTI
- - Fixed compilation errors caused by inclusion of a non-existent file
-
-- Services
- - FF-A (previously SPCI)
- - Fixed SPMD aborts caused by incorrect behaviour when the manifest is
- page-aligned
-
-- Tools
- - Fixed compilation issues when compiling tools from within their respective
- directories
-
- - FIPTool
- - Fixed command line parsing issues on Windows when using arguments
- whose names also happen to be a subset of another's
-
- - Marvell DoImage
- - Fixed PKCS signature verification errors at boot on some platforms
- caused by generation of misaligned images
-
-Known Issues
-^^^^^^^^^^^^
-
-- Platforms
- - NVIDIA Tegra
- - Signed comparison compiler warnings occurring in libfdt are currently
- being worked around by disabling the warning for the platform until
- the underlying issue is resolved in libfdt
-
-Version 2.3
------------
-
-New Features
-^^^^^^^^^^^^
-
-- Arm Architecture
- - Add support for Armv8.4-SecEL2 extension through the SPCI defined SPMD/SPMC
- components.
-
- - Build option to support EL2 context save and restore in the secure world
- (CTX_INCLUDE_EL2_REGS).
-
- - Add support for SMCCC v1.2 (introducing the new SMCCC_ARCH_SOC_ID SMC).
- Note that the support is compliant, but the SVE registers save/restore will
- be done as part of future S-EL2/SPM development.
-
-- BL-specific
- - Enhanced BL2 bootloader flow to load secure partitions based on firmware
- configuration data (fconf).
-
- - Changes necessary to support SEPARATE_NOBITS_REGION feature
-
- - TSP and BL2_AT_EL3: Add Position Independent Execution ``PIE`` support
-
-- Build System
- - Add support for documentation build as a target in Makefile
-
- - Add ``COT`` build option to select the Chain of Trust to use when the
- Trusted Boot feature is enabled (default: ``tbbr``).
-
- - Added creation and injection of secure partition packages into the FIP.
-
- - Build option to support SPMC component loading and run at S-EL1
- or S-EL2 (SPMD_SPM_AT_SEL2).
-
- - Enable MTE support
-
- - Enable Link Time Optimization in GCC
-
- - Enable -Wredundant-decls warning check
-
- - Makefile: Add support to optionally encrypt BL31 and BL32
-
- - Add support to pass the nt_fw_config DTB to OP-TEE.
-
- - Introduce per-BL ``CPPFLAGS``, ``ASFLAGS``, and ``LDFLAGS``
-
- - build_macros: Add CREATE_SEQ function to generate sequence of numbers
-
-- CPU Support
- - cortex-a57: Enable higher performance non-cacheable load forwarding
-
- - Hercules: Workaround for Errata 1688305
-
- - Klein: Support added for Klein CPU
-
- - Matterhorn: Support added for Matterhorn CPU
-
-- Drivers
- - auth: Add ``calc_hash`` function for hash calculation. Used for
- authentication of images when measured boot is enabled.
-
- - cryptocell: Add authenticated decryption framework, and support
- for CryptoCell-713 and CryptoCell-712 RSA 3K
-
- - gic600: Add support for multichip configuration and Clayton
- - gicv3: Introduce makefile, Add extended PPI and SPI range,
- Add support for probing multiple GIC Redistributor frames
- - gicv4: Add GICv4 extension for GIC driver
-
- - io: Add an IO abstraction layer to load encrypted firmwares
-
- - mhu: Derive doorbell base address
-
- - mtd: Add SPI-NOR, SPI-NAND, SPI-MEM, and raw NAND framework
-
- - scmi: Allow use of multiple SCMI channels
-
- - scu: Add a driver for snoop control unit
-
-- Libraries
- - coreboot: Add memory range parsing and use generic base address
-
- - compiler_rt: Import popcountdi2.c and popcountsi2.c files,
- aeabi_ldivmode.S file and dependencies
-
- - debugFS: Add DebugFS functionality
-
- - el3_runtime: Add support for enabling S-EL2
-
- - fconf: Add Firmware Configuration Framework (fconf) (experimental).
-
- - libc: Add memrchr function
-
- - locks: bakery: Use is_dcache_enabled() helper and add a DMB to
- the 'read_cache_op' macro
-
- - psci: Add support to enable different personality of the same soc.
-
- - xlat_tables_v2: Add support to pass shareability attribute for
- normal memory region, use get_current_el_maybe_constant() in
- is_dcache_enabled(), read-only xlat tables for BL31 memory, and
- add enable_mmu()
-
-- New Platforms Support
- - arm/arm_fpga: New platform support added for FPGA
-
- - arm/rddaniel: New platform support added for rd-daniel platform
-
- - brcm/stingray: New platform support added for Broadcom stingray platform
-
- - nvidia/tegra194: New platform support for Nvidia Tegra194 platform
-
-- Platforms
- - allwinner: Implement PSCI system suspend using SCPI, add a msgbox
- driver for use with SCPI, and reserve and map space for the SCP firmware
- - allwinner: axp: Add AXP805 support
- - allwinner: power: Add DLDO4 power rail
-
- - amlogic: axg: Add a build flag when using ATOS as BL32 and support for
- the A113D (AXG) platform
-
- - arm/a5ds: Add ethernet node and L2 cache node in devicetree
-
- - arm/common: Add support for the new `dualroot` chain of trust
- - arm/common: Add support for SEPARATE_NOBITS_REGION
- - arm/common: Re-enable PIE when RESET_TO_BL31=1
- - arm/common: Allow boards to specify second DRAM Base address
- and to define PLAT_ARM_TZC_FILTERS
-
- - arm/corstone700: Add support for mhuv2 and stack protector
-
- - arm/fvp: Add support for fconf in BL31 and SP_MIN. Populate power
- domain descriptor dynamically by leveraging fconf APIs.
- - arm/fvp: Add Cactus/Ivy Secure Partition information and use two
- instances of Cactus at S-EL1
- - arm/fvp: Add support to run BL32 in TDRAM and BL31 in secure DRAM
- - arm/fvp: Add support for GICv4 extension and BL2 hash calculation in BL1
-
- - arm/n1sdp: Setup multichip gic routing table, update platform macros
- for dual-chip setup, introduce platform information SDS region, add
- support to update presence of External LLC, and enable the
- NEOVERSE_N1_EXTERNAL_LLC flag
-
- - arm/rdn1edge: Add support for dual-chip configuration and use
- CREATE_SEQ helper macro to compare chip count
-
- - arm/sgm: Always use SCMI for SGM platforms
- - arm/sgm775: Add support for dynamic config using fconf
-
- - arm/sgi: Add multi-chip mode parameter in HW_CONFIG dts, macros for
- remote chip device region, chip_id and multi_chip_mode to platform
- variant info, and introduce number of chips macro
-
- - brcm: Add BL2 and BL31 support common across Broadcom platforms
- - brcm: Add iproc SPI Nor flash support, spi driver, emmc driver,
- and support to retrieve plat_toc_flags
-
- - hisilicon: hikey960: Enable system power off callback
-
- - intel: Enable bridge access, SiP SMC secure register access, and uboot
- entrypoint support
- - intel: Implement platform specific system reset 2
- - intel: Introduce mailbox response length handling
-
- - imx: console: Use CONSOLE_T_BASE for UART base address and generic console_t
- data structure
- - imx8mm: Provide uart base as build option and add the support for opteed spd
- on imx8mq/imx8mm
- - imx8qx: Provide debug uart num as build
- - imx8qm: Apply clk/pinmux configuration for DEBUG_CONSOLE and provide debug
- uart num as build param
-
- - marvell: a8k: Implement platform specific power off and add support
- for loading MG CM3 images
-
- - mediatek: mt8183: Add Vmodem/Vcore DVS init level
-
- - qemu: Support optional encryption of BL31 and BL32 images
- and ARM_LINUX_KERNEL_AS_BL33 to pass FDT address
- - qemu: Define ARMV7_SUPPORTS_VFP
- - qemu: Implement PSCI_CPU_OFF and qemu_system_off via semihosting
-
- - renesas: rcar_gen3: Add new board revision for M3ULCB
-
- - rockchip: Enable workaround for erratum 855873, claim a macro to enable
- hdcp feature for DP, enable power domains of rk3399 before reset, add
- support for UART3 as serial output, and initialize reset and poweroff
- GPIOs with known invalid value
-
- - rpi: Implement PSCI CPU_OFF, use MMIO accessor, autodetect Mini-UART
- vs. PL011 configuration, and allow using PL011 UART for RPi3/RPi4
- - rpi3: Include GPIO driver in all BL stages and use same "clock-less"
- setup scheme as RPi4
- - rpi3/4: Add support for offlining CPUs
-
- - st: stm32mp1: platform.mk: Support generating multiple images in one build,
- migrate to implicit rules, derive map file name from target name, generate
- linker script with fixed name, and use PHONY for the appropriate targets
- - st: stm32mp1: Add support for SPI-NOR, raw NAND, and SPI-NAND boot device,
- QSPI, FMC2 driver
- - st: stm32mp1: Use stm32mp_get_ddr_ns_size() function, set XN attribute for
- some areas in BL2, dynamically map DDR later and non-cacheable during its
- test, add a function to get non-secure DDR size, add DT helper for reg by
- name, and add compilation flags for boot devices
-
- - socionext: uniphier: Turn on ENABLE_PIE
-
- - ti: k3: Add PIE support
-
- - xilinx: versal: Add set wakeup source, client wakeup, query data, request
- wakeup, PM_INIT_FINALIZE, PM_GET_TRUSTZONE_VERSION, PM IOCTL, support for
- suspend related, and Get_ChipID APIs
- - xilinx: versal: Implement power down/restart related EEMI, SMC handler for
- EEMI, PLL related PM, clock related PM, pin control related PM, reset related
- PM, device related PM , APIs
- - xilinx: versal: Enable ipi mailbox service
- - xilinx: versal: Add get_api_version support and support to send PM API to PMC
- using IPI
- - xilinx: zynqmp: Add checksum support for IPI data, GET_CALLBACK_DATA
- function, support to query max divisor, CLK_SET_RATE_PARENT in gem clock
- node, support for custom type flags, LPD WDT clock to the pm_clock structure,
- idcodes for new RFSoC silicons ZU48DR and ZU49DR, and id for new RFSoC device
- ZU39DR
-
-- Security
- - Use Speculation Barrier instruction for v8.5+ cores
-
- - Add support for optional firmware encryption feature (experimental).
-
- - Introduce a new `dualroot` chain of trust.
-
- - aarch64: Prevent speculative execution past ERET
- - aarch32: Stop speculative execution past exception returns.
-
-- SPCI
- - Introduced the Secure Partition Manager Dispatcher (SPMD) component as a
- new standard service.
-
-- Tools
- - cert_create: Introduce CoT build option and TBBR CoT makefile,
- and define the dualroot CoT
-
- - encrypt_fw: Add firmware authenticated encryption tool
-
- - memory: Add show_memory script that prints a representation
- of the memory layout for the latest build
-
-Changed
-^^^^^^^
-
-- Arm Architecture
- - PIE: Make call to GDT relocation fixup generalized
-
-- BL-Specific
- - Increase maximum size of BL2 image
-
- - BL31: Discard .dynsym .dynstr .hash sections to make ENABLE_PIE work
- - BL31: Split into two separate memory regions
-
- - Unify BL linker scripts and reduce code duplication.
-
-- Build System
- - Changes to drive cert_create for dualroot CoT
-
- - Enable -Wlogical-op always
-
- - Enable -Wshadow always
-
- - Refactor the warning flags
-
- - PIE: Pass PIE options only to BL31
-
- - Reduce space lost to object alignment
-
- - Set lld as the default linker for Clang builds
-
- - Remove -Wunused-const-variable and -Wpadded warning
-
- - Remove -Wmissing-declarations warning from WARNING1 level
-
-- Drivers
- - authentication: Necessary fix in drivers to upgrade to mbedtls-2.18.0
-
- - console: Integrate UART base address in generic console_t
-
- - gicv3: Change API for GICR_IPRIORITYR accessors and separate
- GICD and GICR accessor functions
-
- - io: Change seek offset to signed long long and panic in case
- of io setup failure
-
- - smmu: SMMUv3: Changed retry loop to delay timer
-
- - tbbr: Reduce size of hash and ECDSA key buffers when possible
-
-- Library Code
- - libc: Consolidate the size_t, unified, and NULL definitions,
- and unify intmax_t and uintmax_t on AArch32/64
-
- - ROMLIB: Optimize memory layout when ROMLIB is used
-
- - xlat_tables_v2: Use ARRAY_SIZE in REGISTER_XLAT_CONTEXT_FULL_SPEC,
- merge REGISTER_XLAT_CONTEXT_{FULL_SPEC,RO_BASE_TABLE},
- and simplify end address checks in mmap_add_region_check()
-
-- Platforms
- - allwinner: Adjust SRAM A2 base to include the ARISC vectors, clean up MMU
- setup, reenable USE_COHERENT_MEM, remove unused include path, move the
- NOBITS region to SRAM A1, convert AXP803 regulator setup code into a driver,
- enable clock before resetting I2C/RSB
- - allwinner: h6: power: Switch to using the AXP driver
- - allwinner: a64: power: Use fdt_for_each_subnode, remove obsolete register
- check, remove duplicate DT check, and make sunxi_turn_off_soc static
- - allwinner: Build PMIC bus drivers only in BL31, clean up PMIC-related error
- handling, and synchronize PMIC enumerations
-
- - arm/a5ds: Change boot address to point to DDR address
-
- - arm/common: Check for out-of-bound accesses in the platform io policies
-
- - arm/corstone700: Updating the kernel arguments to support initramfs,
- use fdts DDR memory and XIP rootfs, and set UART clocks to 32MHz
-
- - arm/fvp: Modify multithreaded dts file of DynamIQ FVPs, slightly bump
- the stack size for bl1 and bl2, remove re-definition of topology related
- build options, stop reclaiming init code with Clang builds, and map only
- the needed DRAM region statically in BL31/SP_MIN
-
- - arm/juno: Maximize space allocated to SCP_BL2
-
- - arm/sgi: Bump bl1 RW limit, mark remote chip shared ram as non-cacheable,
- move GIC related constants to board files, include AFF3 affinity in core
- position calculation, move bl31_platform_setup to board file, and move
- topology information to board folder
-
- - common: Refactor load_auth_image_internal().
-
- - hisilicon: Remove uefi-tools in hikey and hikey960 documentation
-
- - intel: Modify non secure access function, BL31 address mapping, mailbox's
- get_config_status, and stratix10 BL31 parameter handling
- - intel: Remove un-needed checks for qspi driver r/w and s10 unused source code
- - intel: Change all global sip function to static
- - intel: Refactor common platform code
- - intel: Create SiP service header file
-
-
- - marvell: armada: scp_bl2: Allow loading up to 8 images
- - marvell: comphy-a3700: Support SGMII COMPHY power off and fix USB3
- powering on when on lane 2
- - marvell: Consolidate console register calls
-
- - mediatek: mt8183: Protect 4GB~8GB dram memory, refine GIC driver for
- low power scenarios, and switch PLL/CLKSQ/ck_off/axi_26m control to SPM
-
- - qemu: Update flash address map to keep FIP in secure FLASH0
-
- - renesas: rcar_gen3: Update IPL and Secure Monitor Rev.2.0.6, update DDR
- setting for H3, M3, M3N, change fixed destination address of BL31 and BL32,
- add missing #{address,size}-cells into generated DT, pass DT to OpTee OS,
- and move DDR drivers out of staging
-
- - rockchip: Make miniloader ddr_parameter handling optional, cleanup securing
- of ddr regions, move secure init to separate file, use base+size for secure
- ddr regions, bring TZRAM_SIZE values in lined, and prevent macro expansion
- in paths
-
- - rpi: Move plat_helpers.S to common
- - rpi3: gpio: Simplify GPIO setup
- - rpi4: Skip UART initialisation
-
- - st: stm32m1: Use generic console_t data structure, remove second
- QSPI flash instance, update for FMC2 pin muxing, and reduce MAX_XLAT_TABLES
- to 4
-
- - socionext: uniphier: Make on-chip SRAM and I/O register regions configurable
- - socionext: uniphier: Make PSCI related, counter control, UART, pinmon, NAND
- controller, and eMMC controller base addresses configurable
- - socionext: uniphier: Change block_addressing flag and the return value type
- of .is_usb_boot() to bool
- - socionext: uniphier: Run BL33 at EL2, call uniphier_scp_is_running() only
- when on-chip STM is supported, define PLAT_XLAT_TABLES_DYNAMIC only for BL2,
- support read-only xlat tables, use enable_mmu() in common function, shrink
- UNIPHIER_ROM_REGION_SIZE, prepare uniphier_soc_info() for next SoC, extend
- boot device detection for future SoCs, make all BL images completely
- position-independent, make uniphier_mmap_setup() work with PIE, pass SCP
- base address as a function parameter, set buffer offset and length for
- io_block dynamically, and use more mmap_add_dynamic_region() for loading
- images
-
- - spd/trusty: Disable error messages seen during boot, allow gic base to be
- specified with GICD_BASE, and allow getting trusty memsize from BL32_MEM_SIZE
- instead of TSP_SEC_MEM_SIZE
-
- - ti: k3: common: Enable ARM cluster power down and rename device IDs to
- be more consistent
- - ti: k3: drivers: ti_sci: Put sequence number in coherent memory and
- remove indirect structure of const data
-
- - xilinx: Move ipi mailbox svc to xilinx common
- - xilinx: zynqmp: Use GIC framework for warm restart
- - xilinx: zynqmp: pm: Move custom clock flags to typeflags, remove
- CLK_TOPSW_LSBUS from invalid clock list and rename FPD WDT clock ID
- - xilinx: versal: Increase OCM memory size for DEBUG builds and adjust
- cpu clock, Move versal_def.h and versal_private to include directory
-
-- Tools
- - sptool: Updated sptool to accommodate building secure partition packages.
-
-Resolved Issues
-^^^^^^^^^^^^^^^
-
-- Arm Architecture
- - Fix crash dump for lower EL
-
-- BL-Specific
- - Bug fix: Protect TSP prints with lock
-
- - Fix boot failures on some builds linked with ld.lld.
-
-- Build System
- - Fix clang build if CC is not in the path.
-
- - Fix 'BL stage' comment for build macros
-
-- Code Quality
- - coverity: Fix various MISRA violations including null pointer violations,
- C issues in BL1/BL2/BL31 and FDT helper functions, using boolean essential,
- type, and removing unnecessary header file and comparisons to LONG_MAX in
- debugfs devfip
-
- - Based on coding guidelines, replace all `unsigned long` depending on if
- fixed based on AArch32 or AArch64.
-
- - Unify type of "cpu_idx" and Platform specific defines across PSCI module.
-
-- Drivers
- - auth: Necessary fix in drivers to upgrade to mbedtls-2.18.0
-
- - delay_timer: Fix non-standard frequency issue in udelay
-
- - gicv3: Fix compiler dependent behavior
- - gic600: Fix include ordering according to the coding style and power up sequence
-
-- Library Code
- - el3_runtime: Fix stack pointer maintenance on EA handling path,
- fixup 'cm_setup_context' prototype, and adds TPIDR_EL2 register
- to the context save restore routines
-
- - libc: Fix SIZE_MAX on AArch32
-
- - locks: T589: Fix insufficient ordering guarantees in bakery lock
-
- - pmf: Fix 'tautological-constant-compare' error, Make the runtime
- instrumentation work on AArch32, and Simplify PMF helper macro
- definitions across header files
-
- - xlat_tables_v2: Fix assembler warning of PLAT_RO_XLAT_TABLES
-
-- Platforms
- - allwinner: Fix H6 GPIO and CCU memory map addresses and incorrect ARISC
- code patch offset check
-
- - arm/a5ds: Correct system freq and Cache Writeback Granule, and cleanup
- enable-method in devicetree
-
- - arm/fvp: Fix incorrect GIC mapping, BL31 load address and image size
- for RESET_TO_BL31=1, topology description of cpus for DynamIQ based
- FVP, and multithreaded FVP power domain tree
- - arm/fvp: spm-mm: Correcting instructions to build SPM for FVP
-
- - arm/common: Fix ROTPK hash generation for ECDSA encryption, BL2 bug in
- dynamic configuration initialisation, and current RECLAIM_INIT_CODE behavior
-
- - arm/rde1edge: Fix incorrect topology tree description
-
- - arm/sgi: Fix the incorrect check for SCMI channel ID
-
- - common: Flush dcache when storing timestamp
-
- - intel: Fix UEFI decompression issue, memory calibration, SMC SIP service,
- mailbox config return status, mailbox driver logic, FPGA manager on
- reconfiguration, and mailbox send_cmd issue
-
- - imx: Fix shift-overflow errors, the rdc memory region slot's offset,
- multiple definition of ipc_handle, missing inclusion of cdefs.h, and
- correct the SGIs that used for secure interrupt
-
- - mediatek: mt8183: Fix AARCH64 init fail on CPU0
-
- - rockchip: Fix definition of struct param_ddr_usage
-
- - rpi4: Fix documentation of armstub config entry
-
- - st: Correct io possible NULL pointer dereference and device_size type,
- nand xor_ecc.val assigned value, static analysis tool issues, and fix
- incorrect return value and correctly check pwr-regulators node
-
- - xilinx: zynqmp: Correct syscnt freq for QEMU and fix clock models
- and IDs of GEM-related clocks
-
-Known Issues
-^^^^^^^^^^^^
-
-- Build System
- - dtb: DTB creation not supported when building on a Windows host.
-
- This step in the build process is skipped when running on a Windows host. A
- known issue from the 1.6 release.
-
- - Intermittent assertion firing `ASSERT: services/spd/tspd/tspd_main.c:105`
-
-- Coverity
- - Intermittent Race condition in Coverity Jenkins Build Job
-
-- Platforms
- - arm/juno: System suspend from Linux does not function as documented in the
- user guide
-
- Following the instructions provided in the user guide document does not
- result in the platform entering system suspend state as expected. A message
- relating to the hdlcd driver failing to suspend will be emitted on the
- Linux terminal.
-
- - mediatek/mt6795: This platform does not build in this release
-
-Version 2.2
------------
-
-New Features
-^^^^^^^^^^^^
-
-- Architecture
- - Enable Pointer Authentication (PAuth) support for Secure World
- - Adds support for ARMv8.3-PAuth in BL1 SMC calls and
- BL2U image for firmware updates.
-
- - Enable Memory Tagging Extension (MTE) support in both secure and non-secure
- worlds
-
- - Adds support for the new Memory Tagging Extension arriving in
- ARMv8.5. MTE support is now enabled by default on systems that
- support it at EL0.
- - To enable it at ELx for both the non-secure and the secure
- world, the compiler flag ``CTX_INCLUDE_MTE_REGS`` includes register
- saving and restoring when necessary in order to prevent information
- leakage between the worlds.
-
- - Add support for Branch Target Identification (BTI)
-
-- Build System
- - Modify FVP makefile for CPUs that support both AArch64/32
-
- - AArch32: Allow compiling with soft-float toolchain
-
- - Makefile: Add default warning flags
-
- - Add Makefile check for PAuth and AArch64
-
- - Add compile-time errors for HW_ASSISTED_COHERENCY flag
-
- - Apply compile-time check for AArch64-only CPUs
-
- - build_macros: Add mechanism to prevent bin generation.
-
- - Add support for default stack-protector flag
-
- - spd: opteed: Enable NS_TIMER_SWITCH
-
- - plat/arm: Skip BL2U if RESET_TO_SP_MIN flag is set
-
- - Add new build option to let each platform select which implementation of spinlocks
- it wants to use
-
-- CPU Support
- - DSU: Workaround for erratum 798953 and 936184
-
- - Neoverse N1: Force cacheable atomic to near atomic
- - Neoverse N1: Workaround for erratum 1073348, 1130799, 1165347, 1207823,
- 1220197, 1257314, 1262606, 1262888, 1275112, 1315703, 1542419
-
- - Neoverse Zeus: Apply the MSR SSBS instruction
-
- - cortex-Hercules/HerculesAE: Support added for Cortex-Hercules and
- Cortex-HerculesAE CPUs
- - cortex-Hercules/HerculesAE: Enable AMU for Cortex-Hercules and Cortex-HerculesAE
-
- - cortex-a76AE: Support added for Cortex-A76AE CPU
- - cortex-a76: Workaround for erratum 1257314, 1262606, 1262888, 1275112,
- 1286807
-
- - cortex-a65/a65AE: Support added for Cortex-A65 and Cortex-A65AE CPUs
- - cortex-a65: Enable AMU for Cortex-A65
-
- - cortex-a55: Workaround for erratum 1221012
-
- - cortex-a35: Workaround for erratum 855472
-
- - cortex-a9: Workaround for erratum 794073
-
-- Drivers
- - console: Allow the console to register multiple times
-
- - delay: Timeout detection support
-
- - gicv3: Enabled multi-socket GIC redistributor frame discovery and migrated
- ARM platforms to the new API
-
- - Adds ``gicv3_rdistif_probe`` function that delegates the responsibility
- of discovering the corresponding redistributor base frame to each CPU
- itself.
-
- - sbsa: Add SBSA watchdog driver
-
- - st/stm32_hash: Add HASH driver
-
- - ti/uart: Add an AArch32 variant
-
-- Library at ROM (romlib)
- - Introduce BTI support in Library at ROM (romlib)
-
-- New Platforms Support
- - amlogic: g12a: New platform support added for the S905X2 (G12A) platform
- - amlogic: meson/gxl: New platform support added for Amlogic Meson
- S905x (GXL)
-
- - arm/a5ds: New platform support added for A5 DesignStart
-
- - arm/corstone: New platform support added for Corstone-700
-
- - intel: New platform support added for Agilex
-
- - mediatek: New platform support added for MediaTek mt8183
-
- - qemu/qemu_sbsa: New platform support added for QEMU SBSA platform
-
- - renesas/rcar_gen3: plat: New platform support added for D3
-
- - rockchip: New platform support added for px30
- - rockchip: New platform support added for rk3288
-
- - rpi: New platform support added for Raspberry Pi 4
-
-- Platforms
- - arm/common: Introduce wrapper functions to setup secure watchdog
-
- - arm/fvp: Add Delay Timer driver to BL1 and BL31 and option for defining
- platform DRAM2 base
- - arm/fvp: Add Linux DTS files for 32 bit threaded FVPs
-
- - arm/n1sdp: Add code for DDR ECC enablement and BL33 copy to DDR, Initialise CNTFRQ
- in Non Secure CNTBaseN
-
- - arm/juno: Use shared mbedtls heap between BL1 and BL2 and add basic support for
- dynamic config
-
- - imx: Basic support for PicoPi iMX7D, rdc module init, caam module init,
- aipstz init, IMX_SIP_GET_SOC_INFO, IMX_SIP_BUILDINFO added
-
- - intel: Add ncore ccu driver
-
- - mediatek/mt81*: Use new bl31_params_parse() helper
-
- - nvidia: tegra: Add support for multi console interface
-
- - qemu/qemu_sbsa: Adding memory mapping for both FLASH0/FLASH1
- - qemu: Added gicv3 support, new console interface in AArch32, and sub-platforms
-
- - renesas/rcar_gen3: plat: Add R-Car V3M support, new board revision for H3ULCB, DBSC4
- setting before self-refresh mode
-
- - socionext/uniphier: Support console based on multi-console
-
- - st: stm32mp1: Add OP-TEE, Avenger96, watchdog, LpDDR3, authentication support
- and general SYSCFG management
-
- - ti/k3: common: Add support for J721E, Use coherent memory for shared data, Trap all
- asynchronous bus errors to EL3
-
- - xilinx/zynqmp: Add support for multi console interface, Initialize IPI table from
- zynqmp_config_setup()
-
-- PSCI
- - Adding new optional PSCI hook ``pwr_domain_on_finish_late``
- - This PSCI hook ``pwr_domain_on_finish_late`` is similar to
- ``pwr_domain_on_finish`` but is guaranteed to be invoked when the
- respective core and cluster are participating in coherency.
-
-- Security
- - Speculative Store Bypass Safe (SSBS): Further enhance protection against Spectre
- variant 4 by disabling speculative loads/stores (SPSR.SSBS bit) by default.
-
- - UBSAN support and handlers
- - Adds support for the Undefined Behaviour sanitizer. There are two types of
- support offered - minimalistic trapping support which essentially immediately
- crashes on undefined behaviour and full support with full debug messages.
-
-- Tools
- - cert_create: Add support for bigger RSA key sizes (3KB and 4KB),
- previously the maximum size was 2KB.
-
- - fiptool: Add support to build fiptool on Windows.
-
-
-Changed
-^^^^^^^
-
-- Architecture
- - Refactor ARMv8.3 Pointer Authentication support code
-
- - backtrace: Strip PAC field when PAUTH is enabled
-
- - Prettify crash reporting output on AArch64.
-
- - Rework smc_unknown return code path in smc_handler
- - Leverage the existing ``el3_exit()`` return routine for smc_unknown return
- path rather than a custom set of instructions.
-
-- BL-Specific
- - Invalidate dcache build option for BL2 entry at EL3
-
- - Add missing support for BL2_AT_EL3 in XIP memory
-
-- Boot Flow
- - Add helper to parse BL31 parameters (both versions)
-
- - Factor out cross-BL API into export headers suitable for 3rd party code
-
- - Introduce lightweight BL platform parameter library
-
-- Drivers
- - auth: Memory optimization for Chain of Trust (CoT) description
-
- - bsec: Move bsec_mode_is_closed_device() service to platform
-
- - cryptocell: Move Cryptocell specific API into driver
-
- - gicv3: Prevent pending G1S interrupt from becoming G0 interrupt
-
- - mbedtls: Remove weak heap implementation
-
- - mmc: Increase delay between ACMD41 retries
- - mmc: stm32_sdmmc2: Correctly manage block size
- - mmc: stm32_sdmmc2: Manage max-frequency property from DT
-
- - synopsys/emmc: Do not change FIFO TH as this breaks some platforms
- - synopsys: Update synopsys drivers to not rely on undefined overflow behaviour
-
- - ufs: Extend the delay after reset to wait for some slower chips
-
-- Platforms
- - amlogic/meson/gxl: Remove BL2 dependency from BL31
-
- - arm/common: Shorten the Firmware Update (FWU) process
-
- - arm/fvp: Remove GIC initialisation from secondary core cold boot
-
- - arm/sgm: Temporarily disable shared Mbed TLS heap for SGM
-
- - hisilicon: Update hisilicon drivers to not rely on undefined overflow behaviour
-
- - imx: imx8: Replace PLAT_IMX8* with PLAT_imx8*, remove duplicated linker symbols and
- deprecated code include, keep only IRQ 32 unmasked, enable all power domain by default
-
- - marvell: Prevent SError accessing PCIe link, Switch to xlat_tables_v2, do not rely on
- argument passed via smc, make sure that comphy init will use correct address
-
- - mediatek: mt8173: Refactor RTC and PMIC drivers
- - mediatek: mt8173: Apply MULTI_CONSOLE framework
-
- - nvidia: Tegra: memctrl_v2: fix "overflow before widen" coverity issue
-
- - qemu: Simplify the image size calculation, Move and generalise FDT PSCI fixup, move
- gicv2 codes to separate file
-
- - renesas/rcar_gen3: Convert to multi-console API, update QoS setting, Update IPL and
- Secure Monitor Rev2.0.4, Change to restore timer counter value at resume, Update DDR
- setting rev.0.35, qos: change subslot cycle, Change periodic write DQ training option.
-
- - rockchip: Allow SOCs with undefined wfe check bits, Streamline and complete UARTn_BASE
- macros, drop rockchip-specific imported linker symbols for bl31, Disable binary generation
- for all SOCs, Allow console device to be set by DTB, Use new bl31_params_parse functions
-
- - rpi/rpi3: Move shared rpi3 files into common directory
-
- - socionext/uniphier: Set CONSOLE_FLAG_TRANSLATE_CRLF and clean up console driver
- - socionext/uniphier: Replace DIV_ROUND_UP() with div_round_up() from utils_def.h
-
- - st/stm32mp: Split stm32mp_io_setup function, move stm32_get_gpio_bank_clock() to private
- file, correctly handle Clock Spreading Generator, move oscillator functions to generic file,
- realign device tree files with internal devs, enable RTCAPB clock for dual-core chips, use a
- common function to check spinlock is available, move check_header() to common code
-
- - ti/k3: Enable SEPARATE_CODE_AND_RODATA by default, Remove shared RAM space,
- Drop _ADDRESS from K3_USART_BASE to match other defines, Remove MSMC port
- definitions, Allow USE_COHERENT_MEM for K3, Set L2 latency on A72 cores
-
-- PSCI
- - PSCI: Lookup list of parent nodes to lock only once
-
-- Secure Partition Manager (SPM): SPCI Prototype
- - Fix service UUID lookup
-
- - Adjust size of virtual address space per partition
-
- - Refactor xlat context creation
-
- - Move shim layer to TTBR1_EL1
-
- - Ignore empty regions in resource description
-
-- Security
- - Refactor SPSR initialisation code
-
- - SMMUv3: Abort DMA transactions
- - For security DMA should be blocked at the SMMU by default unless explicitly
- enabled for a device. SMMU is disabled after reset with all streams bypassing
- the SMMU, and abortion of all incoming transactions implements a default deny
- policy on reset.
- - Moves ``bl1_platform_setup()`` function from arm_bl1_setup.c to FVP platforms'
- fvp_bl1_setup.c and fvp_ve_bl1_setup.c files.
-
-- Tools
- - cert_create: Remove RSA PKCS#1 v1.5 support
-
-
-Resolved Issues
-^^^^^^^^^^^^^^^
-
-- Architecture
- - Fix the CAS spinlock implementation by adding a missing DSB in ``spin_unlock()``
-
- - AArch64: Fix SCTLR bit definitions
- - Removes incorrect ``SCTLR_V_BIT`` definition and adds definitions for
- ARMv8.3-Pauth `EnIB`, `EnDA` and `EnDB` bits.
-
- - Fix restoration of PAuth context
- - Replace call to ``pauth_context_save()`` with ``pauth_context_restore()`` in
- case of unknown SMC call.
-
-- BL-Specific Issues
- - Fix BL31 crash reporting on AArch64 only platforms
-
-- Build System
- - Remove several warnings reported with W=2 and W=1
-
-- Code Quality Issues
- - SCTLR and ACTLR are 32-bit for AArch32 and 64-bit for AArch64
- - Unify type of "cpu_idx" across PSCI module.
- - Assert if power level value greater then PSCI_INVALID_PWR_LVL
- - Unsigned long should not be used as per coding guidelines
- - Reduce the number of memory leaks in cert_create
- - Fix type of cot_desc_ptr
- - Use explicit-width data types in AAPCS parameter structs
- - Add python configuration for editorconfig
- - BL1: Fix type consistency
-
- - Enable -Wshift-overflow=2 to check for undefined shift behavior
- - Updated upstream platforms to not rely on undefined overflow behaviour
-
-- Coverity Quality Issues
- - Remove GGC ignore -Warray-bounds
- - Fix Coverity #261967, Infinite loop
- - Fix Coverity #343017, Missing unlock
- - Fix Coverity #343008, Side affect in assertion
- - Fix Coverity #342970, Uninitialized scalar variable
-
-- CPU Support
- - cortex-a12: Fix MIDR mask
-
-- Drivers
- - console: Remove Arm console unregister on suspend
-
- - gicv3: Fix support for full SPI range
-
- - scmi: Fix wrong payload length
-
-- Library Code
- - libc: Fix sparse warning for __assert()
-
- - libc: Fix memchr implementation
-
-- Platforms
- - rpi: rpi3: Fix compilation error when stack protector is enabled
-
- - socionext/uniphier: Fix compilation fail for SPM support build config
-
- - st/stm32mp1: Fix TZC400 configuration against non-secure DDR
-
- - ti/k3: common: Fix RO data area size calculation
-
-- Security
- - AArch32: Disable Secure Cycle Counter
- - Changes the implementation for disabling Secure Cycle Counter.
- For ARMv8.5 the counter gets disabled by setting ``SDCR.SCCD`` bit on
- CPU cold/warm boot. For the earlier architectures PMCR register is
- saved/restored on secure world entry/exit from/to Non-secure state,
- and cycle counting gets disabled by setting PMCR.DP bit.
- - AArch64: Disable Secure Cycle Counter
- - For ARMv8.5 the counter gets disabled by setting ``MDCR_El3.SCCD`` bit on
- CPU cold/warm boot. For the earlier architectures PMCR_EL0 register is
- saved/restored on secure world entry/exit from/to Non-secure state,
- and cycle counting gets disabled by setting PMCR_EL0.DP bit.
-
-Deprecations
-^^^^^^^^^^^^
-
-- Common Code
- - Remove MULTI_CONSOLE_API flag and references to it
-
- - Remove deprecated `plat_crash_console_*`
-
- - Remove deprecated interfaces `get_afflvl_shift`, `mpidr_mask_lower_afflvls`, `eret`
-
- - AARCH32/AARCH64 macros are now deprecated in favor of ``__aarch64__``
-
- - ``__ASSEMBLY__`` macro is now deprecated in favor of ``__ASSEMBLER__``
-
-- Drivers
- - console: Removed legacy console API
- - console: Remove deprecated finish_console_register
-
- - tzc: Remove deprecated types `tzc_action_t` and `tzc_region_attributes_t`
-
-- Secure Partition Manager (SPM):
- - Prototype SPCI-based SPM (services/std_svc/spm) will be replaced with alternative
- methods of secure partitioning support.
-
-Known Issues
-^^^^^^^^^^^^
-
-- Build System Issues
- - dtb: DTB creation not supported when building on a Windows host.
-
- This step in the build process is skipped when running on a Windows host. A
- known issue from the 1.6 release.
-
-- Platform Issues
- - arm/juno: System suspend from Linux does not function as documented in the
- user guide
-
- Following the instructions provided in the user guide document does not
- result in the platform entering system suspend state as expected. A message
- relating to the hdlcd driver failing to suspend will be emitted on the
- Linux terminal.
-
- - mediatek/mt6795: This platform does not build in this release
-
-Version 2.1
------------
-
-New Features
-^^^^^^^^^^^^
-
-- Architecture
- - Support for ARMv8.3 pointer authentication in the normal and secure worlds
-
- The use of pointer authentication in the normal world is enabled whenever
- architectural support is available, without the need for additional build
- flags.
-
- Use of pointer authentication in the secure world remains an
- experimental configuration at this time. Using both the ``ENABLE_PAUTH``
- and ``CTX_INCLUDE_PAUTH_REGS`` build flags, pointer authentication can be
- enabled in EL3 and S-EL1/0.
-
- See the :ref:`Firmware Design` document for additional details on the use
- of pointer authentication.
-
- - Enable Data Independent Timing (DIT) in EL3, where supported
-
-- Build System
- - Support for BL-specific build flags
-
- - Support setting compiler target architecture based on ``ARM_ARCH_MINOR``
- build option.
-
- - New ``RECLAIM_INIT_CODE`` build flag:
-
- A significant amount of the code used for the initialization of BL31 is
- not needed again after boot time. In order to reduce the runtime memory
- footprint, the memory used for this code can be reclaimed after
- initialization.
-
- Certain boot-time functions were marked with the ``__init`` attribute to
- enable this reclamation.
-
-- CPU Support
- - cortex-a76: Workaround for erratum 1073348
- - cortex-a76: Workaround for erratum 1220197
- - cortex-a76: Workaround for erratum 1130799
-
- - cortex-a75: Workaround for erratum 790748
- - cortex-a75: Workaround for erratum 764081
-
- - cortex-a73: Workaround for erratum 852427
- - cortex-a73: Workaround for erratum 855423
-
- - cortex-a57: Workaround for erratum 817169
- - cortex-a57: Workaround for erratum 814670
-
- - cortex-a55: Workaround for erratum 903758
- - cortex-a55: Workaround for erratum 846532
- - cortex-a55: Workaround for erratum 798797
- - cortex-a55: Workaround for erratum 778703
- - cortex-a55: Workaround for erratum 768277
-
- - cortex-a53: Workaround for erratum 819472
- - cortex-a53: Workaround for erratum 824069
- - cortex-a53: Workaround for erratum 827319
-
- - cortex-a17: Workaround for erratum 852423
- - cortex-a17: Workaround for erratum 852421
-
- - cortex-a15: Workaround for erratum 816470
- - cortex-a15: Workaround for erratum 827671
-
-- Documentation
- - Exception Handling Framework documentation
-
- - Library at ROM (romlib) documentation
-
- - RAS framework documentation
-
- - Coding Guidelines document
-
-- Drivers
- - ccn: Add API for setting and reading node registers
- - Adds ``ccn_read_node_reg`` function
- - Adds ``ccn_write_node_reg`` function
-
- - partition: Support MBR partition entries
-
- - scmi: Add ``plat_css_get_scmi_info`` function
-
- Adds a new API ``plat_css_get_scmi_info`` which lets the platform
- register a platform-specific instance of ``scmi_channel_plat_info_t`` and
- remove the default values
-
- - tzc380: Add TZC-380 TrustZone Controller driver
-
- - tzc-dmc620: Add driver to manage the TrustZone Controller within the
- DMC-620 Dynamic Memory Controller
-
-- Library at ROM (romlib)
- - Add platform-specific jump table list
-
- - Allow patching of romlib functions
-
- This change allows patching of functions in the romlib. This can be done by
- adding "patch" at the end of the jump table entry for the function that
- needs to be patched in the file jmptbl.i.
-
-- Library Code
- - Support non-LPAE-enabled MMU tables in AArch32
-
- - mmio: Add ``mmio_clrsetbits_16`` function
- - 16-bit variant of ``mmio_clrsetbits``
-
- - object_pool: Add Object Pool Allocator
- - Manages object allocation using a fixed-size static array
- - Adds ``pool_alloc`` and ``pool_alloc_n`` functions
- - Does not provide any functions to free allocated objects (by design)
-
- - libc: Added ``strlcpy`` function
-
- - libc: Import ``strrchr`` function from FreeBSD
-
- - xlat_tables: Add support for ARMv8.4-TTST
-
- - xlat_tables: Support mapping regions without an explicitly specified VA
-
-- Math
- - Added softudiv macro to support software division
-
-- Memory Partitioning And Monitoring (MPAM)
- - Enabled MPAM EL2 traps (``MPAMHCR_EL2`` and ``MPAM_EL2``)
-
-- Platforms
- - amlogic: Add support for Meson S905 (GXBB)
-
- - arm/fvp_ve: Add support for FVP Versatile Express platform
-
- - arm/n1sdp: Add support for Neoverse N1 System Development platform
-
- - arm/rde1edge: Add support for Neoverse E1 platform
-
- - arm/rdn1edge: Add support for Neoverse N1 platform
-
- - arm: Add support for booting directly to Linux without an intermediate
- loader (AArch32)
-
- - arm/juno: Enable new CPU errata workarounds for A53 and A57
-
- - arm/juno: Add romlib support
-
- Building a combined BL1 and ROMLIB binary file with the correct page
- alignment is now supported on the Juno platform. When ``USE_ROMLIB`` is set
- for Juno, it generates the combined file ``bl1_romlib.bin`` which needs to
- be used instead of bl1.bin.
-
- - intel/stratix: Add support for Intel Stratix 10 SoC FPGA platform
-
- - marvell: Add support for Armada-37xx SoC platform
-
- - nxp: Add support for i.MX8M and i.MX7 Warp7 platforms
-
- - renesas: Add support for R-Car Gen3 platform
-
- - xilinx: Add support for Versal ACAP platforms
-
-- Position-Independent Executable (PIE)
-
- PIE support has initially been added to BL31. The ``ENABLE_PIE`` build flag is
- used to enable or disable this functionality as required.
-
-- Secure Partition Manager
- - New SPM implementation based on SPCI Alpha 1 draft specification
-
- A new version of SPM has been implemented, based on the SPCI (Secure
- Partition Client Interface) and SPRT (Secure Partition Runtime) draft
- specifications.
-
- The new implementation is a prototype that is expected to undergo intensive
- rework as the specifications change. It has basic support for multiple
- Secure Partitions and Resource Descriptions.
-
- The older version of SPM, based on MM (ARM Management Mode Interface
- Specification), is still present in the codebase. A new build flag,
- ``SPM_MM`` has been added to allow selection of the desired implementation.
- This flag defaults to 1, selecting the MM-based implementation.
-
-- Security
- - Spectre Variant-1 mitigations (``CVE-2017-5753``)
-
- - Use Speculation Store Bypass Safe (SSBS) functionality where available
-
- Provides mitigation against ``CVE-2018-19440`` (Not saving x0 to x3
- registers can leak information from one Normal World SMC client to another)
-
-
-Changed
-^^^^^^^
-
-- Build System
- - Warning levels are now selectable with ``W=<1,2,3>``
-
- - Removed unneeded include paths in PLAT_INCLUDES
-
- - "Warnings as errors" (Werror) can be disabled using ``E=0``
-
- - Support totally quiet output with ``-s`` flag
-
- - Support passing options to checkpatch using ``CHECKPATCH_OPTS=<opts>``
-
- - Invoke host compiler with ``HOSTCC / HOSTCCFLAGS`` instead of ``CC / CFLAGS``
-
- - Make device tree pre-processing similar to U-boot/Linux by:
- - Creating separate ``CPPFLAGS`` for DT preprocessing so that compiler
- options specific to it can be accommodated.
- - Replacing ``CPP`` with ``PP`` for DT pre-processing
-
-- CPU Support
- - Errata report function definition is now mandatory for CPU support files
-
- CPU operation files must now define a ``<name>_errata_report`` function to
- print errata status. This is no longer a weak reference.
-
-- Documentation
- - Migrated some content from GitHub wiki to ``docs/`` directory
-
- - Security advisories now have CVE links
-
- - Updated copyright guidelines
-
-- Drivers
- - console: The ``MULTI_CONSOLE_API`` framework has been rewritten in C
-
- - console: Ported multi-console driver to AArch32
-
- - gic: Remove 'lowest priority' constants
-
- Removed ``GIC_LOWEST_SEC_PRIORITY`` and ``GIC_LOWEST_NS_PRIORITY``.
- Platforms should define these if required, or instead determine the correct
- priority values at runtime.
-
- - delay_timer: Check that the Generic Timer extension is present
-
- - mmc: Increase command reply timeout to 10 milliseconds
-
- - mmc: Poll eMMC device status to ensure ``EXT_CSD`` command completion
-
- - mmc: Correctly check return code from ``mmc_fill_device_info``
-
-- External Libraries
-
- - libfdt: Upgraded from 1.4.2 to 1.4.6-9
-
- - mbed TLS: Upgraded from 2.12 to 2.16
-
- This change incorporates fixes for security issues that should be reviewed
- to determine if they are relevant for software implementations using
- Trusted Firmware-A. See the `mbed TLS releases`_ page for details on
- changes from the 2.12 to the 2.16 release.
-
-- Library Code
- - compiler-rt: Updated ``lshrdi3.c`` and ``int_lib.h`` with changes from
- LLVM master branch (r345645)
-
- - cpu: Updated macro that checks need for ``CVE-2017-5715`` mitigation
-
- - libc: Made setjmp and longjmp C standard compliant
-
- - libc: Allowed overriding the default libc (use ``OVERRIDE_LIBC``)
-
- - libc: Moved setjmp and longjmp to the ``libc/`` directory
-
-- Platforms
- - Removed Mbed TLS dependency from plat_bl_common.c
-
- - arm: Removed unused ``ARM_MAP_BL_ROMLIB`` macro
-
- - arm: Removed ``ARM_BOARD_OPTIMISE_MEM`` feature and build flag
-
- - arm: Moved several components into ``drivers/`` directory
-
- This affects the SDS, SCP, SCPI, MHU and SCMI components
-
- - arm/juno: Increased maximum BL2 image size to ``0xF000``
-
- This change was required to accommodate a larger ``libfdt`` library
-
-- SCMI
- - Optimized bakery locks when hardware-assisted coherency is enabled using the
- ``HW_ASSISTED_COHERENCY`` build flag
-
-- SDEI
- - Added support for unconditionally resuming secure world execution after
- |SDEI| event processing completes
-
- |SDEI| interrupts, although targeting EL3, occur on behalf of the non-secure
- world, and may have higher priority than secure world
- interrupts. Therefore they might preempt secure execution and yield
- execution to the non-secure |SDEI| handler. Upon completion of |SDEI| event
- handling, resume secure execution if it was preempted.
-
-- Translation Tables (XLAT)
- - Dynamically detect need for ``Common not Private (TTBRn_ELx.CnP)`` bit
-
- Properly handle the case where ``ARMv8.2-TTCNP`` is implemented in a CPU
- that does not implement all mandatory v8.2 features (and so must claim to
- implement a lower architecture version).
-
-
-Resolved Issues
-^^^^^^^^^^^^^^^
-
-- Architecture
- - Incorrect check for SSBS feature detection
-
- - Unintentional register clobber in AArch32 reset_handler function
-
-- Build System
- - Dependency issue during DTB image build
-
- - Incorrect variable expansion in Arm platform makefiles
-
- - Building on Windows with verbose mode (``V=1``) enabled is broken
-
- - AArch32 compilation flags is missing ``$(march32-directive)``
-
-- BL-Specific Issues
- - bl2: ``uintptr_t is not defined`` error when ``BL2_IN_XIP_MEM`` is defined
-
- - bl2: Missing prototype warning in ``bl2_arch_setup``
-
- - bl31: Omission of Global Offset Table (GOT) section
-
-- Code Quality Issues
- - Multiple MISRA compliance issues
-
- - Potential NULL pointer dereference (Coverity-detected)
-
-- Drivers
- - mmc: Local declaration of ``scr`` variable causes a cache issue when
- invalidating after the read DMA transfer completes
-
- - mmc: ``ACMD41`` does not send voltage information during initialization,
- resulting in the command being treated as a query. This prevents the
- command from initializing the controller.
-
- - mmc: When checking device state using ``mmc_device_state()`` there are no
- retries attempted in the event of an error
-
- - ccn: Incorrect Region ID calculation for RN-I nodes
-
- - console: ``Fix MULTI_CONSOLE_API`` when used as a crash console
-
- - partition: Improper NULL checking in gpt.c
-
- - partition: Compilation failure in ``VERBOSE`` mode (``V=1``)
-
-- Library Code
- - common: Incorrect check for Address Authentication support
-
- - xlat: Fix XLAT_V1 / XLAT_V2 incompatibility
-
- The file ``arm_xlat_tables.h`` has been renamed to ``xlat_tables_compat.h``
- and has been moved to a common folder. This header can be used to guarantee
- compatibility, as it includes the correct header based on
- ``XLAT_TABLES_LIB_V2``.
-
- - xlat: armclang unused-function warning on ``xlat_clean_dcache_range``
-
- - xlat: Invalid ``mm_cursor`` checks in ``mmap_add`` and ``mmap_add_ctx``
-
- - sdei: Missing ``context.h`` header
-
-- Platforms
- - common: Missing prototype warning for ``plat_log_get_prefix``
-
- - arm: Insufficient maximum BL33 image size
-
- - arm: Potential memory corruption during BL2-BL31 transition
-
- On Arm platforms, the BL2 memory can be overlaid by BL31/BL32. The memory
- descriptors describing the list of executable images are created in BL2
- R/W memory, which could be possibly corrupted later on by BL31/BL32 due
- to overlay. This patch creates a reserved location in SRAM for these
- descriptors and are copied over by BL2 before handing over to next BL
- image.
-
- - juno: Invalid behaviour when ``CSS_USE_SCMI_SDS_DRIVER`` is not set
-
- In ``juno_pm.c`` the ``css_scmi_override_pm_ops`` function was used
- regardless of whether the build flag was set. The original behaviour has
- been restored in the case where the build flag is not set.
-
-- Tools
- - fiptool: Incorrect UUID parsing of blob parameters
-
- - doimage: Incorrect object rules in Makefile
-
-
-Deprecations
-^^^^^^^^^^^^
-
-- Common Code
- - ``plat_crash_console_init`` function
-
- - ``plat_crash_console_putc`` function
-
- - ``plat_crash_console_flush`` function
-
- - ``finish_console_register`` macro
-
-- AArch64-specific Code
- - helpers: ``get_afflvl_shift``
-
- - helpers: ``mpidr_mask_lower_afflvls``
-
- - helpers: ``eret``
-
-- Secure Partition Manager (SPM)
- - Boot-info structure
-
-
-Known Issues
-^^^^^^^^^^^^
-
-- Build System Issues
- - dtb: DTB creation not supported when building on a Windows host.
-
- This step in the build process is skipped when running on a Windows host. A
- known issue from the 1.6 release.
-
-- Platform Issues
- - arm/juno: System suspend from Linux does not function as documented in the
- user guide
-
- Following the instructions provided in the user guide document does not
- result in the platform entering system suspend state as expected. A message
- relating to the hdlcd driver failing to suspend will be emitted on the
- Linux terminal.
-
- - arm/juno: The firmware update use-cases do not work with motherboard
- firmware version < v1.5.0 (the reset reason is not preserved). The Linaro
- 18.04 release has MB v1.4.9. The MB v1.5.0 is available in Linaro 18.10
- release.
-
- - mediatek/mt6795: This platform does not build in this release
-
-Version 2.0
------------
-
-New Features
-^^^^^^^^^^^^
-
-- Removal of a number of deprecated APIs
-
- - A new Platform Compatibility Policy document has been created which
- references a wiki page that maintains a listing of deprecated
- interfaces and the release after which they will be removed.
-
- - All deprecated interfaces except the MULTI_CONSOLE_API have been removed
- from the code base.
-
- - Various Arm and partner platforms have been updated to remove the use of
- removed APIs in this release.
-
- - This release is otherwise unchanged from 1.6 release
-
-Issues resolved since last release
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- No issues known at 1.6 release resolved in 2.0 release
-
-Known Issues
-^^^^^^^^^^^^
-
-- DTB creation not supported when building on a Windows host. This step in the
- build process is skipped when running on a Windows host. Known issue from
- 1.6 version.
-
-- As a result of removal of deprecated interfaces the Nvidia Tegra, Marvell
- Armada 8K and MediaTek MT6795 platforms do not build in this release.
- Also MediaTek MT8173, NXP QorIQ LS1043A, NXP i.MX8QX, NXP i.MX8QMa,
- Rockchip RK3328, Rockchip RK3368 and Rockchip RK3399 platforms have not been
- confirmed to be working after the removal of the deprecated interfaces
- although they do build.
-
-Version 1.6
------------
-
-New Features
-^^^^^^^^^^^^
-
-- Addressing Speculation Security Vulnerabilities
-
- - Implement static workaround for CVE-2018-3639 for AArch32 and AArch64
-
- - Add support for dynamic mitigation for CVE-2018-3639
-
- - Implement dynamic mitigation for CVE-2018-3639 on Cortex-A76
-
- - Ensure |SDEI| handler executes with CVE-2018-3639 mitigation enabled
-
-- Introduce RAS handling on AArch64
-
- - Some RAS extensions are mandatory for Armv8.2 CPUs, with others
- mandatory for Armv8.4 CPUs however, all extensions are also optional
- extensions to the base Armv8.0 architecture.
-
- - The Armv8 RAS Extensions introduced Standard Error Records which are a
- set of standard registers to configure RAS node policy and allow RAS
- Nodes to record and expose error information for error handling agents.
-
- - Capabilities are provided to support RAS Node enumeration and iteration
- along with individual interrupt registrations and fault injections
- support.
-
- - Introduce handlers for Uncontainable errors, Double Faults and EL3
- External Aborts
-
-- Enable Memory Partitioning And Monitoring (MPAM) for lower EL's
-
- - Memory Partitioning And Monitoring is an Armv8.4 feature that enables
- various memory system components and resources to define partitions.
- Software running at various ELs can then assign themselves to the
- desired partition to control their performance aspects.
-
- - When ENABLE_MPAM_FOR_LOWER_ELS is set to 1, EL3 allows
- lower ELs to access their own MPAM registers without trapping to EL3.
- This patch however, doesn't make use of partitioning in EL3; platform
- initialisation code should configure and use partitions in EL3 if
- required.
-
-- Introduce ROM Lib Feature
-
- - Support combining several libraries into a self-called "romlib" image,
- that may be shared across images to reduce memory footprint. The romlib
- image is stored in ROM but is accessed through a jump-table that may be
- stored in read-write memory, allowing for the library code to be patched.
-
-- Introduce Backtrace Feature
-
- - This function displays the backtrace, the current EL and security state
- to allow a post-processing tool to choose the right binary to interpret
- the dump.
-
- - Print backtrace in assert() and panic() to the console.
-
-- Code hygiene changes and alignment with MISRA C-2012 guideline with fixes
- addressing issues complying to the following rules:
-
- - MISRA rules 4.9, 5.1, 5.3, 5.7, 8.2-8.5, 8.8, 8.13, 9.3, 10.1,
- 10.3-10.4, 10.8, 11.3, 11.6, 12.1, 14.4, 15.7, 16.1-16.7, 17.7-17.8,
- 20.7, 20.10, 20.12, 21.1, 21.15, 22.7
-
- - Clean up the usage of void pointers to access symbols
-
- - Increase usage of static qualifier to locally used functions and data
-
- - Migrated to use of u_register_t for register read/write to better
- match AArch32 and AArch64 type sizes
-
- - Use int-ll64 for both AArch32 and AArch64 to assist in consistent
- format strings between architectures
-
- - Clean up TF-A libc by removing non arm copyrighted implementations
- and replacing them with modified FreeBSD and SCC implementations
-
-- Various changes to support Clang linker and assembler
-
- - The clang assembler/preprocessor is used when Clang is selected. However,
- the clang linker is not used because it is unable to link TF-A objects
- due to immaturity of clang linker functionality at this time.
-
-- Refactor support APIs into Libraries
-
- - Evolve libfdt, mbed TLS library and standard C library sources as
- proper libraries that TF-A may be linked against.
-
-- CPU Enhancements
-
- - Add CPU support for Cortex-Ares and Cortex-A76
-
- - Add AMU support for Cortex-Ares
-
- - Add initial CPU support for Cortex-Deimos
-
- - Add initial CPU support for Cortex-Helios
-
- - Implement dynamic mitigation for CVE-2018-3639 on Cortex-A76
-
- - Implement Cortex-Ares erratum 1043202 workaround
-
- - Implement DSU erratum 936184 workaround
-
- - Check presence of fix for errata 843419 in Cortex-A53
-
- - Check presence of fix for errata 835769 in Cortex-A53
-
-- Translation Tables Enhancements
-
- - The xlat v2 library has been refactored in order to be reused by
- different TF components at different EL's including the addition of EL2.
- Some refactoring to make the code more generic and less specific to TF,
- in order to reuse the library outside of this project.
-
-- SPM Enhancements
-
- - General cleanups and refactoring to pave the way to multiple partitions
- support
-
-- SDEI Enhancements
-
- - Allow platforms to define explicit events
-
- - Determine client EL from NS context's SCR_EL3
-
- - Make dispatches synchronous
-
- - Introduce jump primitives for BL31
-
- - Mask events after CPU wakeup in |SDEI| dispatcher to conform to the
- specification
-
-- Misc TF-A Core Common Code Enhancements
-
- - Add support for eXecute In Place (XIP) memory in BL2
-
- - Add support for the SMC Calling Convention 2.0
-
- - Introduce External Abort handling on AArch64
- External Abort routed to EL3 was reported as an unhandled exception
- and caused a panic. This change enables Trusted Firmware-A to handle
- External Aborts routed to EL3.
-
- - Save value of ACTLR_EL1 implementation-defined register in the CPU
- context structure rather than forcing it to 0.
-
- - Introduce ARM_LINUX_KERNEL_AS_BL33 build option, which allows BL31 to
- directly jump to a Linux kernel. This makes for a quicker and simpler
- boot flow, which might be useful in some test environments.
-
- - Add dynamic configurations for BL31, BL32 and BL33 enabling support for
- Chain of Trust (COT).
-
- - Make TF UUID RFC 4122 compliant
-
-- New Platform Support
-
- - Arm SGI-575
-
- - Arm SGM-775
-
- - Allwinner sun50i_64
-
- - Allwinner sun50i_h6
-
- - NXP QorIQ LS1043A
-
- - NXP i.MX8QX
-
- - NXP i.MX8QM
-
- - NXP i.MX7Solo WaRP7
-
- - TI K3
-
- - Socionext Synquacer SC2A11
-
- - Marvell Armada 8K
-
- - STMicroelectronics STM32MP1
-
-- Misc Generic Platform Common Code Enhancements
-
- - Add MMC framework that supports both eMMC and SD card devices
-
-- Misc Arm Platform Common Code Enhancements
-
- - Demonstrate PSCI MEM_PROTECT from el3_runtime
-
- - Provide RAS support
-
- - Migrate AArch64 port to the multi console driver. The old API is
- deprecated and will eventually be removed.
-
- - Move BL31 below BL2 to enable BL2 overlay resulting in changes in the
- layout of BL images in memory to enable more efficient use of available
- space.
-
- - Add cpp build processing for dtb that allows processing device tree
- with external includes.
-
- - Extend FIP io driver to support multiple FIP devices
-
- - Add support for SCMI AP core configuration protocol v1.0
-
- - Use SCMI AP core protocol to set the warm boot entrypoint
-
- - Add support to Mbed TLS drivers for shared heap among different
- BL images to help optimise memory usage
-
- - Enable non-secure access to UART1 through a build option to support
- a serial debug port for debugger connection
-
-- Enhancements for Arm Juno Platform
-
- - Add support for TrustZone Media Protection 1 (TZMP1)
-
-- Enhancements for Arm FVP Platform
-
- - Dynamic_config: remove the FVP dtb files
-
- - Set DYNAMIC_WORKAROUND_CVE_2018_3639=1 on FVP by default
-
- - Set the ability to dynamically disable Trusted Boot Board
- authentication to be off by default with DYN_DISABLE_AUTH
-
- - Add librom enhancement support in FVP
-
- - Support shared Mbed TLS heap between BL1 and BL2 that allow a
- reduction in BL2 size for FVP
-
-- Enhancements for Arm SGI/SGM Platform
-
- - Enable ARM_PLAT_MT flag for SGI-575
-
- - Add dts files to enable support for dynamic config
-
- - Add RAS support
-
- - Support shared Mbed TLS heap for SGI and SGM between BL1 and BL2
-
-- Enhancements for Non Arm Platforms
-
- - Raspberry Pi Platform
-
- - Hikey Platforms
-
- - Xilinx Platforms
-
- - QEMU Platform
-
- - Rockchip rk3399 Platform
-
- - TI Platforms
-
- - Socionext Platforms
-
- - Allwinner Platforms
-
- - NXP Platforms
-
- - NVIDIA Tegra Platform
-
- - Marvell Platforms
-
- - STMicroelectronics STM32MP1 Platform
-
-Issues resolved since last release
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- No issues known at 1.5 release resolved in 1.6 release
-
-Known Issues
-^^^^^^^^^^^^
-
-- DTB creation not supported when building on a Windows host. This step in the
- build process is skipped when running on a Windows host. Known issue from
- 1.5 version.
-
-Version 1.5
------------
-
-New features
-^^^^^^^^^^^^
-
-- Added new firmware support to enable RAS (Reliability, Availability, and
- Serviceability) functionality.
-
- - Secure Partition Manager (SPM): A Secure Partition is a software execution
- environment instantiated in S-EL0 that can be used to implement simple
- management and security services. The SPM is the firmware component that
- is responsible for managing a Secure Partition.
-
- - SDEI dispatcher: Support for interrupt-based |SDEI| events and all
- interfaces as defined by the |SDEI| specification v1.0, see
- `SDEI Specification`_
-
- - Exception Handling Framework (EHF): Framework that allows dispatching of
- EL3 interrupts to their registered handlers which are registered based on
- their priorities. Facilitates firmware-first error handling policy where
- asynchronous exceptions may be routed to EL3.
-
- Integrated the TSPD with EHF.
-
-- Updated PSCI support:
-
- - Implemented PSCI v1.1 optional features `MEM_PROTECT` and `SYSTEM_RESET2`.
- The supported PSCI version was updated to v1.1.
-
- - Improved PSCI STAT timestamp collection, including moving accounting for
- retention states to be inside the locks and fixing handling of wrap-around
- when calculating residency in AArch32 execution state.
-
- - Added optional handler for early suspend that executes when suspending to
- a power-down state and with data caches enabled.
-
- This may provide a performance improvement on platforms where it is safe
- to perform some or all of the platform actions from `pwr_domain_suspend`
- with the data caches enabled.
-
-- Enabled build option, BL2_AT_EL3, for BL2 to allow execution at EL3 without
- any dependency on TF BL1.
-
- This allows platforms which already have a non-TF Boot ROM to directly load
- and execute BL2 and subsequent BL stages without need for BL1. This was not
- previously possible because BL2 executes at S-EL1 and cannot jump straight to
- EL3.
-
-- Implemented support for SMCCC v1.1, including `SMCCC_VERSION` and
- `SMCCC_ARCH_FEATURES`.
-
- Additionally, added support for `SMCCC_VERSION` in PSCI features to enable
- discovery of the SMCCC version via PSCI feature call.
-
-- Added Dynamic Configuration framework which enables each of the boot loader
- stages to be dynamically configured at runtime if required by the platform.
- The boot loader stage may optionally specify a firmware configuration file
- and/or hardware configuration file that can then be shared with the next boot
- loader stage.
-
- Introduced a new BL handover interface that essentially allows passing of 4
- arguments between the different BL stages.
-
- Updated cert_create and fip_tool to support the dynamic configuration files.
- The COT also updated to support these new files.
-
-- Code hygiene changes and alignment with MISRA guideline:
-
- - Fix use of undefined macros.
-
- - Achieved compliance with Mandatory MISRA coding rules.
-
- - Achieved compliance for following Required MISRA rules for the default
- build configurations on FVP and Juno platforms : 7.3, 8.3, 8.4, 8.5 and
- 8.8.
-
-- Added support for Armv8.2-A architectural features:
-
- - Updated translation table set-up to set the CnP (Common not Private) bit
- for secure page tables so that multiple PEs in the same Inner Shareable
- domain can use the same translation table entries for a given stage of
- translation in a particular translation regime.
-
- - Extended the supported values of ID_AA64MMFR0_EL1.PARange to include the
- 52-bit Physical Address range.
-
- - Added support for the Scalable Vector Extension to allow Normal world
- software to access SVE functionality but disable access to SVE, SIMD and
- floating point functionality from the Secure world in order to prevent
- corruption of the Z-registers.
-
-- Added support for Armv8.4-A architectural feature Activity Monitor Unit (AMU)
- extensions.
-
- In addition to the v8.4 architectural extension, AMU support on Cortex-A75
- was implemented.
-
-- Enhanced OP-TEE support to enable use of pageable OP-TEE image. The Arm
- standard platforms are updated to load up to 3 images for OP-TEE; header,
- pager image and paged image.
-
- The chain of trust is extended to support the additional images.
-
-- Enhancements to the translation table library:
-
- - Introduced APIs to get and set the memory attributes of a region.
-
- - Added support to manage both privilege levels in translation regimes that
- describe translations for 2 Exception levels, specifically the EL1&0
- translation regime, and extended the memory map region attributes to
- include specifying Non-privileged access.
-
- - Added support to specify the granularity of the mappings of each region,
- for instance a 2MB region can be specified to be mapped with 4KB page
- tables instead of a 2MB block.
-
- - Disabled the higher VA range to avoid unpredictable behaviour if there is
- an attempt to access addresses in the higher VA range.
-
- - Added helpers for Device and Normal memory MAIR encodings that align with
- the Arm Architecture Reference Manual for Armv8-A (Arm DDI0487B.b).
-
- - Code hygiene including fixing type length and signedness of constants,
- refactoring of function to enable the MMU, removing all instances where
- the virtual address space is hardcoded and added comments that document
- alignment needed between memory attributes and attributes specified in
- TCR_ELx.
-
-- Updated GIC support:
-
- - Introduce new APIs for GICv2 and GICv3 that provide the capability to
- specify interrupt properties rather than list of interrupt numbers alone.
- The Arm platforms and other upstream platforms are migrated to use
- interrupt properties.
-
- - Added helpers to save / restore the GICv3 context, specifically the
- Distributor and Redistributor contexts and architectural parts of the ITS
- power management. The Distributor and Redistributor helpers also support
- the implementation-defined part of GIC-500 and GIC-600.
-
- Updated the Arm FVP platform to save / restore the GICv3 context on system
- suspend / resume as an example of how to use the helpers.
-
- Introduced a new TZC secured DDR carve-out for use by Arm platforms for
- storing EL3 runtime data such as the GICv3 register context.
-
-- Added support for Armv7-A architecture via build option ARM_ARCH_MAJOR=7.
- This includes following features:
-
- - Updates GICv2 driver to manage GICv1 with security extensions.
-
- - Software implementation for 32bit division.
-
- - Enabled use of generic timer for platforms that do not set
- ARM_CORTEX_Ax=yes.
-
- - Support for Armv7-A Virtualization extensions [DDI0406C_C].
-
- - Support for both Armv7-A platforms that only have 32-bit addressing and
- Armv7-A platforms that support large page addressing.
-
- - Included support for following Armv7 CPUs: Cortex-A12, Cortex-A17,
- Cortex-A7, Cortex-A5, Cortex-A9, Cortex-A15.
-
- - Added support in QEMU for Armv7-A/Cortex-A15.
-
-- Enhancements to Firmware Update feature:
-
- - Updated the FWU documentation to describe the additional images needed for
- Firmware update, and how they are used for both the Juno platform and the
- Arm FVP platforms.
-
-- Enhancements to Trusted Board Boot feature:
-
- - Added support to cert_create tool for RSA PKCS1# v1.5 and SHA384, SHA512
- and SHA256.
-
- - For Arm platforms added support to use ECDSA keys.
-
- - Enhanced the mbed TLS wrapper layer to include support for both RSA and
- ECDSA to enable runtime selection between RSA and ECDSA keys.
-
-- Added support for secure interrupt handling in AArch32 sp_min, hardcoded to
- only handle FIQs.
-
-- Added support to allow a platform to load images from multiple boot sources,
- for example from a second flash drive.
-
-- Added a logging framework that allows platforms to reduce the logging level
- at runtime and additionally the prefix string can be defined by the platform.
-
-- Further improvements to register initialisation:
-
- - Control register PMCR_EL0 / PMCR is set to prohibit cycle counting in the
- secure world. This register is added to the list of registers that are
- saved and restored during world switch.
-
- - When EL3 is running in AArch32 execution state, the Non-secure version of
- SCTLR is explicitly initialised during the warmboot flow rather than
- relying on the hardware to set the correct reset values.
-
-- Enhanced support for Arm platforms:
-
- - Introduced driver for Shared-Data-Structure (SDS) framework which is used
- for communication between SCP and the AP CPU, replacing Boot-Over_MHU
- (BOM) protocol.
-
- The Juno platform is migrated to use SDS with the SCMI support added in
- v1.3 and is set as default.
-
- The driver can be found in the plat/arm/css/drivers folder.
-
- - Improved memory usage by only mapping TSP memory region when the TSPD has
- been included in the build. This reduces the memory footprint and avoids
- unnecessary memory being mapped.
-
- - Updated support for multi-threading CPUs for FVP platforms - always check
- the MT field in MPDIR and access the bit fields accordingly.
-
- - Support building for platforms that model DynamIQ configuration by
- implementing all CPUs in a single cluster.
-
- - Improved nor flash driver, for instance clearing status registers before
- sending commands. Driver can be found plat/arm/board/common folder.
-
-- Enhancements to QEMU platform:
-
- - Added support for TBB.
-
- - Added support for using OP-TEE pageable image.
-
- - Added support for LOAD_IMAGE_V2.
-
- - Migrated to use translation table library v2 by default.
-
- - Added support for SEPARATE_CODE_AND_RODATA.
-
-- Applied workarounds CVE-2017-5715 on Arm Cortex-A57, -A72, -A73 and -A75, and
- for Armv7-A CPUs Cortex-A9, -A15 and -A17.
-
-- Applied errata workaround for Arm Cortex-A57: 859972.
-
-- Applied errata workaround for Arm Cortex-A72: 859971.
-
-- Added support for Poplar 96Board platform.
-
-- Added support for Raspberry Pi 3 platform.
-
-- Added Call Frame Information (CFI) assembler directives to the vector entries
- which enables debuggers to display the backtrace of functions that triggered
- a synchronous abort.
-
-- Added ability to build dtb.
-
-- Added support for pre-tool (cert_create and fiptool) image processing
- enabling compression of the image files before processing by cert_create and
- fiptool.
-
- This can reduce fip size and may also speed up loading of images. The image
- verification will also get faster because certificates are generated based on
- compressed images.
-
- Imported zlib 1.2.11 to implement gunzip() for data compression.
-
-- Enhancements to fiptool:
-
- - Enabled the fiptool to be built using Visual Studio.
-
- - Added padding bytes at the end of the last image in the fip to be
- facilitate transfer by DMA.
-
-Issues resolved since last release
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- TF-A can be built with optimisations disabled (-O0).
-
-- Memory layout updated to enable Trusted Board Boot on Juno platform when
- running TF-A in AArch32 execution mode (resolving `tf-issue#501`_).
-
-Known Issues
-^^^^^^^^^^^^
-
-- DTB creation not supported when building on a Windows host. This step in the
- build process is skipped when running on a Windows host.
-
-Version 1.4
------------
-
-New features
-^^^^^^^^^^^^
-
-- Enabled support for platforms with hardware assisted coherency.
-
- A new build option HW_ASSISTED_COHERENCY allows platforms to take advantage
- of the following optimisations:
-
- - Skip performing cache maintenance during power-up and power-down.
-
- - Use spin-locks instead of bakery locks.
-
- - Enable data caches early on warm-booted CPUs.
-
-- Added support for Cortex-A75 and Cortex-A55 processors.
-
- Both Cortex-A75 and Cortex-A55 processors use the Arm DynamIQ Shared Unit
- (DSU). The power-down and power-up sequences are therefore mostly managed in
- hardware, reducing complexity of the software operations.
-
-- Introduced Arm GIC-600 driver.
-
- Arm GIC-600 IP complies with Arm GICv3 architecture. For FVP platforms, the
- GIC-600 driver is chosen when FVP_USE_GIC_DRIVER is set to FVP_GIC600.
-
-- Updated GICv3 support:
-
- - Introduced power management APIs for GICv3 Redistributor. These APIs
- allow platforms to power down the Redistributor during CPU power on/off.
- Requires the GICv3 implementations to have power management operations.
-
- Implemented the power management APIs for FVP.
-
- - GIC driver data is flushed by the primary CPU so that secondary CPU do
- not read stale GIC data.
-
-- Added support for Arm System Control and Management Interface v1.0 (SCMI).
-
- The SCMI driver implements the power domain management and system power
- management protocol of the SCMI specification (Arm DEN 0056ASCMI) for
- communicating with any compliant power controller.
-
- Support is added for the Juno platform. The driver can be found in the
- plat/arm/css/drivers folder.
-
-- Added support to enable pre-integration of TBB with the Arm TrustZone
- CryptoCell product, to take advantage of its hardware Root of Trust and
- crypto acceleration services.
-
-- Enabled Statistical Profiling Extensions for lower ELs.
-
- The firmware support is limited to the use of SPE in the Non-secure state
- and accesses to the SPE specific registers from S-EL1 will trap to EL3.
-
- The SPE are architecturally specified for AArch64 only.
-
-- Code hygiene changes aligned with MISRA guidelines:
-
- - Fixed signed / unsigned comparison warnings in the translation table
- library.
-
- - Added U(_x) macro and together with the existing ULL(_x) macro fixed
- some of the signed-ness defects flagged by the MISRA scanner.
-
-- Enhancements to Firmware Update feature:
-
- - The FWU logic now checks for overlapping images to prevent execution of
- unauthenticated arbitrary code.
-
- - Introduced new FWU_SMC_IMAGE_RESET SMC that changes the image loading
- state machine to go from COPYING, COPIED or AUTHENTICATED states to
- RESET state. Previously, this was only possible when the authentication
- of an image failed or when the execution of the image finished.
-
- - Fixed integer overflow which addressed TFV-1: Malformed Firmware Update
- SMC can result in copy of unexpectedly large data into secure memory.
-
-- Introduced support for Arm Compiler 6 and LLVM (clang).
-
- TF-A can now also be built with the Arm Compiler 6 or the clang compilers.
- The assembler and linker must be provided by the GNU toolchain.
-
- Tested with Arm CC 6.7 and clang 3.9.x and 4.0.x.
-
-- Memory footprint improvements:
-
- - Introduced `tf_snprintf`, a reduced version of `snprintf` which has
- support for a limited set of formats.
-
- The mbedtls driver is updated to optionally use `tf_snprintf` instead of
- `snprintf`.
-
- - The `assert()` is updated to no longer print the function name, and
- additional logging options are supported via an optional platform define
- `PLAT_LOG_LEVEL_ASSERT`, which controls how verbose the assert output is.
-
-- Enhancements to TF-A support when running in AArch32 execution state:
-
- - Support booting SP_MIN and BL33 in AArch32 execution mode on Juno. Due to
- hardware limitations, BL1 and BL2 boot in AArch64 state and there is
- additional trampoline code to warm reset into SP_MIN in AArch32 execution
- state.
-
- - Added support for Arm Cortex-A53/57/72 MPCore processors including the
- errata workarounds that are already implemented for AArch64 execution
- state.
-
- - For FVP platforms, added AArch32 Trusted Board Boot support, including the
- Firmware Update feature.
-
-- Introduced Arm SiP service for use by Arm standard platforms.
-
- - Added new Arm SiP Service SMCs to enable the Non-secure world to read PMF
- timestamps.
-
- Added PMF instrumentation points in TF-A in order to quantify the
- overall time spent in the PSCI software implementation.
-
- - Added new Arm SiP service SMC to switch execution state.
-
- This allows the lower exception level to change its execution state from
- AArch64 to AArch32, or vice verse, via a request to EL3.
-
-- Migrated to use SPDX[0] license identifiers to make software license
- auditing simpler.
-
- .. note::
- Files that have been imported by FreeBSD have not been modified.
-
- [0]: https://spdx.org/
-
-- Enhancements to the translation table library:
-
- - Added version 2 of translation table library that allows different
- translation tables to be modified by using different 'contexts'. Version 1
- of the translation table library only allows the current EL's translation
- tables to be modified.
-
- Version 2 of the translation table also added support for dynamic
- regions; regions that can be added and removed dynamically whilst the
- MMU is enabled. Static regions can only be added or removed before the
- MMU is enabled.
-
- The dynamic mapping functionality is enabled or disabled when compiling
- by setting the build option PLAT_XLAT_TABLES_DYNAMIC to 1 or 0. This can
- be done per-image.
-
- - Added support for translation regimes with two virtual address spaces
- such as the one shared by EL1 and EL0.
-
- The library does not support initializing translation tables for EL0
- software.
-
- - Added support to mark the translation tables as non-cacheable using an
- additional build option `XLAT_TABLE_NC`.
-
-- Added support for GCC stack protection. A new build option
- ENABLE_STACK_PROTECTOR was introduced that enables compilation of all BL
- images with one of the GCC -fstack-protector-* options.
-
- A new platform function plat_get_stack_protector_canary() was introduced
- that returns a value used to initialize the canary for stack corruption
- detection. For increased effectiveness of protection platforms must provide
- an implementation that returns a random value.
-
-- Enhanced support for Arm platforms:
-
- - Added support for multi-threading CPUs, indicated by `MT` field in MPDIR.
- A new build flag `ARM_PLAT_MT` is added, and when enabled, the functions
- accessing MPIDR assume that the `MT` bit is set for the platform and
- access the bit fields accordingly.
-
- Also, a new API `plat_arm_get_cpu_pe_count` is added when `ARM_PLAT_MT` is
- enabled, returning the Processing Element count within the physical CPU
- corresponding to `mpidr`.
-
- - The Arm platforms migrated to use version 2 of the translation tables.
-
- - Introduced a new Arm platform layer API `plat_arm_psci_override_pm_ops`
- which allows Arm platforms to modify `plat_arm_psci_pm_ops` and therefore
- dynamically define PSCI capability.
-
- - The Arm platforms migrated to use IMAGE_LOAD_V2 by default.
-
-- Enhanced reporting of errata workaround status with the following policy:
-
- - If an errata workaround is enabled:
-
- - If it applies (i.e. the CPU is affected by the errata), an INFO message
- is printed, confirming that the errata workaround has been applied.
-
- - If it does not apply, a VERBOSE message is printed, confirming that the
- errata workaround has been skipped.
-
- - If an errata workaround is not enabled, but would have applied had it
- been, a WARN message is printed, alerting that errata workaround is
- missing.
-
-- Added build options ARM_ARCH_MAJOR and ARM_ARM_MINOR to choose the
- architecture version to target TF-A.
-
-- Updated the spin lock implementation to use the more efficient CAS (Compare
- And Swap) instruction when available. This instruction was introduced in
- Armv8.1-A.
-
-- Applied errata workaround for Arm Cortex-A53: 855873.
-
-- Applied errata workaround for Arm-Cortex-A57: 813419.
-
-- Enabled all A53 and A57 errata workarounds for Juno, both in AArch64 and
- AArch32 execution states.
-
-- Added support for Socionext UniPhier SoC platform.
-
-- Added support for Hikey960 and Hikey platforms.
-
-- Added support for Rockchip RK3328 platform.
-
-- Added support for NVidia Tegra T186 platform.
-
-- Added support for Designware emmc driver.
-
-- Imported libfdt v1.4.2 that addresses buffer overflow in fdt_offset_ptr().
-
-- Enhanced the CPU operations framework to allow power handlers to be
- registered on per-level basis. This enables support for future CPUs that
- have multiple threads which might need powering down individually.
-
-- Updated register initialisation to prevent unexpected behaviour:
-
- - Debug registers MDCR-EL3/SDCR and MDCR_EL2/HDCR are initialised to avoid
- unexpected traps into the higher exception levels and disable secure
- self-hosted debug. Additionally, secure privileged external debug on
- Juno is disabled by programming the appropriate Juno SoC registers.
-
- - EL2 and EL3 configurable controls are initialised to avoid unexpected
- traps in the higher exception levels.
-
- - Essential control registers are fully initialised on EL3 start-up, when
- initialising the non-secure and secure context structures and when
- preparing to leave EL3 for a lower EL. This gives better alignment with
- the Arm ARM which states that software must initialise RES0 and RES1
- fields with 0 / 1.
-
-- Enhanced PSCI support:
-
- - Introduced new platform interfaces that decouple PSCI stat residency
- calculation from PMF, enabling platforms to use alternative methods of
- capturing timestamps.
-
- - PSCI stat accounting performed for retention/standby states when
- requested at multiple power levels.
-
-- Simplified fiptool to have a single linked list of image descriptors.
-
-- For the TSP, resolved corruption of pre-empted secure context by aborting any
- pre-empted SMC during PSCI power management requests.
-
-Issues resolved since last release
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- TF-A can be built with the latest mbed TLS version (v2.4.2). The earlier
- version 2.3.0 cannot be used due to build warnings that the TF-A build
- system interprets as errors.
-
-- TBBR, including the Firmware Update feature is now supported on FVP
- platforms when running TF-A in AArch32 state.
-
-- The version of the AEMv8 Base FVP used in this release has resolved the issue
- of the model executing a reset instead of terminating in response to a
- shutdown request using the PSCI SYSTEM_OFF API.
-
-Known Issues
-^^^^^^^^^^^^
-
-- Building TF-A with compiler optimisations disabled (-O0) fails.
-
-- Trusted Board Boot currently does not work on Juno when running Trusted
- Firmware in AArch32 execution state due to error when loading the sp_min to
- memory because of lack of free space available. See `tf-issue#501`_ for more
- details.
-
-- The errata workaround for A53 errata 843419 is only available from binutils
- 2.26 and is not present in GCC4.9. If this errata is applicable to the
- platform, please use GCC compiler version of at least 5.0. See `PR#1002`_ for
- more details.
-
-Version 1.3
------------
-
-
-New features
-^^^^^^^^^^^^
-
-- Added support for running TF-A in AArch32 execution state.
-
- The PSCI library has been refactored to allow integration with **EL3 Runtime
- Software**. This is software that is executing at the highest secure
- privilege which is EL3 in AArch64 or Secure SVC/Monitor mode in AArch32. See
- :ref:`PSCI Library Integration guide for Armv8-A AArch32 systems`.
-
- Included is a minimal AArch32 Secure Payload, **SP-MIN**, that illustrates
- the usage and integration of the PSCI library with EL3 Runtime Software
- running in AArch32 state.
-
- Booting to the BL1/BL2 images as well as booting straight to the Secure
- Payload is supported.
-
-- Improvements to the initialization framework for the PSCI service and Arm
- Standard Services in general.
-
- The PSCI service is now initialized as part of Arm Standard Service
- initialization. This consolidates the initializations of any Arm Standard
- Service that may be added in the future.
-
- A new function ``get_arm_std_svc_args()`` is introduced to get arguments
- corresponding to each standard service and must be implemented by the EL3
- Runtime Software.
-
- For PSCI, a new versioned structure ``psci_lib_args_t`` is introduced to
- initialize the PSCI Library. **Note** this is a compatibility break due to
- the change in the prototype of ``psci_setup()``.
-
-- To support AArch32 builds of BL1 and BL2, implemented a new, alternative
- firmware image loading mechanism that adds flexibility.
-
- The current mechanism has a hard-coded set of images and execution order
- (BL31, BL32, etc). The new mechanism is data-driven by a list of image
- descriptors provided by the platform code.
-
- Arm platforms have been updated to support the new loading mechanism.
-
- The new mechanism is enabled by a build flag (``LOAD_IMAGE_V2``) which is
- currently off by default for the AArch64 build.
-
- **Note** ``TRUSTED_BOARD_BOOT`` is currently not supported when
- ``LOAD_IMAGE_V2`` is enabled.
-
-- Updated requirements for making contributions to TF-A.
-
- Commits now must have a 'Signed-off-by:' field to certify that the
- contribution has been made under the terms of the
- :download:`Developer Certificate of Origin <../dco.txt>`.
-
- A signed CLA is no longer required.
-
- The :ref:`Contributor's Guide` has been updated to reflect this change.
-
-- Introduced Performance Measurement Framework (PMF) which provides support
- for capturing, storing, dumping and retrieving time-stamps to measure the
- execution time of critical paths in the firmware. This relies on defining
- fixed sample points at key places in the code.
-
-- To support the QEMU platform port, imported libfdt v1.4.1 from
- https://git.kernel.org/pub/scm/utils/dtc/dtc.git
-
-- Updated PSCI support:
-
- - Added support for PSCI NODE_HW_STATE API for Arm platforms.
-
- - New optional platform hook, ``pwr_domain_pwr_down_wfi()``, in
- ``plat_psci_ops`` to enable platforms to perform platform-specific actions
- needed to enter powerdown, including the 'wfi' invocation.
-
- - PSCI STAT residency and count functions have been added on Arm platforms
- by using PMF.
-
-- Enhancements to the translation table library:
-
- - Limited memory mapping support for region overlaps to only allow regions
- to overlap that are identity mapped or have the same virtual to physical
- address offset, and overlap completely but must not cover the same area.
-
- This limitation will enable future enhancements without having to
- support complex edge cases that may not be necessary.
-
- - The initial translation lookup level is now inferred from the virtual
- address space size. Previously, it was hard-coded.
-
- - Added support for mapping Normal, Inner Non-cacheable, Outer
- Non-cacheable memory in the translation table library.
-
- This can be useful to map a non-cacheable memory region, such as a DMA
- buffer.
-
- - Introduced the MT_EXECUTE/MT_EXECUTE_NEVER memory mapping attributes to
- specify the access permissions for instruction execution of a memory
- region.
-
-- Enabled support to isolate code and read-only data on separate memory pages,
- allowing independent access control to be applied to each.
-
-- Enabled SCR_EL3.SIF (Secure Instruction Fetch) bit in BL1 and BL31 common
- architectural setup code, preventing fetching instructions from non-secure
- memory when in secure state.
-
-- Enhancements to FIP support:
-
- - Replaced ``fip_create`` with ``fiptool`` which provides a more consistent
- and intuitive interface as well as additional support to remove an image
- from a FIP file.
-
- - Enabled printing the SHA256 digest with info command, allowing quick
- verification of an image within a FIP without having to extract the
- image and running sha256sum on it.
-
- - Added support for unpacking the contents of an existing FIP file into
- the working directory.
-
- - Aligned command line options for specifying images to use same naming
- convention as specified by TBBR and already used in cert_create tool.
-
-- Refactored the TZC-400 driver to also support memory controllers that
- integrate TZC functionality, for example Arm CoreLink DMC-500. Also added
- DMC-500 specific support.
-
-- Implemented generic delay timer based on the system generic counter and
- migrated all platforms to use it.
-
-- Enhanced support for Arm platforms:
-
- - Updated image loading support to make SCP images (SCP_BL2 and SCP_BL2U)
- optional.
-
- - Enhanced topology description support to allow multi-cluster topology
- definitions.
-
- - Added interconnect abstraction layer to help platform ports select the
- right interconnect driver, CCI or CCN, for the platform.
-
- - Added support to allow loading BL31 in the TZC-secured DRAM instead of
- the default secure SRAM.
-
- - Added support to use a System Security Control (SSC) Registers Unit
- enabling TF-A to be compiled to support multiple Arm platforms and
- then select one at runtime.
-
- - Restricted mapping of Trusted ROM in BL1 to what is actually needed by
- BL1 rather than entire Trusted ROM region.
-
- - Flash is now mapped as execute-never by default. This increases security
- by restricting the executable region to what is strictly needed.
-
-- Applied following erratum workarounds for Cortex-A57: 833471, 826977,
- 829520, 828024 and 826974.
-
-- Added support for Mediatek MT6795 platform.
-
-- Added support for QEMU virtualization Armv8-A target.
-
-- Added support for Rockchip RK3368 and RK3399 platforms.
-
-- Added support for Xilinx Zynq UltraScale+ MPSoC platform.
-
-- Added support for Arm Cortex-A73 MPCore Processor.
-
-- Added support for Arm Cortex-A72 processor.
-
-- Added support for Arm Cortex-A35 processor.
-
-- Added support for Arm Cortex-A32 MPCore Processor.
-
-- Enabled preloaded BL33 alternative boot flow, in which BL2 does not load
- BL33 from non-volatile storage and BL31 hands execution over to a preloaded
- BL33. The User Guide has been updated with an example of how to use this
- option with a bootwrapped kernel.
-
-- Added support to build TF-A on a Windows-based host machine.
-
-- Updated Trusted Board Boot prototype implementation:
-
- - Enabled the ability for a production ROM with TBBR enabled to boot test
- software before a real ROTPK is deployed (e.g. manufacturing mode).
- Added support to use ROTPK in certificate without verifying against the
- platform value when ``ROTPK_NOT_DEPLOYED`` bit is set.
-
- - Added support for non-volatile counter authentication to the
- Authentication Module to protect against roll-back.
-
-- Updated GICv3 support:
-
- - Enabled processor power-down and automatic power-on using GICv3.
-
- - Enabled G1S or G0 interrupts to be configured independently.
-
- - Changed FVP default interrupt driver to be the GICv3-only driver.
- **Note** the default build of TF-A will not be able to boot
- Linux kernel with GICv2 FDT blob.
-
- - Enabled wake-up from CPU_SUSPEND to stand-by by temporarily re-routing
- interrupts and then restoring after resume.
-
-Issues resolved since last release
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Known issues
-^^^^^^^^^^^^
-
-- The version of the AEMv8 Base FVP used in this release resets the model
- instead of terminating its execution in response to a shutdown request using
- the PSCI ``SYSTEM_OFF`` API. This issue will be fixed in a future version of
- the model.
-
-- Building TF-A with compiler optimisations disabled (``-O0``) fails.
-
-- TF-A cannot be built with mbed TLS version v2.3.0 due to build warnings
- that the TF-A build system interprets as errors.
-
-- TBBR is not currently supported when running TF-A in AArch32 state.
-
-Version 1.2
------------
-
-New features
-^^^^^^^^^^^^
-
-- The Trusted Board Boot implementation on Arm platforms now conforms to the
- mandatory requirements of the TBBR specification.
-
- In particular, the boot process is now guarded by a Trusted Watchdog, which
- will reset the system in case of an authentication or loading error. On Arm
- platforms, a secure instance of Arm SP805 is used as the Trusted Watchdog.
-
- Also, a firmware update process has been implemented. It enables
- authenticated firmware to update firmware images from external interfaces to
- SoC Non-Volatile memories. This feature functions even when the current
- firmware in the system is corrupt or missing; it therefore may be used as
- a recovery mode.
-
-- Improvements have been made to the Certificate Generation Tool
- (``cert_create``) as follows.
-
- - Added support for the Firmware Update process by extending the Chain
- of Trust definition in the tool to include the Firmware Update
- certificate and the required extensions.
-
- - Introduced a new API that allows one to specify command line options in
- the Chain of Trust description. This makes the declaration of the tool's
- arguments more flexible and easier to extend.
-
- - The tool has been reworked to follow a data driven approach, which
- makes it easier to maintain and extend.
-
-- Extended the FIP tool (``fip_create``) to support the new set of images
- involved in the Firmware Update process.
-
-- Various memory footprint improvements. In particular:
-
- - The bakery lock structure for coherent memory has been optimised.
-
- - The mbed TLS SHA1 functions are not needed, as SHA256 is used to
- generate the certificate signature. Therefore, they have been compiled
- out, reducing the memory footprint of BL1 and BL2 by approximately
- 6 KB.
-
- - On Arm development platforms, each BL stage now individually defines
- the number of regions that it needs to map in the MMU.
-
-- Added the following new design documents:
-
- - :ref:`Authentication Framework & Chain of Trust`
- - :ref:`Firmware Update (FWU)`
- - :ref:`CPU Reset`
- - :ref:`PSCI Power Domain Tree Structure`
-
-- Applied the new image terminology to the code base and documentation, as
- described in the :ref:`Image Terminology` document.
-
-- The build system has been reworked to improve readability and facilitate
- adding future extensions.
-
-- On Arm standard platforms, BL31 uses the boot console during cold boot
- but switches to the runtime console for any later logs at runtime. The TSP
- uses the runtime console for all output.
-
-- Implemented a basic NOR flash driver for Arm platforms. It programs the
- device using CFI (Common Flash Interface) standard commands.
-
-- Implemented support for booting EL3 payloads on Arm platforms, which
- reduces the complexity of developing EL3 baremetal code by doing essential
- baremetal initialization.
-
-- Provided separate drivers for GICv3 and GICv2. These expect the entire
- software stack to use either GICv2 or GICv3; hybrid GIC software systems
- are no longer supported and the legacy Arm GIC driver has been deprecated.
-
-- Added support for Juno r1 and r2. A single set of Juno TF-A binaries can run
- on Juno r0, r1 and r2 boards. Note that this TF-A version depends on a Linaro
- release that does *not* contain Juno r2 support.
-
-- Added support for MediaTek mt8173 platform.
-
-- Implemented a generic driver for Arm CCN IP.
-
-- Major rework of the PSCI implementation.
-
- - Added framework to handle composite power states.
-
- - Decoupled the notions of affinity instances (which describes the
- hierarchical arrangement of cores) and of power domain topology, instead
- of assuming a one-to-one mapping.
-
- - Better alignment with version 1.0 of the PSCI specification.
-
-- Added support for the SYSTEM_SUSPEND PSCI API on Arm platforms. When invoked
- on the last running core on a supported platform, this puts the system
- into a low power mode with memory retention.
-
-- Unified the reset handling code as much as possible across BL stages.
- Also introduced some build options to enable optimization of the reset path
- on platforms that support it.
-
-- Added a simple delay timer API, as well as an SP804 timer driver, which is
- enabled on FVP.
-
-- Added support for NVidia Tegra T210 and T132 SoCs.
-
-- Reorganised Arm platforms ports to greatly improve code shareability and
- facilitate the reuse of some of this code by other platforms.
-
-- Added support for Arm Cortex-A72 processor in the CPU specific framework.
-
-- Provided better error handling. Platform ports can now define their own
- error handling, for example to perform platform specific bookkeeping or
- post-error actions.
-
-- Implemented a unified driver for Arm Cache Coherent Interconnects used for
- both CCI-400 & CCI-500 IPs. Arm platforms ports have been migrated to this
- common driver. The standalone CCI-400 driver has been deprecated.
-
-Issues resolved since last release
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- The Trusted Board Boot implementation has been redesigned to provide greater
- modularity and scalability. See the
- :ref:`Authentication Framework & Chain of Trust` document.
- All missing mandatory features are now implemented.
-
-- The FVP and Juno ports may now use the hash of the ROTPK stored in the
- Trusted Key Storage registers to verify the ROTPK. Alternatively, a
- development public key hash embedded in the BL1 and BL2 binaries might be
- used instead. The location of the ROTPK is chosen at build-time using the
- ``ARM_ROTPK_LOCATION`` build option.
-
-- GICv3 is now fully supported and stable.
-
-Known issues
-^^^^^^^^^^^^
-
-- The version of the AEMv8 Base FVP used in this release resets the model
- instead of terminating its execution in response to a shutdown request using
- the PSCI ``SYSTEM_OFF`` API. This issue will be fixed in a future version of
- the model.
-
-- While this version has low on-chip RAM requirements, there are further
- RAM usage enhancements that could be made.
-
-- The upstream documentation could be improved for structural consistency,
- clarity and completeness. In particular, the design documentation is
- incomplete for PSCI, the TSP(D) and the Juno platform.
-
-- Building TF-A with compiler optimisations disabled (``-O0``) fails.
-
-Version 1.1
------------
-
-New features
-^^^^^^^^^^^^
-
-- A prototype implementation of Trusted Board Boot has been added. Boot
- loader images are verified by BL1 and BL2 during the cold boot path. BL1 and
- BL2 use the PolarSSL SSL library to verify certificates and images. The
- OpenSSL library is used to create the X.509 certificates. Support has been
- added to ``fip_create`` tool to package the certificates in a FIP.
-
-- Support for calling CPU and platform specific reset handlers upon entry into
- BL3-1 during the cold and warm boot paths has been added. This happens after
- another Boot ROM ``reset_handler()`` has already run. This enables a developer
- to perform additional actions or undo actions already performed during the
- first call of the reset handlers e.g. apply additional errata workarounds.
-
-- Support has been added to demonstrate routing of IRQs to EL3 instead of
- S-EL1 when execution is in secure world.
-
-- The PSCI implementation now conforms to version 1.0 of the PSCI
- specification. All the mandatory APIs and selected optional APIs are
- supported. In particular, support for the ``PSCI_FEATURES`` API has been
- added. A capability variable is constructed during initialization by
- examining the ``plat_pm_ops`` and ``spd_pm_ops`` exported by the platform and
- the Secure Payload Dispatcher. This is used by the PSCI FEATURES function
- to determine which PSCI APIs are supported by the platform.
-
-- Improvements have been made to the PSCI code as follows.
-
- - The code has been refactored to remove redundant parameters from
- internal functions.
-
- - Changes have been made to the code for PSCI ``CPU_SUSPEND``, ``CPU_ON`` and
- ``CPU_OFF`` calls to facilitate an early return to the caller in case a
- failure condition is detected. For example, a PSCI ``CPU_SUSPEND`` call
- returns ``SUCCESS`` to the caller if a pending interrupt is detected early
- in the code path.
-
- - Optional platform APIs have been added to validate the ``power_state`` and
- ``entrypoint`` parameters early in PSCI ``CPU_ON`` and ``CPU_SUSPEND`` code
- paths.
-
- - PSCI migrate APIs have been reworked to invoke the SPD hook to determine
- the type of Trusted OS and the CPU it is resident on (if
- applicable). Also, during a PSCI ``MIGRATE`` call, the SPD hook to migrate
- the Trusted OS is invoked.
-
-- It is now possible to build TF-A without marking at least an extra page of
- memory as coherent. The build flag ``USE_COHERENT_MEM`` can be used to
- choose between the two implementations. This has been made possible through
- these changes.
-
- - An implementation of Bakery locks, where the locks are not allocated in
- coherent memory has been added.
-
- - Memory which was previously marked as coherent is now kept coherent
- through the use of software cache maintenance operations.
-
- Approximately, 4K worth of memory is saved for each boot loader stage when
- ``USE_COHERENT_MEM=0``. Enabling this option increases the latencies
- associated with acquire and release of locks. It also requires changes to
- the platform ports.
-
-- It is now possible to specify the name of the FIP at build time by defining
- the ``FIP_NAME`` variable.
-
-- Issues with dependencies on the 'fiptool' makefile target have been
- rectified. The ``fip_create`` tool is now rebuilt whenever its source files
- change.
-
-- The BL3-1 runtime console is now also used as the crash console. The crash
- console is changed to SoC UART0 (UART2) from the previous FPGA UART0 (UART0)
- on Juno. In FVP, it is changed from UART0 to UART1.
-
-- CPU errata workarounds are applied only when the revision and part number
- match. This behaviour has been made consistent across the debug and release
- builds. The debug build additionally prints a warning if a mismatch is
- detected.
-
-- It is now possible to issue cache maintenance operations by set/way for a
- particular level of data cache. Levels 1-3 are currently supported.
-
-- The following improvements have been made to the FVP port.
-
- - The build option ``FVP_SHARED_DATA_LOCATION`` which allowed relocation of
- shared data into the Trusted DRAM has been deprecated. Shared data is
- now always located at the base of Trusted SRAM.
-
- - BL2 Translation tables have been updated to map only the region of
- DRAM which is accessible to normal world. This is the region of the 2GB
- DDR-DRAM memory at 0x80000000 excluding the top 16MB. The top 16MB is
- accessible to only the secure world.
-
- - BL3-2 can now reside in the top 16MB of DRAM which is accessible only to
- the secure world. This can be done by setting the build flag
- ``FVP_TSP_RAM_LOCATION`` to the value ``dram``.
-
-- Separate translation tables are created for each boot loader image. The
- ``IMAGE_BLx`` build options are used to do this. This allows each stage to
- create mappings only for areas in the memory map that it needs.
-
-- A Secure Payload Dispatcher (OPTEED) for the OP-TEE Trusted OS has been
- added. Details of using it with TF-A can be found in :ref:`OP-TEE Dispatcher`
-
-Issues resolved since last release
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- The Juno port has been aligned with the FVP port as follows.
-
- - Support for reclaiming all BL1 RW memory and BL2 memory by overlaying
- the BL3-1/BL3-2 NOBITS sections on top of them has been added to the
- Juno port.
-
- - The top 16MB of the 2GB DDR-DRAM memory at 0x80000000 is configured
- using the TZC-400 controller to be accessible only to the secure world.
-
- - The Arm GIC driver is used to configure the GIC-400 instead of using a
- GIC driver private to the Juno port.
-
- - PSCI ``CPU_SUSPEND`` calls that target a standby state are now supported.
-
- - The TZC-400 driver is used to configure the controller instead of direct
- accesses to the registers.
-
-- The Linux kernel version referred to in the user guide has DVFS and HMP
- support enabled.
-
-- DS-5 v5.19 did not detect Version 5.8 of the Cortex-A57-A53 Base FVPs in
- CADI server mode. This issue is not seen with DS-5 v5.20 and Version 6.2 of
- the Cortex-A57-A53 Base FVPs.
-
-Known issues
-^^^^^^^^^^^^
-
-- The Trusted Board Boot implementation is a prototype. There are issues with
- the modularity and scalability of the design. Support for a Trusted
- Watchdog, firmware update mechanism, recovery images and Trusted debug is
- absent. These issues will be addressed in future releases.
-
-- The FVP and Juno ports do not use the hash of the ROTPK stored in the
- Trusted Key Storage registers to verify the ROTPK in the
- ``plat_match_rotpk()`` function. This prevents the correct establishment of
- the Chain of Trust at the first step in the Trusted Board Boot process.
-
-- The version of the AEMv8 Base FVP used in this release resets the model
- instead of terminating its execution in response to a shutdown request using
- the PSCI ``SYSTEM_OFF`` API. This issue will be fixed in a future version of
- the model.
-
-- GICv3 support is experimental. There are known issues with GICv3
- initialization in the TF-A.
-
-- While this version greatly reduces the on-chip RAM requirements, there are
- further RAM usage enhancements that could be made.
-
-- The firmware design documentation for the Test Secure-EL1 Payload (TSP) and
- its dispatcher (TSPD) is incomplete. Similarly for the PSCI section.
-
-- The Juno-specific firmware design documentation is incomplete.
-
-Version 1.0
------------
-
-New features
-^^^^^^^^^^^^
-
-- It is now possible to map higher physical addresses using non-flat virtual
- to physical address mappings in the MMU setup.
-
-- Wider use is now made of the per-CPU data cache in BL3-1 to store:
-
- - Pointers to the non-secure and secure security state contexts.
-
- - A pointer to the CPU-specific operations.
-
- - A pointer to PSCI specific information (for example the current power
- state).
-
- - A crash reporting buffer.
-
-- The following RAM usage improvements result in a BL3-1 RAM usage reduction
- from 96KB to 56KB (for FVP with TSPD), and a total RAM usage reduction
- across all images from 208KB to 88KB, compared to the previous release.
-
- - Removed the separate ``early_exception`` vectors from BL3-1 (2KB code size
- saving).
-
- - Removed NSRAM from the FVP memory map, allowing the removal of one
- (4KB) translation table.
-
- - Eliminated the internal ``psci_suspend_context`` array, saving 2KB.
-
- - Correctly dimensioned the PSCI ``aff_map_node`` array, saving 1.5KB in the
- FVP port.
-
- - Removed calling CPU mpidr from the bakery lock API, saving 160 bytes.
-
- - Removed current CPU mpidr from PSCI common code, saving 160 bytes.
-
- - Inlined the mmio accessor functions, saving 360 bytes.
-
- - Fully reclaimed all BL1 RW memory and BL2 memory on the FVP port by
- overlaying the BL3-1/BL3-2 NOBITS sections on top of these at runtime.
-
- - Made storing the FP register context optional, saving 0.5KB per context
- (8KB on the FVP port, with TSPD enabled and running on 8 CPUs).
-
- - Implemented a leaner ``tf_printf()`` function, allowing the stack to be
- greatly reduced.
-
- - Removed coherent stacks from the codebase. Stacks allocated in normal
- memory are now used before and after the MMU is enabled. This saves 768
- bytes per CPU in BL3-1.
-
- - Reworked the crash reporting in BL3-1 to use less stack.
-
- - Optimized the EL3 register state stored in the ``cpu_context`` structure
- so that registers that do not change during normal execution are
- re-initialized each time during cold/warm boot, rather than restored
- from memory. This saves about 1.2KB.
-
- - As a result of some of the above, reduced the runtime stack size in all
- BL images. For BL3-1, this saves 1KB per CPU.
-
-- PSCI SMC handler improvements to correctly handle calls from secure states
- and from AArch32.
-
-- CPU contexts are now initialized from the ``entry_point_info``. BL3-1 fully
- determines the exception level to use for the non-trusted firmware (BL3-3)
- based on the SPSR value provided by the BL2 platform code (or otherwise
- provided to BL3-1). This allows platform code to directly run non-trusted
- firmware payloads at either EL2 or EL1 without requiring an EL2 stub or OS
- loader.
-
-- Code refactoring improvements:
-
- - Refactored ``fvp_config`` into a common platform header.
-
- - Refactored the fvp gic code to be a generic driver that no longer has an
- explicit dependency on platform code.
-
- - Refactored the CCI-400 driver to not have dependency on platform code.
-
- - Simplified the IO driver so it's no longer necessary to call ``io_init()``
- and moved all the IO storage framework code to one place.
-
- - Simplified the interface the the TZC-400 driver.
-
- - Clarified the platform porting interface to the TSP.
-
- - Reworked the TSPD setup code to support the alternate BL3-2
- initialization flow where BL3-1 generic code hands control to BL3-2,
- rather than expecting the TSPD to hand control directly to BL3-2.
-
- - Considerable rework to PSCI generic code to support CPU specific
- operations.
-
-- Improved console log output, by:
-
- - Adding the concept of debug log levels.
-
- - Rationalizing the existing debug messages and adding new ones.
-
- - Printing out the version of each BL stage at runtime.
-
- - Adding support for printing console output from assembler code,
- including when a crash occurs before the C runtime is initialized.
-
-- Moved up to the latest versions of the FVPs, toolchain, EDK2, kernel, Linaro
- file system and DS-5.
-
-- On the FVP port, made the use of the Trusted DRAM region optional at build
- time (off by default). Normal platforms will not have such a "ready-to-use"
- DRAM area so it is not a good example to use it.
-
-- Added support for PSCI ``SYSTEM_OFF`` and ``SYSTEM_RESET`` APIs.
-
-- Added support for CPU specific reset sequences, power down sequences and
- register dumping during crash reporting. The CPU specific reset sequences
- include support for errata workarounds.
-
-- Merged the Juno port into the master branch. Added support for CPU hotplug
- and CPU idle. Updated the user guide to describe how to build and run on the
- Juno platform.
-
-Issues resolved since last release
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- Removed the concept of top/bottom image loading. The image loader now
- automatically detects the position of the image inside the current memory
- layout and updates the layout to minimize fragmentation. This resolves the
- image loader limitations of previously releases. There are currently no
- plans to support dynamic image loading.
-
-- CPU idle now works on the publicized version of the Foundation FVP.
-
-- All known issues relating to the compiler version used have now been
- resolved. This TF-A version uses Linaro toolchain 14.07 (based on GCC 4.9).
-
-Known issues
-^^^^^^^^^^^^
-
-- GICv3 support is experimental. The Linux kernel patches to support this are
- not widely available. There are known issues with GICv3 initialization in
- the TF-A.
-
-- While this version greatly reduces the on-chip RAM requirements, there are
- further RAM usage enhancements that could be made.
-
-- The firmware design documentation for the Test Secure-EL1 Payload (TSP) and
- its dispatcher (TSPD) is incomplete. Similarly for the PSCI section.
-
-- The Juno-specific firmware design documentation is incomplete.
-
-- Some recent enhancements to the FVP port have not yet been translated into
- the Juno port. These will be tracked via the tf-issues project.
-
-- The Linux kernel version referred to in the user guide has DVFS and HMP
- support disabled due to some known instabilities at the time of this
- release. A future kernel version will re-enable these features.
-
-- DS-5 v5.19 does not detect Version 5.8 of the Cortex-A57-A53 Base FVPs in
- CADI server mode. This is because the ``<SimName>`` reported by the FVP in
- this version has changed. For example, for the Cortex-A57x4-A53x4 Base FVP,
- the ``<SimName>`` reported by the FVP is ``FVP_Base_Cortex_A57x4_A53x4``, while
- DS-5 expects it to be ``FVP_Base_A57x4_A53x4``.
-
- The temporary fix to this problem is to change the name of the FVP in
- ``sw/debugger/configdb/Boards/ARM FVP/Base_A57x4_A53x4/cadi_config.xml``.
- Change the following line:
-
- ::
-
- <SimName>System Generator:FVP_Base_A57x4_A53x4</SimName>
-
- to
- System Generator:FVP_Base_Cortex-A57x4_A53x4
-
- A similar change can be made to the other Cortex-A57-A53 Base FVP variants.
-
-Version 0.4
------------
-
-New features
-^^^^^^^^^^^^
-
-- Makefile improvements:
-
- - Improved dependency checking when building.
-
- - Removed ``dump`` target (build now always produces dump files).
-
- - Enabled platform ports to optionally make use of parts of the Trusted
- Firmware (e.g. BL3-1 only), rather than being forced to use all parts.
- Also made the ``fip`` target optional.
-
- - Specified the full path to source files and removed use of the ``vpath``
- keyword.
-
-- Provided translation table library code for potential re-use by platforms
- other than the FVPs.
-
-- Moved architectural timer setup to platform-specific code.
-
-- Added standby state support to PSCI cpu_suspend implementation.
-
-- SRAM usage improvements:
-
- - Started using the ``-ffunction-sections``, ``-fdata-sections`` and
- ``--gc-sections`` compiler/linker options to remove unused code and data
- from the images. Previously, all common functions were being built into
- all binary images, whether or not they were actually used.
-
- - Placed all assembler functions in their own section to allow more unused
- functions to be removed from images.
-
- - Updated BL1 and BL2 to use a single coherent stack each, rather than one
- per CPU.
-
- - Changed variables that were unnecessarily declared and initialized as
- non-const (i.e. in the .data section) so they are either uninitialized
- (zero init) or const.
-
-- Moved the Test Secure-EL1 Payload (BL3-2) to execute in Trusted SRAM by
- default. The option for it to run in Trusted DRAM remains.
-
-- Implemented a TrustZone Address Space Controller (TZC-400) driver. A
- default configuration is provided for the Base FVPs. This means the model
- parameter ``-C bp.secure_memory=1`` is now supported.
-
-- Started saving the PSCI cpu_suspend 'power_state' parameter prior to
- suspending a CPU. This allows platforms that implement multiple power-down
- states at the same affinity level to identify a specific state.
-
-- Refactored the entire codebase to reduce the amount of nesting in header
- files and to make the use of system/user includes more consistent. Also
- split platform.h to separate out the platform porting declarations from the
- required platform porting definitions and the definitions/declarations
- specific to the platform port.
-
-- Optimized the data cache clean/invalidate operations.
-
-- Improved the BL3-1 unhandled exception handling and reporting. Unhandled
- exceptions now result in a dump of registers to the console.
-
-- Major rework to the handover interface between BL stages, in particular the
- interface to BL3-1. The interface now conforms to a specification and is
- more future proof.
-
-- Added support for optionally making the BL3-1 entrypoint a reset handler
- (instead of BL1). This allows platforms with an alternative image loading
- architecture to re-use BL3-1 with fewer modifications to generic code.
-
-- Reserved some DDR DRAM for secure use on FVP platforms to avoid future
- compatibility problems with non-secure software.
-
-- Added support for secure interrupts targeting the Secure-EL1 Payload (SP)
- (using GICv2 routing only). Demonstrated this working by adding an interrupt
- target and supporting test code to the TSP. Also demonstrated non-secure
- interrupt handling during TSP processing.
-
-Issues resolved since last release
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- Now support use of the model parameter ``-C bp.secure_memory=1`` in the Base
- FVPs (see **New features**).
-
-- Support for secure world interrupt handling now available (see **New
- features**).
-
-- Made enough SRAM savings (see **New features**) to enable the Test Secure-EL1
- Payload (BL3-2) to execute in Trusted SRAM by default.
-
-- The tested filesystem used for this release (Linaro AArch64 OpenEmbedded
- 14.04) now correctly reports progress in the console.
-
-- Improved the Makefile structure to make it easier to separate out parts of
- the TF-A for re-use in platform ports. Also, improved target dependency
- checking.
-
-Known issues
-^^^^^^^^^^^^
-
-- GICv3 support is experimental. The Linux kernel patches to support this are
- not widely available. There are known issues with GICv3 initialization in
- the TF-A.
-
-- Dynamic image loading is not available yet. The current image loader
- implementation (used to load BL2 and all subsequent images) has some
- limitations. Changing BL2 or BL3-1 load addresses in certain ways can lead
- to loading errors, even if the images should theoretically fit in memory.
-
-- TF-A still uses too much on-chip Trusted SRAM. A number of RAM usage
- enhancements have been identified to rectify this situation.
-
-- CPU idle does not work on the advertised version of the Foundation FVP.
- Some FVP fixes are required that are not available externally at the time
- of writing. This can be worked around by disabling CPU idle in the Linux
- kernel.
-
-- Various bugs in TF-A, UEFI and the Linux kernel have been observed when
- using Linaro toolchain versions later than 13.11. Although most of these
- have been fixed, some remain at the time of writing. These mainly seem to
- relate to a subtle change in the way the compiler converts between 64-bit
- and 32-bit values (e.g. during casting operations), which reveals
- previously hidden bugs in client code.
-
-- The firmware design documentation for the Test Secure-EL1 Payload (TSP) and
- its dispatcher (TSPD) is incomplete. Similarly for the PSCI section.
-
-Version 0.3
------------
-
-New features
-^^^^^^^^^^^^
-
-- Support for Foundation FVP Version 2.0 added.
- The documented UEFI configuration disables some devices that are unavailable
- in the Foundation FVP, including MMC and CLCD. The resultant UEFI binary can
- be used on the AEMv8 and Cortex-A57-A53 Base FVPs, as well as the Foundation
- FVP.
-
- .. note::
- The software will not work on Version 1.0 of the Foundation FVP.
-
-- Enabled third party contributions. Added a new contributing.md containing
- instructions for how to contribute and updated copyright text in all files
- to acknowledge contributors.
-
-- The PSCI CPU_SUSPEND API has been stabilised to the extent where it can be
- used for entry into power down states with the following restrictions:
-
- - Entry into standby states is not supported.
- - The API is only supported on the AEMv8 and Cortex-A57-A53 Base FVPs.
-
-- The PSCI AFFINITY_INFO api has undergone limited testing on the Base FVPs to
- allow experimental use.
-
-- Required C library and runtime header files are now included locally in
- TF-A instead of depending on the toolchain standard include paths. The
- local implementation has been cleaned up and reduced in scope.
-
-- Added I/O abstraction framework, primarily to allow generic code to load
- images in a platform-independent way. The existing image loading code has
- been reworked to use the new framework. Semi-hosting and NOR flash I/O
- drivers are provided.
-
-- Introduced Firmware Image Package (FIP) handling code and tools. A FIP
- combines multiple firmware images with a Table of Contents (ToC) into a
- single binary image. The new FIP driver is another type of I/O driver. The
- Makefile builds a FIP by default and the FVP platform code expect to load a
- FIP from NOR flash, although some support for image loading using semi-
- hosting is retained.
-
- .. note::
- Building a FIP by default is a non-backwards-compatible change.
-
- .. note::
- Generic BL2 code now loads a BL3-3 (non-trusted firmware) image into
- DRAM instead of expecting this to be pre-loaded at known location. This is
- also a non-backwards-compatible change.
-
- .. note::
- Some non-trusted firmware (e.g. UEFI) will need to be rebuilt so that
- it knows the new location to execute from and no longer needs to copy
- particular code modules to DRAM itself.
-
-- Reworked BL2 to BL3-1 handover interface. A new composite structure
- (bl31_args) holds the superset of information that needs to be passed from
- BL2 to BL3-1, including information on how handover execution control to
- BL3-2 (if present) and BL3-3 (non-trusted firmware).
-
-- Added library support for CPU context management, allowing the saving and
- restoring of
-
- - Shared system registers between Secure-EL1 and EL1.
- - VFP registers.
- - Essential EL3 system registers.
-
-- Added a framework for implementing EL3 runtime services. Reworked the PSCI
- implementation to be one such runtime service.
-
-- Reworked the exception handling logic, making use of both SP_EL0 and SP_EL3
- stack pointers for determining the type of exception, managing general
- purpose and system register context on exception entry/exit, and handling
- SMCs. SMCs are directed to the correct EL3 runtime service.
-
-- Added support for a Test Secure-EL1 Payload (TSP) and a corresponding
- Dispatcher (TSPD), which is loaded as an EL3 runtime service. The TSPD
- implements Secure Monitor functionality such as world switching and
- EL1 context management, and is responsible for communication with the TSP.
-
- .. note::
- The TSPD does not yet contain support for secure world interrupts.
- .. note::
- The TSP/TSPD is not built by default.
-
-Issues resolved since last release
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- Support has been added for switching context between secure and normal
- worlds in EL3.
-
-- PSCI API calls ``AFFINITY_INFO`` & ``PSCI_VERSION`` have now been tested (to
- a limited extent).
-
-- The TF-A build artifacts are now placed in the ``./build`` directory and
- sub-directories instead of being placed in the root of the project.
-
-- TF-A is now free from build warnings. Build warnings are now treated as
- errors.
-
-- TF-A now provides C library support locally within the project to maintain
- compatibility between toolchains/systems.
-
-- The PSCI locking code has been reworked so it no longer takes locks in an
- incorrect sequence.
-
-- The RAM-disk method of loading a Linux file-system has been confirmed to
- work with the TF-A and Linux kernel version (based on version 3.13) used
- in this release, for both Foundation and Base FVPs.
-
-Known issues
-^^^^^^^^^^^^
-
-The following is a list of issues which are expected to be fixed in the future
-releases of TF-A.
-
-- The TrustZone Address Space Controller (TZC-400) is not being programmed
- yet. Use of model parameter ``-C bp.secure_memory=1`` is not supported.
-
-- No support yet for secure world interrupt handling.
-
-- GICv3 support is experimental. The Linux kernel patches to support this are
- not widely available. There are known issues with GICv3 initialization in
- TF-A.
-
-- Dynamic image loading is not available yet. The current image loader
- implementation (used to load BL2 and all subsequent images) has some
- limitations. Changing BL2 or BL3-1 load addresses in certain ways can lead
- to loading errors, even if the images should theoretically fit in memory.
-
-- TF-A uses too much on-chip Trusted SRAM. Currently the Test Secure-EL1
- Payload (BL3-2) executes in Trusted DRAM since there is not enough SRAM.
- A number of RAM usage enhancements have been identified to rectify this
- situation.
-
-- CPU idle does not work on the advertised version of the Foundation FVP.
- Some FVP fixes are required that are not available externally at the time
- of writing.
-
-- Various bugs in TF-A, UEFI and the Linux kernel have been observed when
- using Linaro toolchain versions later than 13.11. Although most of these
- have been fixed, some remain at the time of writing. These mainly seem to
- relate to a subtle change in the way the compiler converts between 64-bit
- and 32-bit values (e.g. during casting operations), which reveals
- previously hidden bugs in client code.
-
-- The tested filesystem used for this release (Linaro AArch64 OpenEmbedded
- 14.01) does not report progress correctly in the console. It only seems to
- produce error output, not standard output. It otherwise appears to function
- correctly. Other filesystem versions on the same software stack do not
- exhibit the problem.
-
-- The Makefile structure doesn't make it easy to separate out parts of the
- TF-A for re-use in platform ports, for example if only BL3-1 is required in
- a platform port. Also, dependency checking in the Makefile is flawed.
-
-- The firmware design documentation for the Test Secure-EL1 Payload (TSP) and
- its dispatcher (TSPD) is incomplete. Similarly for the PSCI section.
-
-Version 0.2
------------
-
-New features
-^^^^^^^^^^^^
-
-- First source release.
-
-- Code for the PSCI suspend feature is supplied, although this is not enabled
- by default since there are known issues (see below).
-
-Issues resolved since last release
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- The "psci" nodes in the FDTs provided in this release now fully comply
- with the recommendations made in the PSCI specification.
-
-Known issues
-^^^^^^^^^^^^
-
-The following is a list of issues which are expected to be fixed in the future
-releases of TF-A.
-
-- The TrustZone Address Space Controller (TZC-400) is not being programmed
- yet. Use of model parameter ``-C bp.secure_memory=1`` is not supported.
-
-- No support yet for secure world interrupt handling or for switching context
- between secure and normal worlds in EL3.
-
-- GICv3 support is experimental. The Linux kernel patches to support this are
- not widely available. There are known issues with GICv3 initialization in
- TF-A.
-
-- Dynamic image loading is not available yet. The current image loader
- implementation (used to load BL2 and all subsequent images) has some
- limitations. Changing BL2 or BL3-1 load addresses in certain ways can lead
- to loading errors, even if the images should theoretically fit in memory.
-
-- Although support for PSCI ``CPU_SUSPEND`` is present, it is not yet stable
- and ready for use.
-
-- PSCI API calls ``AFFINITY_INFO`` & ``PSCI_VERSION`` are implemented but have
- not been tested.
-
-- The TF-A make files result in all build artifacts being placed in the root
- of the project. These should be placed in appropriate sub-directories.
-
-- The compilation of TF-A is not free from compilation warnings. Some of these
- warnings have not been investigated yet so they could mask real bugs.
-
-- TF-A currently uses toolchain/system include files like stdio.h. It should
- provide versions of these within the project to maintain compatibility
- between toolchains/systems.
-
-- The PSCI code takes some locks in an incorrect sequence. This may cause
- problems with suspend and hotplug in certain conditions.
-
-- The Linux kernel used in this release is based on version 3.12-rc4. Using
- this kernel with the TF-A fails to start the file-system as a RAM-disk. It
- fails to execute user-space ``init`` from the RAM-disk. As an alternative,
- the VirtioBlock mechanism can be used to provide a file-system to the
- kernel.
-
---------------
-
-*Copyright (c) 2013-2020, Arm Limited and Contributors. All rights reserved.*
-
-.. _SDEI Specification: http://infocenter.arm.com/help/topic/com.arm.doc.den0054a/ARM_DEN0054A_Software_Delegated_Exception_Interface.pdf
-.. _tf-issue#501: https://github.com/ARM-software/tf-issues/issues/501
-.. _PR#1002: https://github.com/ARM-software/arm-trusted-firmware/pull/1002#issuecomment-312650193
-.. _mbed TLS releases: https://tls.mbed.org/tech-updates/releases
diff --git a/docs/conf.py b/docs/conf.py
index 356be99d6..ef77f6bfe 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -20,13 +20,13 @@ project = 'Trusted Firmware-A'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
-extensions = ['sphinx.ext.autosectionlabel', 'sphinxcontrib.plantuml']
+extensions = ['myst_parser', 'sphinx.ext.autosectionlabel', 'sphinxcontrib.plantuml']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix(es) of source filenames.
-source_suffix = '.rst'
+source_suffix = ['.md', '.rst']
# The master toctree document.
master_doc = 'index'
diff --git a/docs/getting_started/prerequisites.rst b/docs/getting_started/prerequisites.rst
index f45193ae2..ee301282a 100644
--- a/docs/getting_started/prerequisites.rst
+++ b/docs/getting_started/prerequisites.rst
@@ -75,7 +75,7 @@ These tools are optional:
The standard software package used for debugging software on Arm development
platforms and |FVP| models.
-- Node.js >= 14
+- Node.js >= 16
Highly recommended, and necessary in order to install and use the packaged
Git hooks and helper tools. Without these tools you will need to rely on the
@@ -98,13 +98,13 @@ The optional packages can be installed using:
sudo apt install device-tree-compiler
Additionally, to install an up-to-date version of Node.js, you can use the `Node
-Version Manager`_ to install a version of your choosing (we recommend 14, but
+Version Manager`_ to install a version of your choosing (we recommend 16, but
later LTS versions might offer a more stable experience):
.. code:: shell
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | "$SHELL"
- exec "$SHELL" -ic "nvm install 14; exec $SHELL"
+ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | "$SHELL"
+ exec "$SHELL" -ic "nvm install 16; exec $SHELL"
.. _Node Version Manager: https://github.com/nvm-sh/nvm#install--update-script
diff --git a/docs/process/commit-style.rst b/docs/process/commit-style.rst
new file mode 100644
index 000000000..e9df5cee5
--- /dev/null
+++ b/docs/process/commit-style.rst
@@ -0,0 +1,163 @@
+Commit Style
+============
+
+When writing commit messages, please think carefully about the purpose and scope
+of the change you are making: describe briefly what the change does, and
+describe in detail why it does it. This helps to ensure that changes to the
+code-base are transparent and approachable to reviewers, and it allows us to
+keep a more accurate changelog. You may use Markdown in commit messages.
+
+A good commit message provides all the background information needed for
+reviewers to understand the intent and rationale of the patch. This information
+is also useful for future reference.
+
+For example:
+
+- What does the patch do?
+- What motivated it?
+- What impact does it have?
+- How was it tested?
+- Have alternatives been considered? Why did you choose this approach over
+ another one?
+- If it fixes an `issue`_, include a reference.
+
+|TF-A| follows the `Conventional Commits`_ specification. All commits to the
+main repository are expected to adhere to these guidelines, so it is
+**strongly** recommended that you read at least the `quick summary`_ of the
+specification.
+
+To briefly summarize, commit messages are expected to be of the form:
+
+.. code::
+
+ <type>[optional scope]: <description>
+
+ [optional body]
+
+ [optional footer(s)]
+
+The following example commit message demonstrates the use of the
+``refactor`` type and the ``amu`` scope:
+
+.. code::
+
+ refactor(amu): factor out register accesses
+
+ This change introduces a small set of register getters and setters to
+ avoid having to repeatedly mask and shift in complex code.
+
+ Change-Id: Ia372f60c5efb924cd6eeceb75112e635ad13d942
+ Signed-off-by: Chris Kay <chris.kay@arm.com>
+
+The following `types` are permissible and are strictly enforced:
+
++--------------+---------------------------------------------------------------+
+| Scope | Description |
++==============+===============================================================+
+| ``feat`` | A new feature |
++--------------+---------------------------------------------------------------+
+| ``fix`` | A bug fix |
++--------------+---------------------------------------------------------------+
+| ``build`` | Changes that affect the build system or external dependencies |
++--------------+---------------------------------------------------------------+
+| ``ci`` | Changes to our CI configuration files and scripts |
++--------------+---------------------------------------------------------------+
+| ``docs`` | Documentation-only changes |
++--------------+---------------------------------------------------------------+
+| ``perf`` | A code change that improves performance |
++--------------+---------------------------------------------------------------+
+| ``refactor`` | A code change that neither fixes a bug nor adds a feature |
++--------------+---------------------------------------------------------------+
+| ``revert`` | Changes that revert a previous change |
++--------------+---------------------------------------------------------------+
+| ``style`` | Changes that do not affect the meaning of the code |
+| | (white-space, formatting, missing semi-colons, etc.) |
++--------------+---------------------------------------------------------------+
+| ``test`` | Adding missing tests or correcting existing tests |
++--------------+---------------------------------------------------------------+
+| ``chore`` | Any other change |
++--------------+---------------------------------------------------------------+
+
+The permissible `scopes` are more flexible, and we maintain a list of them in
+our :download:`Commitizen configuration file <../../.cz.json>`. Scopes in this
+file are organized by their changelog section, each of which may have one or
+more accepted scopes, but only the first of which is considered to be "blessed".
+Scopes that are not blessed exist for changes submitted before scope enforcement
+came into effect, and are considered deprecated.
+
+While we don't enforce scopes strictly, we do ask that commits use these if they
+can, or add their own if no appropriate one exists (see :ref:`Adding Scopes`).
+
+It's highly recommended that you use the tooling installed by the optional steps
+in the :ref:`prerequisites <Prerequisites>` guide to validate commit messages
+locally, as commitlint reports a live list of the acceptable scopes.
+
+.. _Adding Scopes:
+
+Adding Scopes
+-------------
+
+Scopes that are either a) unblessed in the configuration file, or b) do not
+exist in the configuration file at all are considered to be deprecated. If you
+are adding a new component that does not yet have a designated scope, please
+feel free to add one.
+
+For example, if you are adding or making modifications to `Foo`'s latest and
+greatest new platform `Bar`, you would add it to the `Platforms` changelog
+section, and the hierarchy should look something like this:
+
+.. code:: json
+
+ {
+ "sections": [
+ {
+ "title": "Platforms",
+ "sections": [
+ {
+ "title": "Foo",
+ "scopes": ["foo"],
+ "sections": [
+ {
+ "title": "Bar",
+ "scopes": ["bar"]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+
+When creating new scopes, try to keep them short and succinct, and use kebab
+case (``this-is-kebab-case``). Components with a product name (i.e. most
+platforms and some drivers) should use that name (e.g. ``gic600ae``,
+``flexspi``, ``stpmic1``), otherwise use a name that uniquely represents the
+component (e.g. ``marvell-comphy-3700``, ``rcar3-drivers``, ``a3720-uart``).
+
+Mandated Trailers
+-----------------
+
+Commits are expected to be signed off with the ``Signed-off-by:`` trailer using
+your real name and email address. You can do this automatically by committing
+with Git's ``-s`` flag.
+
+There may be multiple ``Signed-off-by:`` lines depending on the history of the
+patch, but one **must** be the committer. More details may be found in the
+`Gerrit Signed-off-by Lines guidelines`_.
+
+Ensure that each commit also has a unique ``Change-Id:`` line. If you have
+followed optional steps in the prerequisites to either install the Node.js tools
+or clone the repository using the "`Clone with commit-msg hook`" clone method,
+then this should be done automatically for you.
+
+More details may be found in the `Gerrit Change-Ids documentation`_.
+
+--------------
+
+*Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.*
+
+.. _Conventional Commits: https://www.conventionalcommits.org/en/v1.0.0
+.. _Gerrit Change-Ids documentation: https://review.trustedfirmware.org/Documentation/user-changeid.html
+.. _Gerrit Signed-off-by Lines guidelines: https://review.trustedfirmware.org/Documentation/user-signedoffby.html
+.. _issue: https://developer.trustedfirmware.org/project/board/1/
+.. _quick summary: https://www.conventionalcommits.org/en/v1.0.0/#summary
diff --git a/docs/process/contributing.rst b/docs/process/contributing.rst
index aa050dabe..d6f61d6c7 100644
--- a/docs/process/contributing.rst
+++ b/docs/process/contributing.rst
@@ -26,23 +26,11 @@ Getting Started
Making Changes
--------------
+- Ensure commits adhere to the the project's :ref:`Commit Style`.
+
- Make commits of logical units. See these general `Git guidelines`_ for
contributing to a project.
-- Ensure your commit messages comply with the `Conventional Commits`_
- specification:
-
- .. code::
-
- <type>[optional scope]: <description>
-
- [optional body]
-
- [optional footer(s)]
-
- You can use the tooling installed by the optional steps in the
- :ref:`prerequisites <Prerequisites>` guide to validate this locally.
-
- Keep the commits on topic. If you need to fix another bug or make another
enhancement, please address it on a separate topic branch.
@@ -52,39 +40,6 @@ Making Changes
- Avoid long commit series. If you do have a long series, consider whether
some commits should be squashed together or addressed in a separate topic.
-- Ensure that each commit in the series has at least one ``Signed-off-by:``
- line, using your real name and email address. The names in the
- ``Signed-off-by:`` and ``Commit:`` lines must match. By adding this line the
- contributor certifies the contribution is made under the terms of the
- :download:`Developer Certificate of Origin <../../dco.txt>`.
-
- There might be multiple ``Signed-off-by:`` lines, depending on the history
- of the patch.
-
- More details may be found in the `Gerrit Signed-off-by Lines guidelines`_.
-
-- Ensure that each commit also has a unique ``Change-Id:`` line. If you have
- cloned the repository with the "`Clone with commit-msg hook`" clone method
- (following the :ref:`Prerequisites` document), this should already be the
- case.
-
- More details may be found in the `Gerrit Change-Ids documentation`_.
-
-- Write informative and comprehensive commit messages. A good commit message
- provides all the background information needed for reviewers to understand
- the intent and rationale of the patch. This information is also useful for
- future reference.
-
- For example:
-
- - What does the patch do?
- - What motivated it?
- - What impact does it have?
- - How was it tested?
- - Have alternatives been considered? Why did you choose this approach over
- another one?
- - If it fixes an `issue`_, include a reference.
-
- Follow the :ref:`Coding Style` and :ref:`Coding Guidelines`.
- Use the checkpatch.pl script provided with the Linux source tree. A
@@ -289,15 +244,11 @@ Binary Components
*Copyright (c) 2013-2021, Arm Limited and Contributors. All rights reserved.*
-.. _Conventional Commits: https://www.conventionalcommits.org/en/v1.0.0
.. _developer.trustedfirmware.org: https://developer.trustedfirmware.org
.. _review.trustedfirmware.org: https://review.trustedfirmware.org
-.. _issue: https://developer.trustedfirmware.org/project/board/1/
.. _Trusted Firmware-A: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git
.. _Git guidelines: http://git-scm.com/book/ch5-2.html
.. _Gerrit Uploading Changes documentation: https://review.trustedfirmware.org/Documentation/user-upload.html
-.. _Gerrit Signed-off-by Lines guidelines: https://review.trustedfirmware.org/Documentation/user-signedoffby.html
-.. _Gerrit Change-Ids documentation: https://review.trustedfirmware.org/Documentation/user-changeid.html
.. _TF-A Tests: https://trustedfirmware-a-tests.readthedocs.io
.. _Trusted Firmware binary repository: https://review.trustedfirmware.org/admin/repos/tf-binaries
.. _tf-binaries-readme: https://git.trustedfirmware.org/tf-binaries.git/tree/readme.rst
diff --git a/docs/process/index.rst b/docs/process/index.rst
index 37324b0e9..bba2b40eb 100644
--- a/docs/process/index.rst
+++ b/docs/process/index.rst
@@ -8,6 +8,7 @@ Processes & Policies
security
platform-compatibility-policy
+ commit-style
coding-style
coding-guidelines
contributing
diff --git a/docs/requirements.in b/docs/requirements.in
new file mode 100644
index 000000000..5d771e58e
--- /dev/null
+++ b/docs/requirements.in
@@ -0,0 +1,5 @@
+myst-parser==0.15.2
+pip-tools==6.4.0
+sphinx==4.2.0
+sphinx-rtd-theme==1.0.0
+sphinxcontrib-plantuml==0.22
diff --git a/docs/requirements.txt b/docs/requirements.txt
index 358ed0e3c..03b11891c 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -1,3 +1,91 @@
-sphinx>=2.0.0
-sphinx-rtd-theme>=0.4.3
-sphinxcontrib-plantuml>=0.15
+#
+# This file is autogenerated by pip-compile with python 3.8
+# To update, run:
+#
+# pip-compile
+#
+alabaster==0.7.12
+ # via sphinx
+attrs==21.2.0
+ # via markdown-it-py
+babel==2.9.1
+ # via sphinx
+certifi==2021.5.30
+ # via requests
+charset-normalizer==2.0.4
+ # via requests
+click==8.0.1
+ # via pip-tools
+docutils==0.16
+ # via
+ # myst-parser
+ # sphinx
+ # sphinx-rtd-theme
+idna==3.2
+ # via requests
+imagesize==1.2.0
+ # via sphinx
+jinja2==3.0.1
+ # via
+ # myst-parser
+ # sphinx
+markdown-it-py==1.1.0
+ # via
+ # mdit-py-plugins
+ # myst-parser
+markupsafe==2.0.1
+ # via jinja2
+mdit-py-plugins==0.2.8
+ # via myst-parser
+myst-parser==0.15.2
+ # via -r requirements.in
+packaging==21.0
+ # via sphinx
+pep517==0.11.0
+ # via pip-tools
+pip-tools==6.4.0
+ # via -r requirements.in
+pygments==2.10.0
+ # via sphinx
+pyparsing==2.4.7
+ # via packaging
+pytz==2021.1
+ # via babel
+pyyaml==6.0
+ # via myst-parser
+requests==2.26.0
+ # via sphinx
+snowballstemmer==2.1.0
+ # via sphinx
+sphinx==4.2.0
+ # via
+ # -r requirements.in
+ # myst-parser
+ # sphinx-rtd-theme
+ # sphinxcontrib-plantuml
+sphinx-rtd-theme==1.0.0
+ # via -r requirements.in
+sphinxcontrib-applehelp==1.0.2
+ # via sphinx
+sphinxcontrib-devhelp==1.0.2
+ # via sphinx
+sphinxcontrib-htmlhelp==2.0.0
+ # via sphinx
+sphinxcontrib-jsmath==1.0.1
+ # via sphinx
+sphinxcontrib-plantuml==0.22
+ # via -r requirements.in
+sphinxcontrib-qthelp==1.0.3
+ # via sphinx
+sphinxcontrib-serializinghtml==1.1.5
+ # via sphinx
+tomli==1.2.1
+ # via pep517
+urllib3==1.26.6
+ # via requests
+wheel==0.37.0
+ # via pip-tools
+
+# The following packages are considered to be unsafe in a requirements file:
+# pip
+# setuptools
diff --git a/package-lock.json b/package-lock.json
index 61caf5705..1d95ac924 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,3835 @@
{
+ "name": "trusted-firmware-a",
+ "version": "2.5.0",
+ "lockfileVersion": 2,
"requires": true,
- "lockfileVersion": 1,
+ "packages": {
+ "": {
+ "name": "trusted-firmware-a",
+ "version": "2.5.0",
+ "hasInstallScript": true,
+ "license": "BSD-3-Clause",
+ "devDependencies": {
+ "@commitlint/cli": "^14.1.0",
+ "@commitlint/config-conventional": "^14.1.0",
+ "commitizen": "^4.2.4",
+ "conventional-changelog-tf-a": "file:tools/conventional-changelog-tf-a",
+ "cz-conventional-changelog": "^3.3.0",
+ "husky": "^7.0.4",
+ "standard-version": "^9.3.2"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz",
+ "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/highlight": "^7.12.13"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz",
+ "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==",
+ "dev": true
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.14.0",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz",
+ "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.14.0",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.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,
+ "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,
+ "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,
+ "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": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "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": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true,
+ "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,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@commitlint/cli": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-14.1.0.tgz",
+ "integrity": "sha512-Orq62jkl9qAGvjFqhehtAqjGY/duJ8hIRPPIHmGR2jIB96D4VTmazS3ZvqJz2Q9kKr61mLAk/171zm0FVzQCYA==",
+ "dev": true,
+ "dependencies": {
+ "@commitlint/format": "^14.1.0",
+ "@commitlint/lint": "^14.1.0",
+ "@commitlint/load": "^14.1.0",
+ "@commitlint/read": "^14.0.0",
+ "@commitlint/types": "^14.0.0",
+ "lodash": "^4.17.19",
+ "resolve-from": "5.0.0",
+ "resolve-global": "1.0.0",
+ "yargs": "^17.0.0"
+ },
+ "bin": {
+ "commitlint": "cli.js"
+ },
+ "engines": {
+ "node": ">=v12"
+ }
+ },
+ "node_modules/@commitlint/config-conventional": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-14.1.0.tgz",
+ "integrity": "sha512-JuhCqkEv8jyqmd54EpXPsQFpYc/8k7sfP1UziRdEvZSJUCLxz+8Pk4cNS0oF1BtjaWO7ITgXPlIZg47PyApGmg==",
+ "dev": true,
+ "dependencies": {
+ "conventional-changelog-conventionalcommits": "^4.3.1"
+ },
+ "engines": {
+ "node": ">=v12"
+ }
+ },
+ "node_modules/@commitlint/ensure": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-14.1.0.tgz",
+ "integrity": "sha512-xrYvFdqVepT3XA1BmSh88eKbvYKtLuQu98QLfgxVmwS99Kj3yW0sT3D7jGvNsynbIx2dhbXofDyubf/DKkpFrQ==",
+ "dev": true,
+ "dependencies": {
+ "@commitlint/types": "^14.0.0",
+ "lodash": "^4.17.19"
+ },
+ "engines": {
+ "node": ">=v12"
+ }
+ },
+ "node_modules/@commitlint/execute-rule": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-14.0.0.tgz",
+ "integrity": "sha512-Hh/HLpCBDlrD3Rx2x2pDBx6CU+OtVqGXh7mbFpNihAVx6B0zyZqm/vv0cdwdhfGW5OEn1BhCqHf1ZOvL/DwdWA==",
+ "dev": true,
+ "engines": {
+ "node": ">=v12"
+ }
+ },
+ "node_modules/@commitlint/format": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-14.1.0.tgz",
+ "integrity": "sha512-sF6engqqHjvxGctWRKjFs/HQeNowlpbVmmoP481b2UMQnVQnjjfXJvQsoLpaqFUvgc2sHM4L85F8BmAw+iHG1w==",
+ "dev": true,
+ "dependencies": {
+ "@commitlint/types": "^14.0.0",
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=v12"
+ }
+ },
+ "node_modules/@commitlint/is-ignored": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-14.0.0.tgz",
+ "integrity": "sha512-nJltYjXTa+mk+6SPe35nOZCCvt3Gh5mbDz008KQ4OPcn1GX1NG+pEgz1Kx3agDp/pc+JGnsrr5GV00gygIoloA==",
+ "dev": true,
+ "dependencies": {
+ "@commitlint/types": "^14.0.0",
+ "semver": "7.3.5"
+ },
+ "engines": {
+ "node": ">=v12"
+ }
+ },
+ "node_modules/@commitlint/lint": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-14.1.0.tgz",
+ "integrity": "sha512-CApGJEOtWU/CcuPD8HkOR1jdUYpjKutGPaeby9nSFzJhwl/UQOjxc4Nd+2g2ygsMi5l3N4j2sWQYEgccpFC3lA==",
+ "dev": true,
+ "dependencies": {
+ "@commitlint/is-ignored": "^14.0.0",
+ "@commitlint/parse": "^14.0.0",
+ "@commitlint/rules": "^14.1.0",
+ "@commitlint/types": "^14.0.0"
+ },
+ "engines": {
+ "node": ">=v12"
+ }
+ },
+ "node_modules/@commitlint/load": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-14.1.0.tgz",
+ "integrity": "sha512-p+HbgjhkqLsnxyjOUdEYHztHCp8n2oLVUJTmRPuP5FXLNevh6Gwmxf+NYC2J0sgD084aV2CFi3qu1W4yHWIknA==",
+ "dev": true,
+ "dependencies": {
+ "@commitlint/execute-rule": "^14.0.0",
+ "@commitlint/resolve-extends": "^14.1.0",
+ "@commitlint/types": "^14.0.0",
+ "@endemolshinegroup/cosmiconfig-typescript-loader": "^3.0.2",
+ "chalk": "^4.0.0",
+ "cosmiconfig": "^7.0.0",
+ "lodash": "^4.17.19",
+ "resolve-from": "^5.0.0",
+ "typescript": "^4.4.3"
+ },
+ "engines": {
+ "node": ">=v12"
+ }
+ },
+ "node_modules/@commitlint/message": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-14.0.0.tgz",
+ "integrity": "sha512-316Pum+bwDcZamOQw0DXSY17Dq9EjvL1zKdYIZqneu4lnXN6uFfi53Y/sP5crW6zlLdnuTHe1MnuewXPLHfH1Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=v12"
+ }
+ },
+ "node_modules/@commitlint/parse": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-14.0.0.tgz",
+ "integrity": "sha512-49qkk0TcwdxJPZUX8MElEzMlRFIL/cg64P4pk8HotFEm2HYdbxxZp6v3cbVw5WOsnRA0frrs+NNoOcIT83ccMQ==",
+ "dev": true,
+ "dependencies": {
+ "@commitlint/types": "^14.0.0",
+ "conventional-changelog-angular": "^5.0.11",
+ "conventional-commits-parser": "^3.2.2"
+ },
+ "engines": {
+ "node": ">=v12"
+ }
+ },
+ "node_modules/@commitlint/read": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-14.0.0.tgz",
+ "integrity": "sha512-WXXcSLBqwXTqnEmB0lbU2TrayDJ2G3qI/lxy1ianVmpQol8p9BjodAA6bYxtYYHdQFVXUrIsclzFP/naWG+hlQ==",
+ "dev": true,
+ "dependencies": {
+ "@commitlint/top-level": "^14.0.0",
+ "@commitlint/types": "^14.0.0",
+ "fs-extra": "^10.0.0",
+ "git-raw-commits": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=v12"
+ }
+ },
+ "node_modules/@commitlint/resolve-extends": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-14.1.0.tgz",
+ "integrity": "sha512-ko80k6QB6E6/OvGNWy4u7gzzWyluDT3VDNL2kfZaDywsnrYntUKyT4Do97gQ7orttITzj2GRtk3KWClVz4rUUQ==",
+ "dev": true,
+ "dependencies": {
+ "import-fresh": "^3.0.0",
+ "lodash": "^4.17.19",
+ "resolve-from": "^5.0.0",
+ "resolve-global": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=v12"
+ }
+ },
+ "node_modules/@commitlint/rules": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-14.1.0.tgz",
+ "integrity": "sha512-6jmv414/1JzGzDI/DS+snAMhcL6roQKPdg0WB3kWTWN52EvWXBFm0HIMGt2H/FlRKxozwVXlQN60/1fNIl98xA==",
+ "dev": true,
+ "dependencies": {
+ "@commitlint/ensure": "^14.1.0",
+ "@commitlint/message": "^14.0.0",
+ "@commitlint/to-lines": "^14.0.0",
+ "@commitlint/types": "^14.0.0",
+ "execa": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=v12"
+ }
+ },
+ "node_modules/@commitlint/to-lines": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-14.0.0.tgz",
+ "integrity": "sha512-uIXk54oJDuYyLpI208s3+cGmJ323yvSJ9LB7yUDMWUeJi2LgRxE2EBZL995kLQdnoAsBBXcLq+VDyppg5bV/cg==",
+ "dev": true,
+ "engines": {
+ "node": ">=v12"
+ }
+ },
+ "node_modules/@commitlint/top-level": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-14.0.0.tgz",
+ "integrity": "sha512-MZDKZfWfl9g4KozgWBGTCrI2cXkMHnBFlhwvEfrAu5G8wd5aL1f2uWEUMnBMjUikmhVj99i1pzge4XFWHQ29wQ==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=v12"
+ }
+ },
+ "node_modules/@commitlint/types": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-14.0.0.tgz",
+ "integrity": "sha512-sIls1nP2uSbGL466edYlh8mn7O/WP4i3bcvP+2DMhkscRCSgaPhNRWDilhYVsHt2Vu1HTQ27uT0Bj5/Lt2+EcQ==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=v12"
+ }
+ },
+ "node_modules/@endemolshinegroup/cosmiconfig-typescript-loader": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz",
+ "integrity": "sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA==",
+ "dev": true,
+ "dependencies": {
+ "lodash.get": "^4",
+ "make-error": "^1",
+ "ts-node": "^9",
+ "tslib": "^2"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "cosmiconfig": ">=6"
+ }
+ },
+ "node_modules/@endemolshinegroup/cosmiconfig-typescript-loader/node_modules/tslib": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+ "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
+ "dev": true
+ },
+ "node_modules/@hutson/parse-repository-url": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz",
+ "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@types/minimist": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz",
+ "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==",
+ "dev": true
+ },
+ "node_modules/@types/normalize-package-data": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
+ "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
+ "dev": true
+ },
+ "node_modules/@types/parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
+ "dev": true
+ },
+ "node_modules/add-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz",
+ "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=",
+ "dev": true
+ },
+ "node_modules/ansi-escapes": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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,
+ "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,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/arg": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
+ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
+ "dev": true
+ },
+ "node_modules/array-ify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
+ "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=",
+ "dev": true
+ },
+ "node_modules/arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
+ },
+ "node_modules/cachedir": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.2.0.tgz",
+ "integrity": "sha512-VvxA0xhNqIIfg0V9AmJkDg91DaJwryutH5rVEZAhcNi4iJFj9f+QxmAjgK1LT9I8OgToX27fypX6/MeCXVbBjQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase-keys": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
+ "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^5.3.1",
+ "map-obj": "^4.0.0",
+ "quick-lru": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+ "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "dev": true,
+ "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/chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "dev": true
+ },
+ "node_modules/cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "dependencies": {
+ "restore-cursor": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cli-width": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
+ "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
+ "dev": true
+ },
+ "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,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "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,
+ "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
+ },
+ "node_modules/commitizen": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/commitizen/-/commitizen-4.2.4.tgz",
+ "integrity": "sha512-LlZChbDzg3Ir3O2S7jSo/cgWp5/QwylQVr59K4xayVq8S4/RdKzSyJkghAiZZHfhh5t4pxunUoyeg0ml1q/7aw==",
+ "dev": true,
+ "dependencies": {
+ "cachedir": "2.2.0",
+ "cz-conventional-changelog": "3.2.0",
+ "dedent": "0.7.0",
+ "detect-indent": "6.0.0",
+ "find-node-modules": "^2.1.2",
+ "find-root": "1.1.0",
+ "fs-extra": "8.1.0",
+ "glob": "7.1.4",
+ "inquirer": "6.5.2",
+ "is-utf8": "^0.2.1",
+ "lodash": "^4.17.20",
+ "minimist": "1.2.5",
+ "strip-bom": "4.0.0",
+ "strip-json-comments": "3.0.1"
+ },
+ "bin": {
+ "commitizen": "bin/commitizen",
+ "cz": "bin/git-cz",
+ "git-cz": "bin/git-cz"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/commitizen/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,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/commitizen/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,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/commitizen/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,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/commitizen/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "node_modules/commitizen/node_modules/cz-conventional-changelog": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.2.0.tgz",
+ "integrity": "sha512-yAYxeGpVi27hqIilG1nh4A9Bnx4J3Ov+eXy4koL3drrR+IO9GaWPsKjik20ht608Asqi8TQPf0mczhEeyAtMzg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^2.4.1",
+ "commitizen": "^4.0.3",
+ "conventional-commit-types": "^3.0.0",
+ "lodash.map": "^4.5.1",
+ "longest": "^2.0.1",
+ "word-wrap": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 10"
+ },
+ "optionalDependencies": {
+ "@commitlint/load": ">6.1.1"
+ }
+ },
+ "node_modules/commitizen/node_modules/fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
+ }
+ },
+ "node_modules/commitizen/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/commitizen/node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/commitizen/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,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/commitizen/node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "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,
+ "dependencies": {
+ "array-ify": "^1.0.0",
+ "dot-prop": "^5.1.0"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "node_modules/concat-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
+ "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
+ "dev": true,
+ "engines": [
+ "node >= 6.0"
+ ],
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.0.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "node_modules/conventional-changelog": {
+ "version": "3.1.24",
+ "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.24.tgz",
+ "integrity": "sha512-ed6k8PO00UVvhExYohroVPXcOJ/K1N0/drJHx/faTH37OIZthlecuLIRX/T6uOp682CAoVoFpu+sSEaeuH6Asg==",
+ "dev": true,
+ "dependencies": {
+ "conventional-changelog-angular": "^5.0.12",
+ "conventional-changelog-atom": "^2.0.8",
+ "conventional-changelog-codemirror": "^2.0.8",
+ "conventional-changelog-conventionalcommits": "^4.5.0",
+ "conventional-changelog-core": "^4.2.1",
+ "conventional-changelog-ember": "^2.0.9",
+ "conventional-changelog-eslint": "^3.0.9",
+ "conventional-changelog-express": "^2.0.6",
+ "conventional-changelog-jquery": "^3.0.11",
+ "conventional-changelog-jshint": "^2.0.9",
+ "conventional-changelog-preset-loader": "^2.3.4"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/conventional-changelog-angular": {
+ "version": "5.0.13",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz",
+ "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==",
+ "dev": true,
+ "dependencies": {
+ "compare-func": "^2.0.0",
+ "q": "^1.5.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/conventional-changelog-atom": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz",
+ "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==",
+ "dev": true,
+ "dependencies": {
+ "q": "^1.5.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/conventional-changelog-codemirror": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz",
+ "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==",
+ "dev": true,
+ "dependencies": {
+ "q": "^1.5.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/conventional-changelog-config-spec": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz",
+ "integrity": "sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==",
+ "dev": true
+ },
+ "node_modules/conventional-changelog-conventionalcommits": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.1.tgz",
+ "integrity": "sha512-lzWJpPZhbM1R0PIzkwzGBCnAkH5RKJzJfFQZcl/D+2lsJxAwGnDKBqn/F4C1RD31GJNn8NuKWQzAZDAVXPp2Mw==",
+ "dev": true,
+ "dependencies": {
+ "compare-func": "^2.0.0",
+ "lodash": "^4.17.15",
+ "q": "^1.5.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/conventional-changelog-core": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz",
+ "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==",
+ "dev": true,
+ "dependencies": {
+ "add-stream": "^1.0.0",
+ "conventional-changelog-writer": "^5.0.0",
+ "conventional-commits-parser": "^3.2.0",
+ "dateformat": "^3.0.0",
+ "get-pkg-repo": "^4.0.0",
+ "git-raw-commits": "^2.0.8",
+ "git-remote-origin-url": "^2.0.0",
+ "git-semver-tags": "^4.1.1",
+ "lodash": "^4.17.15",
+ "normalize-package-data": "^3.0.0",
+ "q": "^1.5.1",
+ "read-pkg": "^3.0.0",
+ "read-pkg-up": "^3.0.0",
+ "through2": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/conventional-changelog-core/node_modules/find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/conventional-changelog-core/node_modules/hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "dev": true
+ },
+ "node_modules/conventional-changelog-core/node_modules/locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/conventional-changelog-core/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,
+ "dependencies": {
+ "p-try": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/conventional-changelog-core/node_modules/p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/conventional-changelog-core/node_modules/p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/conventional-changelog-core/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/conventional-changelog-core/node_modules/path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "dependencies": {
+ "pify": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/conventional-changelog-core/node_modules/pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/conventional-changelog-core/node_modules/read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "dev": true,
+ "dependencies": {
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/conventional-changelog-core/node_modules/read-pkg-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
+ "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/conventional-changelog-core/node_modules/read-pkg/node_modules/normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "dependencies": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "node_modules/conventional-changelog-core/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/conventional-changelog-ember": {
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz",
+ "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==",
+ "dev": true,
+ "dependencies": {
+ "q": "^1.5.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/conventional-changelog-eslint": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz",
+ "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==",
+ "dev": true,
+ "dependencies": {
+ "q": "^1.5.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/conventional-changelog-express": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz",
+ "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==",
+ "dev": true,
+ "dependencies": {
+ "q": "^1.5.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/conventional-changelog-jquery": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz",
+ "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==",
+ "dev": true,
+ "dependencies": {
+ "q": "^1.5.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/conventional-changelog-jshint": {
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz",
+ "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==",
+ "dev": true,
+ "dependencies": {
+ "compare-func": "^2.0.0",
+ "q": "^1.5.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/conventional-changelog-preset-loader": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz",
+ "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/conventional-changelog-tf-a": {
+ "resolved": "tools/conventional-changelog-tf-a",
+ "link": true
+ },
+ "node_modules/conventional-changelog-writer": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.0.tgz",
+ "integrity": "sha512-HnDh9QHLNWfL6E1uHz6krZEQOgm8hN7z/m7tT16xwd802fwgMN0Wqd7AQYVkhpsjDUx/99oo+nGgvKF657XP5g==",
+ "dev": true,
+ "dependencies": {
+ "conventional-commits-filter": "^2.0.7",
+ "dateformat": "^3.0.0",
+ "handlebars": "^4.7.6",
+ "json-stringify-safe": "^5.0.1",
+ "lodash": "^4.17.15",
+ "meow": "^8.0.0",
+ "semver": "^6.0.0",
+ "split": "^1.0.0",
+ "through2": "^4.0.0"
+ },
+ "bin": {
+ "conventional-changelog-writer": "cli.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/conventional-changelog-writer/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/conventional-commit-types": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-3.0.0.tgz",
+ "integrity": "sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==",
+ "dev": true
+ },
+ "node_modules/conventional-commits-filter": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz",
+ "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==",
+ "dev": true,
+ "dependencies": {
+ "lodash.ismatch": "^4.4.0",
+ "modify-values": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/conventional-commits-parser": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.3.tgz",
+ "integrity": "sha512-YyRDR7On9H07ICFpRm/igcdjIqebXbvf4Cff+Pf0BrBys1i1EOzx9iFXNlAbdrLAR8jf7bkUYkDAr8pEy0q4Pw==",
+ "dev": true,
+ "dependencies": {
+ "is-text-path": "^1.0.1",
+ "JSONStream": "^1.0.4",
+ "lodash": "^4.17.15",
+ "meow": "^8.0.0",
+ "split2": "^3.0.0",
+ "through2": "^4.0.0"
+ },
+ "bin": {
+ "conventional-commits-parser": "cli.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/conventional-recommended-bump": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz",
+ "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==",
+ "dev": true,
+ "dependencies": {
+ "concat-stream": "^2.0.0",
+ "conventional-changelog-preset-loader": "^2.3.4",
+ "conventional-commits-filter": "^2.0.7",
+ "conventional-commits-parser": "^3.2.0",
+ "git-raw-commits": "^2.0.8",
+ "git-semver-tags": "^4.1.1",
+ "meow": "^8.0.0",
+ "q": "^1.5.1"
+ },
+ "bin": {
+ "conventional-recommended-bump": "cli.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "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
+ },
+ "node_modules/cosmiconfig": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz",
+ "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==",
+ "dev": true,
+ "dependencies": {
+ "@types/parse-json": "^4.0.0",
+ "import-fresh": "^3.2.1",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0",
+ "yaml": "^1.10.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/create-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+ "dev": 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,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/cross-spawn/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,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/cz-conventional-changelog": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz",
+ "integrity": "sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^2.4.1",
+ "commitizen": "^4.0.3",
+ "conventional-commit-types": "^3.0.0",
+ "lodash.map": "^4.5.1",
+ "longest": "^2.0.1",
+ "word-wrap": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 10"
+ },
+ "optionalDependencies": {
+ "@commitlint/load": ">6.1.1"
+ }
+ },
+ "node_modules/cz-conventional-changelog/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,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cz-conventional-changelog/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,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cz-conventional-changelog/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,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/cz-conventional-changelog/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "node_modules/cz-conventional-changelog/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cz-conventional-changelog/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,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/dargs": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz",
+ "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dateformat": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
+ "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decamelize-keys": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
+ "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
+ "dev": true,
+ "dependencies": {
+ "decamelize": "^1.1.0",
+ "map-obj": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decamelize-keys/node_modules/map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/dedent": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
+ "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=",
+ "dev": true
+ },
+ "node_modules/detect-file": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
+ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/detect-indent": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz",
+ "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/detect-newline": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
+ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/diff": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
+ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "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,
+ "dependencies": {
+ "is-obj": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dotgitignore": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz",
+ "integrity": "sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^3.0.0",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/dotgitignore/node_modules/find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/dotgitignore/node_modules/locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/dotgitignore/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/dotgitignore/node_modules/p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/dotgitignore/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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
+ },
+ "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,
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true,
+ "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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "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/execa/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,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/execa/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,
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/expand-tilde": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+ "dev": true,
+ "dependencies": {
+ "homedir-polyfill": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/external-editor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+ "dev": true,
+ "dependencies": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-node-modules": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.1.2.tgz",
+ "integrity": "sha512-x+3P4mbtRPlSiVE1Qco0Z4YLU8WFiFcuWTf3m75OV9Uzcfs2Bg+O9N+r/K0AnmINBW06KpfqKwYJbFlFq4qNug==",
+ "dev": true,
+ "dependencies": {
+ "findup-sync": "^4.0.0",
+ "merge": "^2.1.0"
+ }
+ },
+ "node_modules/find-root": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==",
+ "dev": true
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/findup-sync": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz",
+ "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==",
+ "dev": true,
+ "dependencies": {
+ "detect-file": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "micromatch": "^4.0.2",
+ "resolve-dir": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/fs-access": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz",
+ "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=",
+ "dev": true,
+ "dependencies": {
+ "null-check": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
+ "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "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,
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-pkg-repo": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz",
+ "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==",
+ "dev": true,
+ "dependencies": {
+ "@hutson/parse-repository-url": "^3.0.0",
+ "hosted-git-info": "^4.0.0",
+ "through2": "^2.0.0",
+ "yargs": "^16.2.0"
+ },
+ "bin": {
+ "get-pkg-repo": "src/cli.js"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-pkg-repo/node_modules/readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "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/get-pkg-repo/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
+ },
+ "node_modules/get-pkg-repo/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,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/get-pkg-repo/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,
+ "dependencies": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
+ "node_modules/get-pkg-repo/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,
+ "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/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,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/git-raw-commits": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.10.tgz",
+ "integrity": "sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ==",
+ "dev": true,
+ "dependencies": {
+ "dargs": "^7.0.0",
+ "lodash": "^4.17.15",
+ "meow": "^8.0.0",
+ "split2": "^3.0.0",
+ "through2": "^4.0.0"
+ },
+ "bin": {
+ "git-raw-commits": "cli.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/git-remote-origin-url": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz",
+ "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=",
+ "dev": true,
+ "dependencies": {
+ "gitconfiglocal": "^1.0.0",
+ "pify": "^2.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/git-semver-tags": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz",
+ "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==",
+ "dev": true,
+ "dependencies": {
+ "meow": "^8.0.0",
+ "semver": "^6.0.0"
+ },
+ "bin": {
+ "git-semver-tags": "cli.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/git-semver-tags/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/gitconfiglocal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz",
+ "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=",
+ "dev": true,
+ "dependencies": {
+ "ini": "^1.3.2"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
+ "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/global-dirs": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
+ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
+ "dev": true,
+ "dependencies": {
+ "ini": "^1.3.4"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/global-modules": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+ "dev": true,
+ "dependencies": {
+ "global-prefix": "^1.0.1",
+ "is-windows": "^1.0.1",
+ "resolve-dir": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/global-prefix": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+ "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+ "dev": true,
+ "dependencies": {
+ "expand-tilde": "^2.0.2",
+ "homedir-polyfill": "^1.0.1",
+ "ini": "^1.3.4",
+ "is-windows": "^1.0.1",
+ "which": "^1.2.14"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.6",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
+ "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
+ "dev": true
+ },
+ "node_modules/handlebars": {
+ "version": "4.7.7",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
+ "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.5",
+ "neo-async": "^2.6.0",
+ "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/hard-rejection": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
+ "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/homedir-polyfill": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+ "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
+ "dev": true,
+ "dependencies": {
+ "parse-passwd": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/hosted-git-info": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz",
+ "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "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,
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/husky": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz",
+ "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==",
+ "dev": true,
+ "bin": {
+ "husky": "lib/bin.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/typicode"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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,
+ "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,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "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
+ },
+ "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
+ },
+ "node_modules/inquirer": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
+ "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-escapes": "^3.2.0",
+ "chalk": "^2.4.2",
+ "cli-cursor": "^2.1.0",
+ "cli-width": "^2.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^2.0.0",
+ "lodash": "^4.17.12",
+ "mute-stream": "0.0.7",
+ "run-async": "^2.2.0",
+ "rxjs": "^6.4.0",
+ "string-width": "^2.1.0",
+ "strip-ansi": "^5.1.0",
+ "through": "^2.3.6"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/inquirer/node_modules/ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/inquirer/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,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/inquirer/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,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/inquirer/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,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/inquirer/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "node_modules/inquirer/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/inquirer/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/inquirer/node_modules/string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "dependencies": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/inquirer/node_modules/string-width/node_modules/strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/inquirer/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/inquirer/node_modules/strip-ansi/node_modules/ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/inquirer/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,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "node_modules/is-core-module": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz",
+ "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true,
+ "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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "dev": true,
+ "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,
+ "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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-text-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz",
+ "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=",
+ "dev": true,
+ "dependencies": {
+ "text-extensions": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
+ "node_modules/is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "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
+ },
+ "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
+ },
+ "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
+ },
+ "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": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+ "dev": true
+ },
+ "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,
+ "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": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
+ "dev": true,
+ "engines": [
+ "node >= 0.2.0"
+ ]
+ },
+ "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,
+ "dependencies": {
+ "jsonparse": "^1.2.0",
+ "through": ">=2.2.7 <3"
+ },
+ "bin": {
+ "JSONStream": "bin.js"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
+ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
+ "dev": true
+ },
+ "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": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "dev": true,
+ "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": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "dependencies": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/load-json-file/node_modules/pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/load-json-file/node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "node_modules/lodash.get": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+ "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
+ "dev": true
+ },
+ "node_modules/lodash.ismatch": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz",
+ "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=",
+ "dev": true
+ },
+ "node_modules/lodash.map": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz",
+ "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=",
+ "dev": true
+ },
+ "node_modules/longest": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/longest/-/longest-2.0.1.tgz",
+ "integrity": "sha1-eB4YMpaqlPbU2RbcM10NF676I/g=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/make-error": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
+ "dev": true
+ },
+ "node_modules/map-obj": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
+ "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/meow": {
+ "version": "8.1.2",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz",
+ "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==",
+ "dev": true,
+ "dependencies": {
+ "@types/minimist": "^1.2.0",
+ "camelcase-keys": "^6.2.2",
+ "decamelize-keys": "^1.1.0",
+ "hard-rejection": "^2.1.0",
+ "minimist-options": "4.1.0",
+ "normalize-package-data": "^3.0.0",
+ "read-pkg-up": "^7.0.1",
+ "redent": "^3.0.0",
+ "trim-newlines": "^3.0.0",
+ "type-fest": "^0.18.0",
+ "yargs-parser": "^20.2.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/merge": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz",
+ "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==",
+ "dev": true
+ },
+ "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
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
+ "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.1",
+ "picomatch": "^2.2.3"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/min-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
+ "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+ "dev": true
+ },
+ "node_modules/minimist-options": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
+ "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
+ "dev": true,
+ "dependencies": {
+ "arrify": "^1.0.1",
+ "is-plain-obj": "^1.1.0",
+ "kind-of": "^6.0.3"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/modify-values": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
+ "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mute-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+ "dev": true
+ },
+ "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
+ },
+ "node_modules/normalize-package-data": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
+ "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
+ "dev": true,
+ "dependencies": {
+ "hosted-git-info": "^4.0.1",
+ "is-core-module": "^2.5.0",
+ "semver": "^7.3.4",
+ "validate-npm-package-license": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "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,
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/null-check": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz",
+ "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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,
+ "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,
+ "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-passwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/picomatch": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz",
+ "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "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
+ },
+ "node_modules/q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6.0",
+ "teleport": ">=0.2.0"
+ }
+ },
+ "node_modules/quick-lru": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
+ "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/read-pkg": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
+ "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
+ "dev": true,
+ "dependencies": {
+ "@types/normalize-package-data": "^2.4.0",
+ "normalize-package-data": "^2.5.0",
+ "parse-json": "^5.0.0",
+ "type-fest": "^0.6.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/read-pkg-up": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
+ "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^4.1.0",
+ "read-pkg": "^5.2.0",
+ "type-fest": "^0.8.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/read-pkg/node_modules/hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "dev": true
+ },
+ "node_modules/read-pkg/node_modules/normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "dependencies": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "node_modules/read-pkg/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/read-pkg/node_modules/type-fest": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
+ "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/redent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
+ "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
+ "dev": true,
+ "dependencies": {
+ "indent-string": "^4.0.0",
+ "strip-indent": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.20.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
+ "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.2.0",
+ "path-parse": "^1.0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-dir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+ "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
+ "dev": true,
+ "dependencies": {
+ "expand-tilde": "^2.0.0",
+ "global-modules": "^1.0.0"
+ },
+ "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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-global": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz",
+ "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==",
+ "dev": true,
+ "dependencies": {
+ "global-dirs": "^0.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "dependencies": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/run-async": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
+ "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/rxjs": {
+ "version": "6.6.7",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+ "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^1.9.0"
+ },
+ "engines": {
+ "npm": ">=2.0.0"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "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"
+ }
+ ]
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "node_modules/semver": {
+ "version": "7.3.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+ "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "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,
+ "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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
+ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
+ "dev": true
+ },
+ "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,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.20",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz",
+ "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==",
+ "dev": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/spdx-correct": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
+ "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+ "dev": true,
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-exceptions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
+ "dev": true
+ },
+ "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,
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-license-ids": {
+ "version": "3.0.10",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz",
+ "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==",
+ "dev": true
+ },
+ "node_modules/split": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
+ "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
+ "dev": true,
+ "dependencies": {
+ "through": "2"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/split2": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz",
+ "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "^3.0.0"
+ }
+ },
+ "node_modules/standard-version": {
+ "version": "9.3.2",
+ "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-9.3.2.tgz",
+ "integrity": "sha512-u1rfKP4o4ew7Yjbfycv80aNMN2feTiqseAhUhrrx2XtdQGmu7gucpziXe68Z4YfHVqlxVEzo4aUA0Iu3VQOTgQ==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^2.4.2",
+ "conventional-changelog": "3.1.24",
+ "conventional-changelog-config-spec": "2.1.0",
+ "conventional-changelog-conventionalcommits": "4.6.1",
+ "conventional-recommended-bump": "6.1.0",
+ "detect-indent": "^6.0.0",
+ "detect-newline": "^3.1.0",
+ "dotgitignore": "^2.1.0",
+ "figures": "^3.1.0",
+ "find-up": "^5.0.0",
+ "fs-access": "^1.0.1",
+ "git-semver-tags": "^4.0.0",
+ "semver": "^7.1.1",
+ "stringify-package": "^1.0.1",
+ "yargs": "^16.0.0"
+ },
+ "bin": {
+ "standard-version": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/standard-version/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,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/standard-version/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,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/standard-version/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,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/standard-version/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "node_modules/standard-version/node_modules/figures": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
+ "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/standard-version/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/standard-version/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,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/standard-version/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,
+ "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/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.2.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,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stringify-package": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz",
+ "integrity": "sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==",
+ "dev": true
+ },
+ "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,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
+ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-indent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
+ "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+ "dev": true,
+ "dependencies": {
+ "min-indent": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
+ "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/text-extensions": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz",
+ "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "node_modules/through2": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
+ "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "3"
+ }
+ },
+ "node_modules/tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "dependencies": {
+ "os-tmpdir": "~1.0.2"
+ },
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
+ "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,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/trim-newlines": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
+ "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ts-node": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz",
+ "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==",
+ "dev": true,
+ "dependencies": {
+ "arg": "^4.1.0",
+ "create-require": "^1.1.0",
+ "diff": "^4.0.1",
+ "make-error": "^1.1.1",
+ "source-map-support": "^0.5.17",
+ "yn": "3.1.1"
+ },
+ "bin": {
+ "ts-node": "dist/bin.js",
+ "ts-node-script": "dist/bin-script.js",
+ "ts-node-transpile-only": "dist/bin-transpile.js",
+ "ts-script": "dist/bin-script-deprecated.js"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "typescript": ">=2.7"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ },
+ "node_modules/type-fest": {
+ "version": "0.18.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
+ "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "node_modules/typescript": {
+ "version": "4.4.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz",
+ "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==",
+ "dev": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=4.2.0"
+ }
+ },
+ "node_modules/uglify-js": {
+ "version": "3.14.3",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.3.tgz",
+ "integrity": "sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g==",
+ "dev": true,
+ "optional": true,
+ "bin": {
+ "uglifyjs": "bin/uglifyjs"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "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,
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
+ },
+ "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,
+ "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": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "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,
+ "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,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/yaml": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "17.2.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.1.tgz",
+ "integrity": "sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q==",
+ "dev": true,
+ "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": ">=12"
+ }
+ },
+ "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,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yn": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "tools/conventional-changelog-tf-a": {
+ "version": "1.0.0",
+ "dev": true,
+ "dependencies": {
+ "conventional-changelog-conventionalcommits": "^4.6.1",
+ "execa": "^5.1.1",
+ "lodash": "^4.17.21",
+ "q": "^1.5.1"
+ }
+ }
+ },
"dependencies": {
"@babel/code-frame": {
"version": "7.12.13",
@@ -80,138 +3909,130 @@
}
}
},
- "@babel/runtime": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz",
- "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==",
+ "@commitlint/cli": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-14.1.0.tgz",
+ "integrity": "sha512-Orq62jkl9qAGvjFqhehtAqjGY/duJ8hIRPPIHmGR2jIB96D4VTmazS3ZvqJz2Q9kKr61mLAk/171zm0FVzQCYA==",
"dev": true,
"requires": {
- "regenerator-runtime": "^0.13.4"
- }
- },
- "@commitlint/cli": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-11.0.0.tgz",
- "integrity": "sha512-YWZWg1DuqqO5Zjh7vUOeSX76vm0FFyz4y0cpGMFhrhvUi5unc4IVfCXZ6337R9zxuBtmveiRuuhQqnRRer+13g==",
- "dev": true,
- "requires": {
- "@babel/runtime": "^7.11.2",
- "@commitlint/format": "^11.0.0",
- "@commitlint/lint": "^11.0.0",
- "@commitlint/load": "^11.0.0",
- "@commitlint/read": "^11.0.0",
- "chalk": "4.1.0",
- "core-js": "^3.6.1",
- "get-stdin": "8.0.0",
+ "@commitlint/format": "^14.1.0",
+ "@commitlint/lint": "^14.1.0",
+ "@commitlint/load": "^14.1.0",
+ "@commitlint/read": "^14.0.0",
+ "@commitlint/types": "^14.0.0",
"lodash": "^4.17.19",
"resolve-from": "5.0.0",
"resolve-global": "1.0.0",
- "yargs": "^15.1.0"
+ "yargs": "^17.0.0"
}
},
"@commitlint/config-conventional": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-11.0.0.tgz",
- "integrity": "sha512-SNDRsb5gLuDd2PL83yCOQX6pE7gevC79UPFx+GLbLfw6jGnnbO9/tlL76MLD8MOViqGbo7ZicjChO9Gn+7tHhA==",
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-14.1.0.tgz",
+ "integrity": "sha512-JuhCqkEv8jyqmd54EpXPsQFpYc/8k7sfP1UziRdEvZSJUCLxz+8Pk4cNS0oF1BtjaWO7ITgXPlIZg47PyApGmg==",
"dev": true,
"requires": {
"conventional-changelog-conventionalcommits": "^4.3.1"
}
},
"@commitlint/ensure": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-11.0.0.tgz",
- "integrity": "sha512-/T4tjseSwlirKZdnx4AuICMNNlFvRyPQimbZIOYujp9DSO6XRtOy9NrmvWujwHsq9F5Wb80QWi4WMW6HMaENug==",
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-14.1.0.tgz",
+ "integrity": "sha512-xrYvFdqVepT3XA1BmSh88eKbvYKtLuQu98QLfgxVmwS99Kj3yW0sT3D7jGvNsynbIx2dhbXofDyubf/DKkpFrQ==",
"dev": true,
"requires": {
- "@commitlint/types": "^11.0.0",
+ "@commitlint/types": "^14.0.0",
"lodash": "^4.17.19"
}
},
"@commitlint/execute-rule": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-11.0.0.tgz",
- "integrity": "sha512-g01p1g4BmYlZ2+tdotCavrMunnPFPhTzG1ZiLKTCYrooHRbmvqo42ZZn4QMStUEIcn+jfLb6BRZX3JzIwA1ezQ==",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-14.0.0.tgz",
+ "integrity": "sha512-Hh/HLpCBDlrD3Rx2x2pDBx6CU+OtVqGXh7mbFpNihAVx6B0zyZqm/vv0cdwdhfGW5OEn1BhCqHf1ZOvL/DwdWA==",
"dev": true
},
"@commitlint/format": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-11.0.0.tgz",
- "integrity": "sha512-bpBLWmG0wfZH/svzqD1hsGTpm79TKJWcf6EXZllh2J/LSSYKxGlv967lpw0hNojme0sZd4a/97R3qA2QHWWSLg==",
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-14.1.0.tgz",
+ "integrity": "sha512-sF6engqqHjvxGctWRKjFs/HQeNowlpbVmmoP481b2UMQnVQnjjfXJvQsoLpaqFUvgc2sHM4L85F8BmAw+iHG1w==",
"dev": true,
"requires": {
- "@commitlint/types": "^11.0.0",
+ "@commitlint/types": "^14.0.0",
"chalk": "^4.0.0"
}
},
"@commitlint/is-ignored": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-11.0.0.tgz",
- "integrity": "sha512-VLHOUBN+sOlkYC4tGuzE41yNPO2w09sQnOpfS+pSPnBFkNUUHawEuA44PLHtDvQgVuYrMAmSWFQpWabMoP5/Xg==",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-14.0.0.tgz",
+ "integrity": "sha512-nJltYjXTa+mk+6SPe35nOZCCvt3Gh5mbDz008KQ4OPcn1GX1NG+pEgz1Kx3agDp/pc+JGnsrr5GV00gygIoloA==",
"dev": true,
"requires": {
- "@commitlint/types": "^11.0.0",
- "semver": "7.3.2"
+ "@commitlint/types": "^14.0.0",
+ "semver": "7.3.5"
}
},
"@commitlint/lint": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-11.0.0.tgz",
- "integrity": "sha512-Q8IIqGIHfwKr8ecVZyYh6NtXFmKw4YSEWEr2GJTB/fTZXgaOGtGFZDWOesCZllQ63f1s/oWJYtVv5RAEuwN8BQ==",
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-14.1.0.tgz",
+ "integrity": "sha512-CApGJEOtWU/CcuPD8HkOR1jdUYpjKutGPaeby9nSFzJhwl/UQOjxc4Nd+2g2ygsMi5l3N4j2sWQYEgccpFC3lA==",
"dev": true,
"requires": {
- "@commitlint/is-ignored": "^11.0.0",
- "@commitlint/parse": "^11.0.0",
- "@commitlint/rules": "^11.0.0",
- "@commitlint/types": "^11.0.0"
+ "@commitlint/is-ignored": "^14.0.0",
+ "@commitlint/parse": "^14.0.0",
+ "@commitlint/rules": "^14.1.0",
+ "@commitlint/types": "^14.0.0"
}
},
"@commitlint/load": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-11.0.0.tgz",
- "integrity": "sha512-t5ZBrtgvgCwPfxmG811FCp39/o3SJ7L+SNsxFL92OR4WQxPcu6c8taD0CG2lzOHGuRyuMxZ7ps3EbngT2WpiCg==",
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-14.1.0.tgz",
+ "integrity": "sha512-p+HbgjhkqLsnxyjOUdEYHztHCp8n2oLVUJTmRPuP5FXLNevh6Gwmxf+NYC2J0sgD084aV2CFi3qu1W4yHWIknA==",
"dev": true,
"requires": {
- "@commitlint/execute-rule": "^11.0.0",
- "@commitlint/resolve-extends": "^11.0.0",
- "@commitlint/types": "^11.0.0",
- "chalk": "4.1.0",
+ "@commitlint/execute-rule": "^14.0.0",
+ "@commitlint/resolve-extends": "^14.1.0",
+ "@commitlint/types": "^14.0.0",
+ "@endemolshinegroup/cosmiconfig-typescript-loader": "^3.0.2",
+ "chalk": "^4.0.0",
"cosmiconfig": "^7.0.0",
"lodash": "^4.17.19",
- "resolve-from": "^5.0.0"
+ "resolve-from": "^5.0.0",
+ "typescript": "^4.4.3"
}
},
"@commitlint/message": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-11.0.0.tgz",
- "integrity": "sha512-01ObK/18JL7PEIE3dBRtoMmU6S3ecPYDTQWWhcO+ErA3Ai0KDYqV5VWWEijdcVafNpdeUNrEMigRkxXHQLbyJA==",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-14.0.0.tgz",
+ "integrity": "sha512-316Pum+bwDcZamOQw0DXSY17Dq9EjvL1zKdYIZqneu4lnXN6uFfi53Y/sP5crW6zlLdnuTHe1MnuewXPLHfH1Q==",
"dev": true
},
"@commitlint/parse": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-11.0.0.tgz",
- "integrity": "sha512-DekKQAIYWAXIcyAZ6/PDBJylWJ1BROTfDIzr9PMVxZRxBPc1gW2TG8fLgjZfBP5mc0cuthPkVi91KQQKGri/7A==",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-14.0.0.tgz",
+ "integrity": "sha512-49qkk0TcwdxJPZUX8MElEzMlRFIL/cg64P4pk8HotFEm2HYdbxxZp6v3cbVw5WOsnRA0frrs+NNoOcIT83ccMQ==",
"dev": true,
"requires": {
- "conventional-changelog-angular": "^5.0.0",
- "conventional-commits-parser": "^3.0.0"
+ "@commitlint/types": "^14.0.0",
+ "conventional-changelog-angular": "^5.0.11",
+ "conventional-commits-parser": "^3.2.2"
}
},
"@commitlint/read": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-11.0.0.tgz",
- "integrity": "sha512-37V0V91GSv0aDzMzJioKpCoZw6l0shk7+tRG8RkW1GfZzUIytdg3XqJmM+IaIYpaop0m6BbZtfq+idzUwJnw7g==",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-14.0.0.tgz",
+ "integrity": "sha512-WXXcSLBqwXTqnEmB0lbU2TrayDJ2G3qI/lxy1ianVmpQol8p9BjodAA6bYxtYYHdQFVXUrIsclzFP/naWG+hlQ==",
"dev": true,
"requires": {
- "@commitlint/top-level": "^11.0.0",
- "fs-extra": "^9.0.0",
+ "@commitlint/top-level": "^14.0.0",
+ "@commitlint/types": "^14.0.0",
+ "fs-extra": "^10.0.0",
"git-raw-commits": "^2.0.0"
}
},
"@commitlint/resolve-extends": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-11.0.0.tgz",
- "integrity": "sha512-WinU6Uv6L7HDGLqn/To13KM1CWvZ09VHZqryqxXa1OY+EvJkfU734CwnOEeNlSCK7FVLrB4kmodLJtL1dkEpXw==",
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-14.1.0.tgz",
+ "integrity": "sha512-ko80k6QB6E6/OvGNWy4u7gzzWyluDT3VDNL2kfZaDywsnrYntUKyT4Do97gQ7orttITzj2GRtk3KWClVz4rUUQ==",
"dev": true,
"requires": {
"import-fresh": "^3.0.0",
@@ -221,87 +4042,78 @@
}
},
"@commitlint/rules": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-11.0.0.tgz",
- "integrity": "sha512-2hD9y9Ep5ZfoNxDDPkQadd2jJeocrwC4vJ98I0g8pNYn/W8hS9+/FuNpolREHN8PhmexXbkjrwyQrWbuC0DVaA==",
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-14.1.0.tgz",
+ "integrity": "sha512-6jmv414/1JzGzDI/DS+snAMhcL6roQKPdg0WB3kWTWN52EvWXBFm0HIMGt2H/FlRKxozwVXlQN60/1fNIl98xA==",
"dev": true,
"requires": {
- "@commitlint/ensure": "^11.0.0",
- "@commitlint/message": "^11.0.0",
- "@commitlint/to-lines": "^11.0.0",
- "@commitlint/types": "^11.0.0"
+ "@commitlint/ensure": "^14.1.0",
+ "@commitlint/message": "^14.0.0",
+ "@commitlint/to-lines": "^14.0.0",
+ "@commitlint/types": "^14.0.0",
+ "execa": "^5.0.0"
}
},
"@commitlint/to-lines": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-11.0.0.tgz",
- "integrity": "sha512-TIDTB0Y23jlCNubDROUVokbJk6860idYB5cZkLWcRS9tlb6YSoeLn1NLafPlrhhkkkZzTYnlKYzCVrBNVes1iw==",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-14.0.0.tgz",
+ "integrity": "sha512-uIXk54oJDuYyLpI208s3+cGmJ323yvSJ9LB7yUDMWUeJi2LgRxE2EBZL995kLQdnoAsBBXcLq+VDyppg5bV/cg==",
"dev": true
},
"@commitlint/top-level": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-11.0.0.tgz",
- "integrity": "sha512-O0nFU8o+Ws+py5pfMQIuyxOtfR/kwtr5ybqTvR+C2lUPer2x6lnQU+OnfD7hPM+A+COIUZWx10mYQvkR3MmtAA==",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-14.0.0.tgz",
+ "integrity": "sha512-MZDKZfWfl9g4KozgWBGTCrI2cXkMHnBFlhwvEfrAu5G8wd5aL1f2uWEUMnBMjUikmhVj99i1pzge4XFWHQ29wQ==",
"dev": true,
"requires": {
"find-up": "^5.0.0"
+ }
+ },
+ "@commitlint/types": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-14.0.0.tgz",
+ "integrity": "sha512-sIls1nP2uSbGL466edYlh8mn7O/WP4i3bcvP+2DMhkscRCSgaPhNRWDilhYVsHt2Vu1HTQ27uT0Bj5/Lt2+EcQ==",
+ "dev": true,
+ "requires": {
+ "chalk": "^4.0.0"
+ }
+ },
+ "@endemolshinegroup/cosmiconfig-typescript-loader": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz",
+ "integrity": "sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA==",
+ "dev": true,
+ "requires": {
+ "lodash.get": "^4",
+ "make-error": "^1",
+ "ts-node": "^9",
+ "tslib": "^2"
},
"dependencies": {
- "find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
+ "tslib": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+ "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
+ "dev": true
}
}
},
- "@commitlint/types": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-11.0.0.tgz",
- "integrity": "sha512-VoNqai1vR5anRF5Tuh/+SWDFk7xi7oMwHrHrbm1BprYXjB2RJsWLhUrStMssDxEl5lW/z3EUdg8RvH/IUBccSQ==",
+ "@hutson/parse-repository-url": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz",
+ "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==",
"dev": true
},
"@types/minimist": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz",
- "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz",
+ "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==",
"dev": true
},
"@types/normalize-package-data": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
- "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
+ "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
"dev": true
},
"@types/parse-json": {
@@ -310,15 +4122,11 @@
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
"dev": true
},
- "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,
- "requires": {
- "jsonparse": "^1.2.0",
- "through": ">=2.2.7 <3"
- }
+ "add-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz",
+ "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=",
+ "dev": true
},
"ansi-escapes": {
"version": "3.2.0",
@@ -327,9 +4135,9 @@
"dev": true
},
"ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"ansi-styles": {
@@ -341,6 +4149,12 @@
"color-convert": "^2.0.1"
}
},
+ "arg": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
+ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
+ "dev": true
+ },
"array-ify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
@@ -353,12 +4167,6 @@
"integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
"dev": true
},
- "at-least-node": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
- "dev": true
- },
"balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -384,6 +4192,12 @@
"fill-range": "^7.0.1"
}
},
+ "buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
+ },
"cachedir": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.2.0.tgz",
@@ -445,14 +4259,14 @@
"dev": true
},
"cliui": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
- "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "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,
"requires": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
- "wrap-ansi": "^6.2.0"
+ "wrap-ansi": "^7.0.0"
}
},
"color-convert": {
@@ -601,20 +4415,75 @@
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"dev": true
},
+ "concat-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
+ "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.0.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "conventional-changelog": {
+ "version": "3.1.24",
+ "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.24.tgz",
+ "integrity": "sha512-ed6k8PO00UVvhExYohroVPXcOJ/K1N0/drJHx/faTH37OIZthlecuLIRX/T6uOp682CAoVoFpu+sSEaeuH6Asg==",
+ "dev": true,
+ "requires": {
+ "conventional-changelog-angular": "^5.0.12",
+ "conventional-changelog-atom": "^2.0.8",
+ "conventional-changelog-codemirror": "^2.0.8",
+ "conventional-changelog-conventionalcommits": "^4.5.0",
+ "conventional-changelog-core": "^4.2.1",
+ "conventional-changelog-ember": "^2.0.9",
+ "conventional-changelog-eslint": "^3.0.9",
+ "conventional-changelog-express": "^2.0.6",
+ "conventional-changelog-jquery": "^3.0.11",
+ "conventional-changelog-jshint": "^2.0.9",
+ "conventional-changelog-preset-loader": "^2.3.4"
+ }
+ },
"conventional-changelog-angular": {
- "version": "5.0.12",
- "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz",
- "integrity": "sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==",
+ "version": "5.0.13",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz",
+ "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==",
"dev": true,
"requires": {
"compare-func": "^2.0.0",
"q": "^1.5.1"
}
},
+ "conventional-changelog-atom": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz",
+ "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-codemirror": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz",
+ "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-config-spec": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz",
+ "integrity": "sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==",
+ "dev": true
+ },
"conventional-changelog-conventionalcommits": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.0.tgz",
- "integrity": "sha512-sj9tj3z5cnHaSJCYObA9nISf7eq/YjscLPoq6nmew4SiOjxqL2KRpK20fjnjVbpNDjJ2HR3MoVcWKXwbVvzS0A==",
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.1.tgz",
+ "integrity": "sha512-lzWJpPZhbM1R0PIzkwzGBCnAkH5RKJzJfFQZcl/D+2lsJxAwGnDKBqn/F4C1RD31GJNn8NuKWQzAZDAVXPp2Mw==",
"dev": true,
"requires": {
"compare-func": "^2.0.0",
@@ -622,31 +4491,277 @@
"q": "^1.5.1"
}
},
+ "conventional-changelog-core": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz",
+ "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==",
+ "dev": true,
+ "requires": {
+ "add-stream": "^1.0.0",
+ "conventional-changelog-writer": "^5.0.0",
+ "conventional-commits-parser": "^3.2.0",
+ "dateformat": "^3.0.0",
+ "get-pkg-repo": "^4.0.0",
+ "git-raw-commits": "^2.0.8",
+ "git-remote-origin-url": "^2.0.0",
+ "git-semver-tags": "^4.1.1",
+ "lodash": "^4.17.15",
+ "normalize-package-data": "^3.0.0",
+ "q": "^1.5.1",
+ "read-pkg": "^3.0.0",
+ "read-pkg-up": "^3.0.0",
+ "through2": "^4.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "dev": true
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "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,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ },
+ "dependencies": {
+ "normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ }
+ }
+ },
+ "read-pkg-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
+ "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^3.0.0"
+ }
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
+ }
+ },
+ "conventional-changelog-ember": {
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz",
+ "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-eslint": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz",
+ "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-express": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz",
+ "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-jquery": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz",
+ "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-jshint": {
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz",
+ "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==",
+ "dev": true,
+ "requires": {
+ "compare-func": "^2.0.0",
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-preset-loader": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz",
+ "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==",
+ "dev": true
+ },
+ "conventional-changelog-tf-a": {
+ "version": "file:tools/conventional-changelog-tf-a",
+ "requires": {
+ "conventional-changelog-conventionalcommits": "^4.6.1",
+ "execa": "^5.1.1",
+ "lodash": "^4.17.21",
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-writer": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.0.tgz",
+ "integrity": "sha512-HnDh9QHLNWfL6E1uHz6krZEQOgm8hN7z/m7tT16xwd802fwgMN0Wqd7AQYVkhpsjDUx/99oo+nGgvKF657XP5g==",
+ "dev": true,
+ "requires": {
+ "conventional-commits-filter": "^2.0.7",
+ "dateformat": "^3.0.0",
+ "handlebars": "^4.7.6",
+ "json-stringify-safe": "^5.0.1",
+ "lodash": "^4.17.15",
+ "meow": "^8.0.0",
+ "semver": "^6.0.0",
+ "split": "^1.0.0",
+ "through2": "^4.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
"conventional-commit-types": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/conventional-commit-types/-/conventional-commit-types-3.0.0.tgz",
"integrity": "sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==",
"dev": true
},
+ "conventional-commits-filter": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz",
+ "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==",
+ "dev": true,
+ "requires": {
+ "lodash.ismatch": "^4.4.0",
+ "modify-values": "^1.0.0"
+ }
+ },
"conventional-commits-parser": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz",
- "integrity": "sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA==",
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.3.tgz",
+ "integrity": "sha512-YyRDR7On9H07ICFpRm/igcdjIqebXbvf4Cff+Pf0BrBys1i1EOzx9iFXNlAbdrLAR8jf7bkUYkDAr8pEy0q4Pw==",
"dev": true,
"requires": {
- "JSONStream": "^1.0.4",
"is-text-path": "^1.0.1",
+ "JSONStream": "^1.0.4",
"lodash": "^4.17.15",
"meow": "^8.0.0",
"split2": "^3.0.0",
- "through2": "^4.0.0",
- "trim-off-newlines": "^1.0.0"
+ "through2": "^4.0.0"
+ }
+ },
+ "conventional-recommended-bump": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz",
+ "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==",
+ "dev": true,
+ "requires": {
+ "concat-stream": "^2.0.0",
+ "conventional-changelog-preset-loader": "^2.3.4",
+ "conventional-commits-filter": "^2.0.7",
+ "conventional-commits-parser": "^3.2.0",
+ "git-raw-commits": "^2.0.8",
+ "git-semver-tags": "^4.1.1",
+ "meow": "^8.0.0",
+ "q": "^1.5.1"
}
},
- "core-js": {
- "version": "3.12.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.12.1.tgz",
- "integrity": "sha512-Ne9DKPHTObRuB09Dru5AjwKjY4cJHVGu+y5f7coGn1E9Grkc3p2iBwE9AI/nJzsE29mQF7oq+mhYYRqOMFN1Bw==",
+ "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
},
"cosmiconfig": {
@@ -662,6 +4777,34 @@
"yaml": "^1.10.0"
}
},
+ "create-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+ "dev": true
+ },
+ "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,
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "dependencies": {
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
"cz-conventional-changelog": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz",
@@ -735,6 +4878,12 @@
"integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==",
"dev": true
},
+ "dateformat": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
+ "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
+ "dev": true
+ },
"decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
@@ -777,6 +4926,18 @@
"integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==",
"dev": true
},
+ "detect-newline": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
+ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+ "dev": true
+ },
+ "diff": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
+ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+ "dev": true
+ },
"dot-prop": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
@@ -786,6 +4947,61 @@
"is-obj": "^2.0.0"
}
},
+ "dotgitignore": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz",
+ "integrity": "sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0",
+ "minimatch": "^3.0.4"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ }
+ }
+ },
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -801,12 +5017,52 @@
"is-arrayish": "^0.2.1"
}
},
+ "escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true
+ },
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"dev": true
},
+ "execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "requires": {
+ "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"
+ },
+ "dependencies": {
+ "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
+ },
+ "onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^2.1.0"
+ }
+ }
+ }
+ },
"expand-tilde": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
@@ -862,12 +5118,12 @@
"dev": true
},
"find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"dev": true,
"requires": {
- "locate-path": "^5.0.0",
+ "locate-path": "^6.0.0",
"path-exists": "^4.0.0"
}
},
@@ -883,13 +5139,21 @@
"resolve-dir": "^1.0.1"
}
},
+ "fs-access": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz",
+ "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=",
+ "dev": true,
+ "requires": {
+ "null-check": "^1.0.0"
+ }
+ },
"fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
+ "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
"dev": true,
"requires": {
- "at-least-node": "^1.0.0",
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
@@ -913,10 +5177,79 @@
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true
},
- "get-stdin": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
- "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
+ "get-pkg-repo": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz",
+ "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==",
+ "dev": true,
+ "requires": {
+ "@hutson/parse-repository-url": "^3.0.0",
+ "hosted-git-info": "^4.0.0",
+ "through2": "^2.0.0",
+ "yargs": "^16.2.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "requires": {
+ "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"
+ }
+ },
+ "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
+ },
+ "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,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "dev": true,
+ "requires": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
+ "yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "dev": true,
+ "requires": {
+ "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"
+ }
+ }
+ }
+ },
+ "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
},
"git-raw-commits": {
@@ -932,6 +5265,43 @@
"through2": "^4.0.0"
}
},
+ "git-remote-origin-url": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz",
+ "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=",
+ "dev": true,
+ "requires": {
+ "gitconfiglocal": "^1.0.0",
+ "pify": "^2.3.0"
+ }
+ },
+ "git-semver-tags": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz",
+ "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==",
+ "dev": true,
+ "requires": {
+ "meow": "^8.0.0",
+ "semver": "^6.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "gitconfiglocal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz",
+ "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=",
+ "dev": true,
+ "requires": {
+ "ini": "^1.3.2"
+ }
+ },
"glob": {
"version": "7.1.4",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
@@ -985,6 +5355,19 @@
"integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
"dev": true
},
+ "handlebars": {
+ "version": "4.7.7",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
+ "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.5",
+ "neo-async": "^2.6.0",
+ "source-map": "^0.6.1",
+ "uglify-js": "^3.1.4",
+ "wordwrap": "^1.0.0"
+ }
+ },
"hard-rejection": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
@@ -1024,10 +5407,16 @@
"lru-cache": "^6.0.0"
}
},
+ "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
+ },
"husky": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/husky/-/husky-5.2.0.tgz",
- "integrity": "sha512-AM8T/auHXRBxlrfPVLKP6jt49GCM2Zz47m8G3FOMsLmTv8Dj/fKVWE0Rh2d4Qrvmy131xEsdQnb3OXRib67PGg==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz",
+ "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==",
"dev": true
},
"iconv-lite": {
@@ -1215,9 +5604,9 @@
"dev": true
},
"is-core-module": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz",
- "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==",
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz",
+ "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==",
"dev": true,
"requires": {
"has": "^1.0.3"
@@ -1262,6 +5651,12 @@
"integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
"dev": true
},
+ "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
+ },
"is-text-path": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz",
@@ -1283,6 +5678,12 @@
"integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
"dev": true
},
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
@@ -1295,12 +5696,24 @@
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"dev": true
},
+ "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
+ },
"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
},
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+ "dev": true
+ },
"jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
@@ -1317,6 +5730,16 @@
"integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
"dev": true
},
+ "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,
+ "requires": {
+ "jsonparse": "^1.2.0",
+ "through": ">=2.2.7 <3"
+ }
+ },
"kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -1329,13 +5752,49 @@
"integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
"dev": true
},
+ "load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ },
+ "dependencies": {
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ }
+ }
+ },
"locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
"requires": {
- "p-locate": "^4.1.0"
+ "p-locate": "^5.0.0"
}
},
"lodash": {
@@ -1344,6 +5803,18 @@
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true
},
+ "lodash.get": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+ "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
+ "dev": true
+ },
+ "lodash.ismatch": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz",
+ "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=",
+ "dev": true
+ },
"lodash.map": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz",
@@ -1365,10 +5836,16 @@
"yallist": "^4.0.0"
}
},
+ "make-error": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
+ "dev": true
+ },
"map-obj": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz",
- "integrity": "sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
+ "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
"dev": true
},
"meow": {
@@ -1396,6 +5873,12 @@
"integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==",
"dev": true
},
+ "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
+ },
"micromatch": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
@@ -1444,35 +5927,51 @@
"kind-of": "^6.0.3"
}
},
+ "modify-values": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
+ "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==",
+ "dev": true
+ },
"mute-stream": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
"integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
"dev": true
},
+ "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
+ },
"normalize-package-data": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz",
- "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
+ "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
"dev": true,
"requires": {
"hosted-git-info": "^4.0.1",
- "resolve": "^1.20.0",
+ "is-core-module": "^2.5.0",
"semver": "^7.3.4",
"validate-npm-package-license": "^3.0.1"
- },
- "dependencies": {
- "semver": {
- "version": "7.3.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
- "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- }
}
},
+ "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,
+ "requires": {
+ "path-key": "^3.0.0"
+ }
+ },
+ "null-check": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz",
+ "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=",
+ "dev": true
+ },
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -1498,21 +5997,21 @@
"dev": true
},
"p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"dev": true,
"requires": {
- "p-try": "^2.0.0"
+ "yocto-queue": "^0.1.0"
}
},
"p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"dev": true,
"requires": {
- "p-limit": "^2.2.0"
+ "p-limit": "^3.0.2"
}
},
"p-try": {
@@ -1560,6 +6059,12 @@
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
+ "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
+ },
"path-parse": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
@@ -1578,6 +6083,18 @@
"integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==",
"dev": true
},
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "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
+ },
"q": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
@@ -1645,6 +6162,43 @@
"type-fest": "^0.8.1"
},
"dependencies": {
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
"type-fest": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
@@ -1674,24 +6228,12 @@
"strip-indent": "^3.0.0"
}
},
- "regenerator-runtime": {
- "version": "0.13.7",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
- "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==",
- "dev": true
- },
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
"dev": true
},
- "require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
- "dev": true
- },
"resolve": {
"version": "1.20.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
@@ -1765,15 +6307,27 @@
"dev": true
},
"semver": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
- "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
- "dev": true
+ "version": "7.3.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+ "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
},
- "set-blocking": {
+ "shebang-command": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^3.0.0"
+ }
+ },
+ "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
},
"signal-exit": {
@@ -1782,6 +6336,22 @@
"integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
"dev": true
},
+ "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
+ },
+ "source-map-support": {
+ "version": "0.5.20",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz",
+ "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
"spdx-correct": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
@@ -1809,11 +6379,20 @@
}
},
"spdx-license-ids": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.8.tgz",
- "integrity": "sha512-NDgA96EnaLSvtbM7trJj+t1LUR3pirkDCcz9nOUlPb5DMBGsH7oES6C3hs3j7R9oHEa1EMvReS/BUAIT5Tcr0g==",
+ "version": "3.0.10",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz",
+ "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==",
"dev": true
},
+ "split": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
+ "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
+ "dev": true,
+ "requires": {
+ "through": "2"
+ }
+ },
"split2": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz",
@@ -1823,15 +6402,103 @@
"readable-stream": "^3.0.0"
}
},
- "string-width": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
- "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
+ "standard-version": {
+ "version": "9.3.2",
+ "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-9.3.2.tgz",
+ "integrity": "sha512-u1rfKP4o4ew7Yjbfycv80aNMN2feTiqseAhUhrrx2XtdQGmu7gucpziXe68Z4YfHVqlxVEzo4aUA0Iu3VQOTgQ==",
"dev": true,
"requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
+ "chalk": "^2.4.2",
+ "conventional-changelog": "3.1.24",
+ "conventional-changelog-config-spec": "2.1.0",
+ "conventional-changelog-conventionalcommits": "4.6.1",
+ "conventional-recommended-bump": "6.1.0",
+ "detect-indent": "^6.0.0",
+ "detect-newline": "^3.1.0",
+ "dotgitignore": "^2.1.0",
+ "figures": "^3.1.0",
+ "find-up": "^5.0.0",
+ "fs-access": "^1.0.1",
+ "git-semver-tags": "^4.0.0",
+ "semver": "^7.1.1",
+ "stringify-package": "^1.0.1",
+ "yargs": "^16.0.0"
+ },
+ "dependencies": {
+ "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,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "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,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "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,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "figures": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
+ "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "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,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "dev": true,
+ "requires": {
+ "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"
+ }
+ }
}
},
"string_decoder": {
@@ -1843,13 +6510,30 @@
"safe-buffer": "~5.2.0"
}
},
+ "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,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ }
+ },
+ "stringify-package": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz",
+ "integrity": "sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==",
+ "dev": true
+ },
"strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
- "ansi-regex": "^5.0.0"
+ "ansi-regex": "^5.0.1"
}
},
"strip-bom": {
@@ -1858,6 +6542,12 @@
"integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
"dev": true
},
+ "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
+ },
"strip-indent": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
@@ -1927,11 +6617,19 @@
"integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
"dev": true
},
- "trim-off-newlines": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz",
- "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=",
- "dev": true
+ "ts-node": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz",
+ "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==",
+ "dev": true,
+ "requires": {
+ "arg": "^4.1.0",
+ "create-require": "^1.1.0",
+ "diff": "^4.0.1",
+ "make-error": "^1.1.1",
+ "source-map-support": "^0.5.17",
+ "yn": "3.1.1"
+ }
},
"tslib": {
"version": "1.14.1",
@@ -1945,6 +6643,25 @@
"integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
"dev": true
},
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "typescript": {
+ "version": "4.4.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz",
+ "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "3.14.3",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.3.tgz",
+ "integrity": "sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g==",
+ "dev": true,
+ "optional": true
+ },
"universalify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
@@ -1976,22 +6693,22 @@
"isexe": "^2.0.0"
}
},
- "which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
- "dev": true
- },
"word-wrap": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
"dev": true
},
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
+ },
"wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "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,
"requires": {
"ansi-styles": "^4.0.0",
@@ -2005,10 +6722,16 @@
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
},
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true
+ },
"y18n": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
- "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true
},
"yallist": {
@@ -2024,40 +6747,30 @@
"dev": true
},
"yargs": {
- "version": "15.4.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
- "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+ "version": "17.2.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.1.tgz",
+ "integrity": "sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q==",
"dev": true,
"requires": {
- "cliui": "^6.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^4.1.0",
- "get-caller-file": "^2.0.1",
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
"string-width": "^4.2.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^18.1.2"
- },
- "dependencies": {
- "yargs-parser": {
- "version": "18.1.3",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
- "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
- "dev": true,
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- }
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
}
},
"yargs-parser": {
- "version": "20.2.7",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz",
- "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==",
+ "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
+ },
+ "yn": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
"dev": true
},
"yocto-queue": {
diff --git a/package.json b/package.json
index ebd5d55b8..50053c6a7 100644
--- a/package.json
+++ b/package.json
@@ -1,13 +1,19 @@
{
+ "name": "trusted-firmware-a",
+ "version": "2.5.0",
+ "license": "BSD-3-Clause",
"private": true,
"scripts": {
- "postinstall": "husky install"
+ "postinstall": "husky install",
+ "release": "standard-version -i docs/change-log.md"
},
"devDependencies": {
- "@commitlint/cli": "^11.0.0",
- "@commitlint/config-conventional": "^11.0.0",
+ "@commitlint/cli": "^14.1.0",
+ "@commitlint/config-conventional": "^14.1.0",
"commitizen": "^4.2.4",
+ "conventional-changelog-tf-a": "file:tools/conventional-changelog-tf-a",
"cz-conventional-changelog": "^3.3.0",
- "husky": "^5.0.4"
+ "husky": "^7.0.4",
+ "standard-version": "^9.3.2"
}
}
diff --git a/tools/conventional-changelog-tf-a/index.js b/tools/conventional-changelog-tf-a/index.js
new file mode 100644
index 000000000..2a9d5b4d8
--- /dev/null
+++ b/tools/conventional-changelog-tf-a/index.js
@@ -0,0 +1,222 @@
+/*
+ * Copyright (c) 2021, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+/* eslint-env es6 */
+
+"use strict";
+
+const Handlebars = require("handlebars");
+const Q = require("q");
+const _ = require("lodash");
+
+const ccConventionalChangelog = require("conventional-changelog-conventionalcommits/conventional-changelog");
+const ccParserOpts = require("conventional-changelog-conventionalcommits/parser-opts");
+const ccRecommendedBumpOpts = require("conventional-changelog-conventionalcommits/conventional-recommended-bump");
+const ccWriterOpts = require("conventional-changelog-conventionalcommits/writer-opts");
+
+const execa = require("execa");
+
+const readFileSync = require("fs").readFileSync;
+const resolve = require("path").resolve;
+
+/*
+ * Register a Handlebars helper that lets us generate Markdown lists that can support multi-line
+ * strings. This is driven by inconsistent formatting of breaking changes, which may be multiple
+ * lines long and can terminate the list early unintentionally.
+ */
+Handlebars.registerHelper("tf-a-mdlist", function (indent, options) {
+ const spaces = new Array(indent + 1).join(" ");
+ const first = spaces + "- ";
+ const nth = spaces + " ";
+
+ return first + options.fn(this).replace(/\n(?!\s*\n)/gm, `\n${nth}`).trim() + "\n";
+});
+
+/*
+ * Register a Handlebars helper that concatenates multiple variables. We use this to generate the
+ * title for the section partials.
+ */
+Handlebars.registerHelper("tf-a-concat", function () {
+ let argv = Array.prototype.slice.call(arguments, 0);
+
+ argv.pop();
+
+ return argv.join("");
+});
+
+function writerOpts(config) {
+ /*
+ * Flatten the configuration's sections list. This helps us iterate over all of the sections
+ * when we don't care about the hierarchy.
+ */
+
+ const flattenSections = function (sections) {
+ return sections.flatMap(section => {
+ const subsections = flattenSections(section.sections || []);
+
+ return [section].concat(subsections);
+ })
+ };
+
+ const flattenedSections = flattenSections(config.sections);
+
+ /*
+ * Register a helper to return a restructured version of the note groups that includes notes
+ * categorized by their section.
+ */
+ Handlebars.registerHelper("tf-a-notes", function (noteGroups, options) {
+ const generateTemplateData = function (sections, notes) {
+ return (sections || []).flatMap(section => {
+ const templateData = {
+ title: section.title,
+ sections: generateTemplateData(section.sections, notes),
+ notes: notes.filter(note => section.scopes?.includes(note.commit.scope)),
+ };
+
+ /*
+ * Don't return a section if it contains no notes and no sub-sections.
+ */
+ if ((templateData.sections.length == 0) && (templateData.notes.length == 0)) {
+ return [];
+ }
+
+ return [templateData];
+ });
+ };
+
+ return noteGroups.map(noteGroup => {
+ return {
+ title: noteGroup.title,
+ sections: generateTemplateData(config.sections, noteGroup.notes),
+ notes: noteGroup.notes.filter(note =>
+ !flattenedSections.some(section => section.scopes?.includes(note.commit.scope))),
+ };
+ });
+ });
+
+ /*
+ * Register a helper to return a restructured version of the commit groups that includes commits
+ * categorized by their section.
+ */
+ Handlebars.registerHelper("tf-a-commits", function (commitGroups, options) {
+ const generateTemplateData = function (sections, commits) {
+ return (sections || []).flatMap(section => {
+ const templateData = {
+ title: section.title,
+ sections: generateTemplateData(section.sections, commits),
+ commits: commits.filter(commit => section.scopes?.includes(commit.scope)),
+ };
+
+ /*
+ * Don't return a section if it contains no notes and no sub-sections.
+ */
+ if ((templateData.sections.length == 0) && (templateData.commits.length == 0)) {
+ return [];
+ }
+
+ return [templateData];
+ });
+ };
+
+ return commitGroups.map(commitGroup => {
+ return {
+ title: commitGroup.title,
+ sections: generateTemplateData(config.sections, commitGroup.commits),
+ commits: commitGroup.commits.filter(commit =>
+ !flattenedSections.some(section => section.scopes?.includes(commit.scope))),
+ };
+ });
+ });
+
+ const writerOpts = ccWriterOpts(config)
+ .then(writerOpts => {
+ const ccWriterOptsTransform = writerOpts.transform;
+
+ /*
+ * These configuration properties can't be injected directly into the template because
+ * they themselves are templates. Instead, we register them as partials, which allows
+ * them to be evaluated as part of the templates they're used in.
+ */
+ Handlebars.registerPartial("commitUrl", config.commitUrlFormat);
+ Handlebars.registerPartial("compareUrl", config.compareUrlFormat);
+ Handlebars.registerPartial("issueUrl", config.issueUrlFormat);
+
+ /*
+ * Register the partials that allow us to recursively create changelog sections.
+ */
+
+ const notePartial = readFileSync(resolve(__dirname, "./templates/note.hbs"), "utf-8");
+ const noteSectionPartial = readFileSync(resolve(__dirname, "./templates/note-section.hbs"), "utf-8");
+ const commitSectionPartial = readFileSync(resolve(__dirname, "./templates/commit-section.hbs"), "utf-8");
+
+ Handlebars.registerPartial("tf-a-note", notePartial);
+ Handlebars.registerPartial("tf-a-note-section", noteSectionPartial);
+ Handlebars.registerPartial("tf-a-commit-section", commitSectionPartial);
+
+ /*
+ * Override the base templates so that we can generate a changelog that looks at least
+ * similar to the pre-Conventional Commits TF-A changelog.
+ */
+ writerOpts.mainTemplate = readFileSync(resolve(__dirname, "./templates/template.hbs"), "utf-8");
+ writerOpts.headerPartial = readFileSync(resolve(__dirname, "./templates/header.hbs"), "utf-8");
+ writerOpts.commitPartial = readFileSync(resolve(__dirname, "./templates/commit.hbs"), "utf-8");
+ writerOpts.footerPartial = readFileSync(resolve(__dirname, "./templates/footer.hbs"), "utf-8");
+
+ writerOpts.transform = function (commit, context) {
+ /*
+ * Fix up commit trailers, which for some reason are not correctly recognized and
+ * end up showing up in the breaking changes.
+ */
+
+ commit.notes.forEach(note => {
+ const trailers = execa.sync("git", ["interpret-trailers", "--parse"], {
+ input: note.text
+ }).stdout;
+
+ note.text = note.text.replace(trailers, "").trim();
+ });
+
+ return ccWriterOptsTransform(commit, context);
+ };
+
+ return writerOpts;
+ });
+
+ return writerOpts;
+}
+
+module.exports = function (parameter) {
+ const config = parameter || {};
+
+ return Q.all([
+ ccConventionalChangelog(config),
+ ccParserOpts(config),
+ ccRecommendedBumpOpts(config),
+ writerOpts(config)
+ ]).spread((
+ conventionalChangelog,
+ parserOpts,
+ recommendedBumpOpts,
+ writerOpts
+ ) => {
+ if (_.isFunction(parameter)) {
+ return parameter(null, {
+ gitRawCommitsOpts: { noMerges: null },
+ conventionalChangelog,
+ parserOpts,
+ recommendedBumpOpts,
+ writerOpts
+ });
+ } else {
+ return {
+ conventionalChangelog,
+ parserOpts,
+ recommendedBumpOpts,
+ writerOpts
+ };
+ }
+ });
+};
diff --git a/tools/conventional-changelog-tf-a/package.json b/tools/conventional-changelog-tf-a/package.json
new file mode 100644
index 000000000..3ad853d51
--- /dev/null
+++ b/tools/conventional-changelog-tf-a/package.json
@@ -0,0 +1,12 @@
+{
+ "name": "conventional-changelog-tf-a",
+ "version": "1.0.0",
+ "private": true,
+ "main": "index.js",
+ "dependencies": {
+ "conventional-changelog-conventionalcommits": "^4.6.1",
+ "execa": "^5.1.1",
+ "lodash": "^4.17.21",
+ "q": "^1.5.1"
+ }
+}
diff --git a/tools/conventional-changelog-tf-a/templates/commit-section.hbs b/tools/conventional-changelog-tf-a/templates/commit-section.hbs
new file mode 100644
index 000000000..86b33351a
--- /dev/null
+++ b/tools/conventional-changelog-tf-a/templates/commit-section.hbs
@@ -0,0 +1,17 @@
+{{#if title ~}}
+{{ header }}
+
+{{#if commits.length ~}}
+ {{#each commits ~}}
+ {{#tf-a-mdlist 0}}{{> commit root=@root showScope=../topLevel }}{{/tf-a-mdlist ~}}
+ {{/each}}
+
+{{/if ~}}
+
+{{#if sections.length ~}}
+ {{#each sections ~}}
+ {{#tf-a-mdlist 0}}{{> tf-a-commit-section root=@root header=(tf-a-concat "**" title "**") }}{{/tf-a-mdlist}}
+ {{/each}}
+{{/if ~}}
+
+{{/if}}
diff --git a/tools/conventional-changelog-tf-a/templates/commit.hbs b/tools/conventional-changelog-tf-a/templates/commit.hbs
new file mode 100644
index 000000000..faf264a32
--- /dev/null
+++ b/tools/conventional-changelog-tf-a/templates/commit.hbs
@@ -0,0 +1,15 @@
+{{#if scope }}
+ {{~#if showScope }}**{{ scope }}:** {{/if}}
+{{~/if}}
+
+{{~#if subject }}
+ {{~ subject }}
+{{~else}}
+ {{~ header }}
+{{~/if}}
+
+{{~#if hash }} {{#if @root.linkReferences ~}}
+ ([{{ shortHash }}]({{> commitUrl root=@root }}))
+{{~else}}
+ {{~ shortHash }}
+{{~/if}}{{~/if}}
diff --git a/tools/conventional-changelog-tf-a/templates/footer.hbs b/tools/conventional-changelog-tf-a/templates/footer.hbs
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tools/conventional-changelog-tf-a/templates/footer.hbs
diff --git a/tools/conventional-changelog-tf-a/templates/header.hbs b/tools/conventional-changelog-tf-a/templates/header.hbs
new file mode 100644
index 000000000..67cb297e0
--- /dev/null
+++ b/tools/conventional-changelog-tf-a/templates/header.hbs
@@ -0,0 +1,13 @@
+{{#if isPatch~}}
+ ###
+{{~else~}}
+ ##
+{{~/if}} {{#if @root.linkCompare~}}
+ [{{version}}]({{> compareUrl root=@root}})
+{{~else}}
+ {{~version}}
+{{~/if}}
+{{~#if title}} "{{title}}"
+{{~/if}}
+{{~#if date}} ({{date}})
+{{/if}}
diff --git a/tools/conventional-changelog-tf-a/templates/note-section.hbs b/tools/conventional-changelog-tf-a/templates/note-section.hbs
new file mode 100644
index 000000000..f501c9647
--- /dev/null
+++ b/tools/conventional-changelog-tf-a/templates/note-section.hbs
@@ -0,0 +1,13 @@
+{{ header }}
+
+{{#if notes.length ~}}
+ {{#each notes ~}}
+ {{#tf-a-mdlist 0}}{{> tf-a-note root=@root showScope=../topLevel }}{{/tf-a-mdlist}}
+ {{/each ~}}
+{{/if ~}}
+
+{{#if sections.length ~}}
+ {{#each sections ~}}
+ {{#tf-a-mdlist 0}}{{> tf-a-note-section root=@root header=(tf-a-concat "**" title "**") }}{{/tf-a-mdlist}}
+ {{/each~}}
+{{/if}}
diff --git a/tools/conventional-changelog-tf-a/templates/note.hbs b/tools/conventional-changelog-tf-a/templates/note.hbs
new file mode 100644
index 000000000..c780ee854
--- /dev/null
+++ b/tools/conventional-changelog-tf-a/templates/note.hbs
@@ -0,0 +1,3 @@
+{{ text }}
+
+**See:** {{#with commit }}{{> commit root=@root showScope=../showScope }}{{/with}}
diff --git a/tools/conventional-changelog-tf-a/templates/template.hbs b/tools/conventional-changelog-tf-a/templates/template.hbs
new file mode 100644
index 000000000..95fb68c4c
--- /dev/null
+++ b/tools/conventional-changelog-tf-a/templates/template.hbs
@@ -0,0 +1,9 @@
+{{> header }}
+
+{{#each (tf-a-notes noteGroups) ~}}
+{{> tf-a-note-section root=@root header=(tf-a-concat "### ⚠ " title) topLevel=true }}
+{{/each ~}}
+
+{{#each (tf-a-commits commitGroups) ~}}
+{{> tf-a-commit-section root=@root header=(tf-a-concat "### " title) topLevel=true }}
+{{/each ~}}