diff --git a/.commitlintrc.yaml b/.commitlintrc.yaml
new file mode 100644
index 0000000000..630a3b48d4
--- /dev/null
+++ b/.commitlintrc.yaml
@@ -0,0 +1 @@
+extends: ["@commitlint/config-conventional"]
diff --git a/CONTRIBUTING.md b/.github/CONTRIBUTING.md
similarity index 65%
rename from CONTRIBUTING.md
rename to .github/CONTRIBUTING.md
index 6d7ac7860f..4dda9e1668 100644
--- a/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -15,46 +15,52 @@ Specifically:
- We perform automated testing on all changes before they get merged to `main`
- We create immutable release artifacts
+### Pre-Commit Hooks and Linting
+
+We use [pre-commit](https://pre-commit.com/) to manage our pre-commit hooks. This ensures that all code is linted and formatted before it is committed. After `pre-commit` is [installed](https://pre-commit.com/#installation):
+
+```bash
+# install hooks
+pre-commit install
+
+# install golang-ci-lint
+go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
+```
+
+Now every time you commit, the hooks will run and format your code, linting can be called via `make lint-go`.
+
### Developer Workflow
:key: == Required by automation
1. Look at the next due [release milestone](https://github.com/defenseunicorns/zarf/milestones) and pick an issue that you want to work on. If you don't see anything that interests you, create an issue and assign it to yourself.
-2. Drop a comment in the issue to let everyone know you're working on it and submit a Draft PR (step 4) as soon as you are able. If you have any questions as you work through the code, reach out in the [Zarf Dev Kubernetes Slack Channel](https://kubernetes.slack.com/archives/C03BP9Z3CMA).
-3. :key: Set up your Git config to GPG sign all commits. [Here's some documentation on how to set it up](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits). You won't be able to merge your PR if you have any unverified commits.
-4. Create a Draft Pull Request as soon as you can, even if it is just 5 minutes after you started working on it. We lean towards working in the open as much as we can. If you're not sure what to put in the PR description, just put a link to the issue you're working on. If you're not sure what to put in the PR title, just put "WIP" (Work In Progress) and we'll help you out with the rest.
-5. :key: Automated tests will begin based on the paths you have edited in your Pull Request.
- > ⚠️ **NOTE:** _If you are an external third-party contributor, the pipelines won't run until a [CODEOWNER](https://github.com/defenseunicorns/zarf/blob/main/CODEOWNERS) approves the pipeline run._
-6. :key: Be sure to use the [needs-adr,needs-docs,needs-tests](https://github.com/defenseunicorns/zarf/labels?q=needs) labels as appropriate for the PR. Once you have addressed all of the needs, remove the label.
-7. Once the review is complete and approved, a core member of the zarf project will merge your PR. If you are an external third-party contributor, two core members of the zarf project will be required to approve the PR.
-8. Close the issue if it is fully resolved by your PR. _Hint: You can add "Fixes #XX" to the PR description to automatically close an issue when the PR is merged._
-
-## Testing
-
-This section dives deeper into how we test Zarf
+1. Drop a comment in the issue to let everyone know you're working on it and submit a Draft PR (step 4) as soon as you are able. If you have any questions as you work through the code, reach out in the [Zarf Dev Kubernetes Slack Channel](https://kubernetes.slack.com/archives/C03BP9Z3CMA).
+1. :key: Set up your Git config to GPG sign all commits. [Here's some documentation on how to set it up](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits). You won't be able to merge your PR if you have any unverified commits.
+1. Create a Draft Pull Request as soon as you can, even if it is just 5 minutes after you started working on it. We lean towards working in the open as much as we can. If you're not sure what to put in the PR description, just put a link to the issue you're working on.
-### (Optional) Pre-Commit Hooks and Linting
+ - :key: We follow the [conventional commits spec](https://www.conventionalcommits.org/en/v1.0.0/) with the [commitlint conventional config](https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional) as extended types for PR titles.
-In this repo you can optionally use [pre-commit](https://pre-commit.com/) hooks for automated validation and linting, but if not CI will run these checks for you.
+1. :key: Automated tests will begin based on the paths you have edited in your Pull Request.
+ > ⚠️ **NOTE:** _If you are an external third-party contributor, the pipelines won't run until a [CODEOWNER](https://github.com/defenseunicorns/zarf/blob/main/CODEOWNERS) approves the pipeline run._
+1. :key: Be sure to use the [needs-adr,needs-docs,needs-tests](https://github.com/defenseunicorns/zarf/labels?q=needs) labels as appropriate for the PR. Once you have addressed all of the needs, remove the label.
+1. Once the review is complete and approved, a core member of the zarf project will merge your PR. If you are an external third-party contributor, two core members of the zarf project will be required to approve the PR.
+1. Close the issue if it is fully resolved by your PR. _Hint: You can add "Fixes #XX" to the PR description to automatically close an issue when the PR is merged._
-### Code Testing
+## Testing
-Our E2E tests can be found in the `/test` folder and follow the journey of someone as they would use the Zarf CLI. In CI these tests run against our currently supported cluster distros and are the primary way that Zarf code is tested.
+> A more comprehensive guide to testing can be found [here](https://docs.zarf.dev/contribute/testing).
-Our Unit tests can be found as `*_test.go` files inside the package that they are designed to test. These are also run in CI and are designed to test small functions with clear interfaces that would be difficult to test otherwise. As a general rule, we are limiting unit tests to the `src/pkg/*` folder.
+Our E2E tests can be found in the `src/test` folder and follow the journey of someone as they would use the Zarf CLI. In CI these tests run against our currently supported cluster distros and are the primary way that Zarf code is tested.
-All of our tests should be able to be run locally or in CI.
-You can learn more about the testing of Zarf [here](docs/12-contribute-to-zarf/2-testing.md).
+Our unit tests can be found as `*_test.go` files inside the package that they are designed to test. These are also run in CI and are designed to test small functions with clear interfaces that would be difficult to test otherwise.
## Documentation
-### Updating Our Documentation
-
-Our documentation is auto-generated from the `src/types` and `src/cmd` go packages. This includes the [Zarf package jsonschema](https://github.com/defenseunicorns/zarf/blob/main/zarf.schema.json), the [Zarf schema docs](https://docs.zarf.dev/docs/create-a-zarf-package/zarf-schema), the [Zarf CLI docs](https://docs.zarf.dev/docs/the-zarf-cli/), and our [front-end API types](https://github.com/defenseunicorns/zarf/blob/main/src/ui/lib/api-types.ts). When an update to types or the CLI commands is made you will need to run `make docs-and-schema` locally to regenerate the schema and documentation. CI checks if this was ran, and will fail if it wasn't.
+The CLI docs (located at `site/src/content/docs/commands`), and [`zarf.schema.json`](https://github.com/defenseunicorns/zarf/blob/main/zarf.schema.json) are autogenerated from `make docs-and-schema`. Run this make target locally to regenerate the schema and documentation each time you make a change to the CLI commands or the schema, otherwise CI will fail.
We do this so that there is a git commit signature from a person on the commit for better traceability, rather than a non-person entity (e.g. GitHub CI token).
-### Architecture Decision Records (ADR)
+## Architecture Decision Records (ADR)
We've chosen to use ADRs to document architecturally significant decisions. We primarily use the guidance found in [this article by Michael Nygard](http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions) with a couple of tweaks:
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index fb4fe1681b..d9b79b2558 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -2,7 +2,7 @@
name: Bug report
about: Create a report to help us improve
title: ''
-labels: possible-bug
+labels: 'possible-bug 🐛'
assignees: ''
---
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
index 7928b9558e..b25e1c31ba 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -2,7 +2,7 @@
name: Feature request
about: Suggest an idea for this project
title: ''
-labels: 'enhancement'
+labels: 'enhancement ✨'
assignees: ''
---
diff --git a/.github/ISSUE_TEMPLATE/tech_debt.md b/.github/ISSUE_TEMPLATE/tech_debt.md
index b39ccf5e8e..8d862c65b9 100644
--- a/.github/ISSUE_TEMPLATE/tech_debt.md
+++ b/.github/ISSUE_TEMPLATE/tech_debt.md
@@ -2,7 +2,7 @@
name: Tech debt
about: Record something that should be investigated or refactored in the future.
title: ''
-labels: 'tech-debt'
+labels: 'tech-debt 💳'
assignees: ''
---
diff --git a/.github/SECURITY.md b/.github/SECURITY.md
new file mode 100644
index 0000000000..6fd559327f
--- /dev/null
+++ b/.github/SECURITY.md
@@ -0,0 +1,21 @@
+# Reporting Security Issues
+
+To report a security issue or vulnerability in Zarf, please use the confidential GitHub Security Advisory ["Report a Vulnerability"](https://github.com/defenseunicorns/zarf/security/advisories) tab. The Zarf team will send a response indicating the next steps in handling your report. After the initial reply to your report, the team will keep you informed of the progress towards a fix and full announcement, and may ask for additional information or guidance.
+
+### When Should I Report a Vulnerability?
+
+* You found a vulnerability in the Zarf code.
+* You found a vulnerability in one of the Zarf dependencies that affects the project that has not been patched yet.
+
+### When Should I NOT Report a Vulnerability?
+
+* You found a bug or malfunction in the Zarf code (not security related).
+* You want to add a feature to Zarf.
+
+## Supported Versions
+
+As Zarf has not yet reached v1.0.0, only the current latest minor release is supported.
+
+## Contacting Us
+
+To discuss security related issues, please email the maintainers at zarf-dev-private@googlegroups.com.
diff --git a/.github/actions/cleanup-files/action.yaml b/.github/actions/cleanup-files/action.yaml
index 1ea4b72ebd..d490cc086b 100644
--- a/.github/actions/cleanup-files/action.yaml
+++ b/.github/actions/cleanup-files/action.yaml
@@ -7,7 +7,7 @@ runs:
- run: |
lsblk -f
- sudo rm -rf zarf-sbom /tmp/zarf-* src/ui/node_modules
+ sudo rm -rf zarf-sbom /tmp/zarf-*
sudo env "PATH=$PATH" CI=true make delete-packages
sudo build/zarf tools clear-cache
sudo docker system prune --all --force
diff --git a/.github/actions/golang/action.yaml b/.github/actions/golang/action.yaml
index 0641e569d3..890c4bb3cd 100644
--- a/.github/actions/golang/action.yaml
+++ b/.github/actions/golang/action.yaml
@@ -4,7 +4,7 @@ description: "Setup Go binary and caching"
runs:
using: composite
steps:
- - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1
+ - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
with:
- go-version: 1.20.x
+ go-version-file: 'go.mod'
cache: true
diff --git a/.github/actions/install-tools/action.yaml b/.github/actions/install-tools/action.yaml
index 64a78402d7..e8e052b640 100644
--- a/.github/actions/install-tools/action.yaml
+++ b/.github/actions/install-tools/action.yaml
@@ -4,11 +4,15 @@ description: "Install pipeline tools"
runs:
using: composite
steps:
- - uses: sigstore/cosign-installer@9becc617647dfa20ae7b1151972e9b3a2c338a2b # v2.8.1
+ - uses: sigstore/cosign-installer@e1523de7571e31dbe865fd2e80c5c7c23ae71eb4 # v3.4.0
- - uses: anchore/sbom-action/download-syft@78fc58e266e87a38d4194b2137a3d4e9bcaf7ca1 # v0.14.3
+ - uses: anchore/sbom-action/download-syft@b6a39da80722a2cb0ef5d197531764a89b5d48c3 # v0.15.8
- - run: "curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin --tag v0.64.2"
+ - name: install grype
+ env:
+ # renovate: datasource=github-tags depName=anchore/grype versioning=semver
+ VERSION: v0.74.6
+ run: "curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin $VERSION"
shell: bash
- - uses: docker/setup-buildx-action@16c0bc4a6e6ada2cfd8afd41d22d95379cf7c32a # v2.8.0
+ - uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0
diff --git a/.github/actions/k3d/action.yaml b/.github/actions/k3d/action.yaml
index b5496adcc0..951caf7756 100644
--- a/.github/actions/k3d/action.yaml
+++ b/.github/actions/k3d/action.yaml
@@ -7,5 +7,5 @@ runs:
- run: "curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash"
shell: bash
- - run: k3d cluster delete && k3d cluster create
- shell: bash
+ - run: k3d cluster delete && k3d cluster create --k3s-arg="--disable=traefik@server:0"
+ shell: bash
\ No newline at end of file
diff --git a/.github/actions/node/action.yaml b/.github/actions/node/action.yaml
deleted file mode 100644
index c4b302980d..0000000000
--- a/.github/actions/node/action.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-name: node-cache
-description: "Node cache"
-
-runs:
- using: composite
- steps:
- - uses: actions/setup-node@e33196f7422957bea03ed53f6fbb155025ffc7b8 # v3.7.0
- with:
- node-version: 18
- cache: "npm"
- cache-dependency-path: "src/ui/package-lock.json"
diff --git a/.github/actions/packages/action.yaml b/.github/actions/packages/action.yaml
index 5405cf9110..ea436c5998 100644
--- a/.github/actions/packages/action.yaml
+++ b/.github/actions/packages/action.yaml
@@ -10,18 +10,26 @@ inputs:
description: 'Build the example packages'
required: false
default: 'true'
+ os:
+ description: 'Which OS to build for'
+ required: false
+ default: 'linux'
+ shell:
+ description: 'Which shell to build in'
+ required: false
+ default: 'bash'
runs:
using: composite
steps:
- run: |
- make build-cli-linux-amd ARCH=amd64
- shell: bash
+ make build-cli-${{ inputs.os }}-amd ARCH=amd64
+ shell: ${{ inputs.shell }}
- run: |
make init-package ARCH=amd64
- shell: bash
+ shell: ${{ inputs.shell }}
if: ${{ inputs.init-package == 'true' }}
- run: |
make build-examples ARCH=amd64
- shell: bash
+ shell: ${{ inputs.shell }}
if: ${{ inputs.build-examples == 'true' }}
diff --git a/.github/actions/save-logs/action.yaml b/.github/actions/save-logs/action.yaml
index 770b2b52ba..b8d64ea5bd 100644
--- a/.github/actions/save-logs/action.yaml
+++ b/.github/actions/save-logs/action.yaml
@@ -1,6 +1,12 @@
name: save-logs
description: "Save debug logs"
+inputs:
+ suffix:
+ description: 'Suffix to append to the debug log'
+ required: false
+ default: ''
+
runs:
using: composite
steps:
@@ -9,7 +15,7 @@ runs:
sudo chown $USER /tmp/zarf-*.log || echo ""
shell: bash
- - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
+ - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
with:
- name: debug-log
+ name: debug-log${{ inputs.suffix }}
path: /tmp/zarf-*.log
diff --git a/.github/actions/slack/action.yaml b/.github/actions/slack/action.yaml
index 5ba212653d..0a89fdb0e2 100644
--- a/.github/actions/slack/action.yaml
+++ b/.github/actions/slack/action.yaml
@@ -9,30 +9,30 @@ inputs:
runs:
using: composite
steps:
- - uses: slackapi/slack-github-action@e28cf165c92ffef168d23c5c9000cffc8a25e117 #v1.24.0
+ - uses: slackapi/slack-github-action@6c661ce58804a1a20f6dc5fbee7f0381b469e001 # v1.25.0
with:
payload: |
{
- "text": "The GitHub Action Workflow **'${{ github.workflow }}'** had a result of: `${{ job.status }}`.",
+ "text": "The GitHub Workflow *'${{ github.workflow }}'* had a result of: `${{ job.status }}`.\n\n",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
- "text": "The GitHub Action Workflow **'${{ github.workflow }}'** had a result of: `${{ job.status }}`."
+ "text": "The GitHub Workflow *'${{ github.workflow }}'* had a result of: `${{ job.status }}`."
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
- "text": "View Workflow Run"
+ "text": " "
},
"accessory": {
"type": "button",
"text": {
"type": "plain_text",
- "text": "Click Me",
+ "text": "View Action Log",
"emoji": true
},
"value": "click_me_workflow_run",
@@ -44,3 +44,4 @@ runs:
}
env:
SLACK_WEBHOOK_URL: ${{ inputs.slack-webhook-url }}
+ SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
diff --git a/.github/codeql.yaml b/.github/codeql.yaml
index 3d376c23c1..a57c624727 100644
--- a/.github/codeql.yaml
+++ b/.github/codeql.yaml
@@ -2,7 +2,7 @@ paths-ignore:
- src/pkg/packager/network.go
- src/pkg/utils/network.go
- src/pkg/utils/credentials.go
- - docs-website/**
+ - site/**
- build/**
query-filters:
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index 2064021e2b..cee28d19f1 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -8,13 +8,7 @@ Fixes #
Relates to #
-## Type of change
-
-- [ ] Bug fix (non-breaking change which fixes an issue)
-- [ ] New feature (non-breaking change which adds functionality)
-- [ ] Other (security config, docs update, etc)
-
## Checklist before merging
- [ ] Test, docs, adr added or updated as needed
-- [ ] [Contributor Guide Steps](https://github.com/defenseunicorns/zarf/blob/main/CONTRIBUTING.md#developer-workflow) followed
+- [ ] [Contributor Guide Steps](https://github.com/defenseunicorns/zarf/blob/main/.github/CONTRIBUTING.md#developer-workflow) followed
diff --git a/.github/workflows/auto-assign-to-project.yml b/.github/workflows/auto-assign-to-project.yml
deleted file mode 100644
index 188c6b4533..0000000000
--- a/.github/workflows/auto-assign-to-project.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-name: Project automations
-on:
- issues:
- types:
- - opened
-
-permissions:
- contents: read
-
-jobs:
- add-to-project:
- name: Add issue to project
- runs-on: ubuntu-latest
- if: github.event_name == 'issues' && github.event.action == 'opened'
- steps:
- - name: Move issue to Zarf Project
- uses: actions/add-to-project@31b3f3ccdc584546fc445612dec3f38ff5edb41c # v0.5.0
- with:
- project-url: https://github.com/orgs/defenseunicorns/projects/1
- github-token: ${{ secrets. ZARF_ORG_PROJECT_TOKEN }}
diff --git a/.github/workflows/build-rust-injector.yml b/.github/workflows/build-rust-injector.yml
index f4d6a56832..270a091fcf 100644
--- a/.github/workflows/build-rust-injector.yml
+++ b/.github/workflows/build-rust-injector.yml
@@ -18,7 +18,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: "Checkout Repo"
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
ref: ${{ github.event.inputs.branchName }}
@@ -27,8 +27,9 @@ jobs:
- name: "Build Rust Binary for x86_64 and arm64"
run: |
+ cd src/injector
make build-injector-linux
- cd src/injector/target
+ cd target
mkdir -p ../dist
cp x86_64-unknown-linux-musl/release/zarf-injector ../dist/zarf-injector-amd64
cp aarch64-unknown-linux-musl/release/zarf-injector ../dist/zarf-injector-arm64
@@ -37,7 +38,7 @@ jobs:
shasum zarf-injector-arm64 >> checksums.txt
- name: Set AWS Credentials
- uses: aws-actions/configure-aws-credentials@5fd3084fc36e372ff1fff382a39b10d03659f355 # v2.2.0
+ uses: aws-actions/configure-aws-credentials@010d0da01d0b5a38af31e9c3470dbfdabdecca3a # v4.0.1
with:
aws-access-key-id: ${{ secrets.AWS_GOV_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_GOV_SECRET_ACCESS_KEY }}
diff --git a/.github/workflows/commitlint.yml b/.github/workflows/commitlint.yml
new file mode 100644
index 0000000000..b83d5d3350
--- /dev/null
+++ b/.github/workflows/commitlint.yml
@@ -0,0 +1,32 @@
+name: PR Title Check
+
+on:
+ pull_request:
+ branches: [main]
+ types: [opened, edited, synchronize]
+
+permissions:
+ contents: read
+
+jobs:
+ title_check:
+ runs-on: ubuntu-latest
+ permissions:
+ pull-requests: read
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
+ with:
+ fetch-depth: 0
+
+ - name: Setup Node.js
+ uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+
+ - name: Install commitlint
+ run: npm install --save-dev @commitlint/{config-conventional,cli}
+
+ - name: Lint PR title
+ env:
+ PR_TITLE: ${{ github.event.pull_request.title }}
+ run: echo "$PR_TITLE" | npx commitlint
diff --git a/.github/workflows/compare-cves.yml b/.github/workflows/compare-cves.yml
new file mode 100644
index 0000000000..f4c8500d88
--- /dev/null
+++ b/.github/workflows/compare-cves.yml
@@ -0,0 +1,33 @@
+name: Compare CVEs to main
+
+permissions:
+ contents: read
+
+on:
+ pull_request:
+ paths:
+ - "go.mod"
+ - "go.sum"
+ - "cargo.toml"
+ - "cargo.lock"
+
+jobs:
+ validate:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ with:
+ ref: ${{ github.head_ref || github.ref_name }}
+
+ - name: fetch main
+ run: git fetch origin main --depth 1
+
+ - name: Setup golang
+ uses: ./.github/actions/golang
+
+ - name: Install tools
+ uses: ./.github/actions/install-tools
+
+ - name: Check for CVEs in Dependencies
+ run: "hack/check-vulnerabilities.sh"
diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml
new file mode 100644
index 0000000000..89fd065a4d
--- /dev/null
+++ b/.github/workflows/dependency-review.yml
@@ -0,0 +1,14 @@
+name: Dependency Review
+on: pull_request
+
+permissions:
+ contents: read
+
+jobs:
+ validate:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ - name: Dependency Review
+ uses: actions/dependency-review-action@9129d7d40b8c12c1ed0f60400d00c92d437adcce # v4.1.3
diff --git a/.github/workflows/nightly-ecr.yml b/.github/workflows/nightly-ecr.yml
index 64ecc2f7a3..655d3c4dd1 100644
--- a/.github/workflows/nightly-ecr.yml
+++ b/.github/workflows/nightly-ecr.yml
@@ -20,19 +20,16 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Setup golang
uses: ./.github/actions/golang
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
- name: Build the Zarf binary
run: make build-cli-linux-amd
- name: Configure AWS Credentials
- uses: aws-actions/configure-aws-credentials@5fd3084fc36e372ff1fff382a39b10d03659f355 # v2.2.0
+ uses: aws-actions/configure-aws-credentials@010d0da01d0b5a38af31e9c3470dbfdabdecca3a # v4.0.1
with:
role-to-assume: ${{ secrets.AWS_NIGHTLY_ROLE }}
aws-region: us-east-1
diff --git a/.github/workflows/nightly-eks.yml b/.github/workflows/nightly-eks.yml
index 68f2ba3e70..c4bee3432f 100644
--- a/.github/workflows/nightly-eks.yml
+++ b/.github/workflows/nightly-eks.yml
@@ -1,7 +1,7 @@
name: Test EKS Cluster
on:
schedule:
- - cron: '0 7 * * * ' ## Every day at 0700 UTC
+ - cron: '0 7 * * *' ## Every day at 0700 UTC
workflow_dispatch: ## Give us the ability to run this manually
inputs:
@@ -28,19 +28,16 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Setup golang
uses: ./.github/actions/golang
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
- name: Build binary and zarf packages
uses: ./.github/actions/packages
- name: Configure AWS Credentials
- uses: aws-actions/configure-aws-credentials@5fd3084fc36e372ff1fff382a39b10d03659f355 # v2.2.0
+ uses: aws-actions/configure-aws-credentials@010d0da01d0b5a38af31e9c3470dbfdabdecca3a # v4.0.1
with:
role-to-assume: ${{ secrets.AWS_NIGHTLY_ROLE }}
aws-region: us-east-1
@@ -50,25 +47,23 @@ jobs:
run: ./build/zarf package create packages/distros/eks -o build --confirm
- name: Deploy the eks package
- run: ./build/zarf package deploy build/zarf-package-distro-eks-multi-0.0.2.tar.zst --components=deploy-eks-cluster --set=EKS_CLUSTER_NAME=${{ inputs.cluster_name || 'zarf-nightly-eks-e2e-test' }},EKS_INSTANCE_TYPE=${{ inputs.instance_type || 't3.medium' }} --confirm
-
- # NOTE: We are copying the secret because part of the e2e process destroys the `zarf` namespace. We still want to test the remove-ability of the eks cluster via the package.
- - name: Copy the eks secret into a local file
run: |
- rm -f eks.yaml
- ./build/zarf tools kubectl get secret -n zarf zarf-eks-yaml -o jsonpath='{.data.*}' | base64 -d > eks.yaml
+ ./build/zarf package deploy build/zarf-package-distro-eks-amd64-0.0.3.tar.zst \
+ --components=deploy-eks-cluster \
+ --set=EKS_CLUSTER_NAME=${{ inputs.cluster_name || 'zarf-nightly-eks-e2e-test' }} \
+ --set=EKS_INSTANCE_TYPE=${{ inputs.instance_type || 't3.medium' }} \
+ --confirm
- name: Run tests
run: make test-e2e ARCH=amd64
- # NOTE: We are copying the secret because part of the e2e process destroys the `zarf` namespace. We still want to test the remove-ability of the eks cluster via the package.
- - name: Re-create zarf namespace with eks.yaml secret
- run: |
- ./build/zarf tools kubectl create secret generic zarf-eks-yaml -n zarf --from-file=eks.yaml
-
- name: Teardown the cluster
if: always()
- run: ./build/zarf package deploy build/zarf-package-distro-eks-multi-0.0.2.tar.zst --components=teardown-eks-cluster --confirm
+ run: |
+ ./build/zarf package deploy build/zarf-package-distro-eks-amd64-0.0.3.tar.zst \
+ --components=teardown-eks-cluster \
+ --set=EKS_CLUSTER_NAME=${{ inputs.cluster_name || 'zarf-nightly-eks-e2e-test' }} \
+ --confirm
- name: Save logs
if: always()
diff --git a/.github/workflows/publish-application-packages.yml b/.github/workflows/publish-application-packages.yml
index 4ef6867f10..c30c7105fa 100644
--- a/.github/workflows/publish-application-packages.yml
+++ b/.github/workflows/publish-application-packages.yml
@@ -18,15 +18,15 @@ jobs:
packages: write
steps:
- name: "Checkout Repo"
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
ref: ${{ github.event.inputs.branchName }}
- name: Install The Latest Release Version of Zarf
- uses: defenseunicorns/setup-zarf@main
+ uses: defenseunicorns/setup-zarf@f95763914e20e493bb5d45d63e30e17138f981d6 # v1.0.0
- name: "Login to GHCR"
- uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a # v2.1.0
+ uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0
with:
registry: ghcr.io
username: dummy
@@ -35,14 +35,15 @@ jobs:
- name: Build And Publish Application Packages
# Create the dos-games package with the cosign signature, publish to ghcr and copy the tags to allow 'uname -m' to work
run: |
- zarf package create -o build -a amd64 examples/dos-games --key=awskms:///${{ secrets.COSIGN_AWS_KMS_KEY }} --confirm
- zarf package create -o build -a arm64 examples/dos-games --key=awskms:///${{ secrets.COSIGN_AWS_KMS_KEY }} --confirm
+ zarf package create -o build -a amd64 examples/dos-games --signing-key=awskms:///${{ secrets.COSIGN_AWS_KMS_KEY }} --confirm
+ zarf package create -o build -a arm64 examples/dos-games --signing-key=awskms:///${{ secrets.COSIGN_AWS_KMS_KEY }} --confirm
- zarf package publish ./build/zarf-package-dos-games-amd64-1.0.0.tar.zst oci://ghcr.io/defenseunicorns/packages
- zarf package publish ./build/zarf-package-dos-games-arm64-1.0.0.tar.zst oci://ghcr.io/defenseunicorns/packages
+ # Publish a the signed dos-games package
+ zarf package publish ./build/zarf-package-dos-games-amd64-1.0.0.tar.zst oci://ghcr.io/defenseunicorns/packages --key=https://zarf.dev/cosign.pub
+ zarf package publish ./build/zarf-package-dos-games-arm64-1.0.0.tar.zst oci://ghcr.io/defenseunicorns/packages --key=https://zarf.dev/cosign.pub
- zarf tools registry copy ghcr.io/defenseunicorns/packages/dos-games:1.0.0-amd64 ghcr.io/defenseunicorns/packages/dos-games:1.0.0-x86_64
- zarf tools registry copy ghcr.io/defenseunicorns/packages/dos-games:1.0.0-arm64 ghcr.io/defenseunicorns/packages/dos-games:1.0.0-aarch64
+ # Publish a skeleton of the dos-games package
+ zarf package publish examples/dos-games oci://ghcr.io/defenseunicorns/packages
env:
AWS_REGION: ${{ secrets.COSIGN_AWS_REGION }}
AWS_ACCESS_KEY_ID: ${{ secrets.COSIGN_AWS_KEY_ID }}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 019f5fdfbe..2f23f8c9c3 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -1,4 +1,4 @@
-name: Publish Zarf Packages on Tag
+name: Release CLI and Packages on Tag
permissions:
contents: read
@@ -16,16 +16,13 @@ jobs:
steps:
# Checkout the repo and setup the tooling for this job
- name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
fetch-depth: 0
- name: Setup golang
uses: ./.github/actions/golang
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
- name: Install tools
uses: ./.github/actions/install-tools
@@ -35,7 +32,7 @@ jobs:
make build-cli-linux-arm
- name: "Zarf Agent: Login to GHCR"
- uses: docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc # v2.2.0
+ uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0
with:
registry: ghcr.io
username: dummy
@@ -48,9 +45,10 @@ jobs:
docker buildx build --push --platform linux/arm64/v8,linux/amd64 --tag ghcr.io/defenseunicorns/zarf/agent:$GITHUB_REF_NAME .
rm build/zarf-linux-amd64
rm build/zarf-linux-arm64
+ echo ZARF_AGENT_IMAGE_DIGEST=$(docker buildx imagetools inspect ghcr.io/defenseunicorns/zarf/agent:$GITHUB_REF_NAME --format '{{ json . }}' | jq -r .manifest.digest) >> $GITHUB_ENV
- name: "Zarf Agent: Sign the Image"
- run: cosign sign --key awskms:///${{ secrets.COSIGN_AWS_KMS_KEY }} -a release-engineer=https://github.com/${{ github.actor }} -a version=$GITHUB_REF_NAME ghcr.io/defenseunicorns/zarf/agent:$GITHUB_REF_NAME
+ run: cosign sign --key awskms:///${{ secrets.COSIGN_AWS_KMS_KEY }} -a release-engineer=https://github.com/${{ github.actor }} -a version=$GITHUB_REF_NAME ghcr.io/defenseunicorns/zarf/agent@$ZARF_AGENT_IMAGE_DIGEST -y
env:
COSIGN_EXPERIMENTAL: 1
AWS_REGION: ${{ secrets.COSIGN_AWS_REGION }}
@@ -74,7 +72,7 @@ jobs:
# Upload the contents of the build directory for later stages to use
- name: Upload build artifacts
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
+ uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
with:
name: build-artifacts
path: build/
@@ -86,12 +84,12 @@ jobs:
steps:
# Checkout the repo and setup the tooling for this job
- name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
fetch-depth: 0
- name: Download build artifacts
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
+ uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4.1.2
with:
name: build-artifacts
path: build/
@@ -103,6 +101,10 @@ jobs:
run: |
chmod +x build/zarf
+ # Before we run the regular tests we need to aggressively cleanup files to reduce disk pressure
+ - name: Cleanup files
+ uses: ./.github/actions/cleanup-files
+
# Build the example packages and run the tests
- name: Build examples and run tests
run: |
@@ -115,59 +117,84 @@ jobs:
push:
runs-on: ubuntu-latest
needs: validate
+ environment: release
permissions:
contents: write
steps:
# Checkout the repo and setup the tooling for this job
- name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
fetch-depth: 0
- name: Setup golang
uses: ./.github/actions/golang
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
- name: Install tools
uses: ./.github/actions/install-tools
- name: Download build artifacts
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
+ uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4.1.2
with:
name: build-artifacts
path: build/
# Set up AWS credentials for GoReleaser to upload backups of artifacts to S3
- name: Set AWS Credentials
- uses: aws-actions/configure-aws-credentials@5fd3084fc36e372ff1fff382a39b10d03659f355 # v2.2.0
+ uses: aws-actions/configure-aws-credentials@010d0da01d0b5a38af31e9c3470dbfdabdecca3a # v4.0.1
with:
aws-access-key-id: ${{ secrets.AWS_GOV_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_GOV_SECRET_ACCESS_KEY }}
aws-region: us-gov-west-1
- - name: Skip brew latest for pre-release tags
+ - name: Make zarf executable and skip brew latest for pre-release tags
run: |
+ chmod +x build/zarf
if [[ $GITHUB_REF_NAME == *"rc"* ]]; then
echo "BREW_NAME=zarf@latest-rc" >> $GITHUB_ENV
else
echo "BREW_NAME=zarf" >> $GITHUB_ENV
fi
+ # Before we run the release we need to aggressively cleanup files to reduce disk pressure
+ - name: Cleanup files
+ uses: ./.github/actions/cleanup-files
+
+ - name: Setup release ENV vars
+ run: |
+ K8S_MODULES_VER=$(go list -f '{{.Version}}' -m k8s.io/client-go | sed 's/v//; s/\./ /g')
+ echo K8S_MODULES_MAJOR_VER=$(expr $(echo "$K8S_MODULES_VER" | cut -d " " -f 1) + 1) >> $GITHUB_ENV
+ echo K8S_MODULES_MINOR_VER=$(echo "$K8S_MODULES_VER" | cut -d " " -f 2) >> $GITHUB_ENV
+ echo K8S_MODULES_PATCH_VER=$(echo "$K8S_MODULES_VER" | cut -d " " -f 3) >> $GITHUB_ENV
+
+ echo K9S_VERSION=$(go list -f '{{.Version}}' -m github.com/derailed/k9s) >> $GITHUB_ENV
+ echo CRANE_VERSION=$(go list -f '{{.Version}}' -m github.com/google/go-containerregistry) >> $GITHUB_ENV
+ echo SYFT_VERSION=$(go list -f '{{.Version}}' -m github.com/anchore/syft) >> $GITHUB_ENV
+ echo ARCHIVER_VERSION=$(go list -f '{{.Version}}' -m github.com/mholt/archiver/v3) >> $GITHUB_ENV
+ echo HELM_VERSION=$(go list -f '{{.Version}}' -m helm.sh/helm/v3) >> $GITHUB_ENV
+
+ - name: Get Brew tap repo token
+ id: brew-tap-token
+ uses: actions/create-github-app-token@f2acddfb5195534d487896a656232b016a682f3c # v1.9.0
+ with:
+ app-id: ${{ secrets.HOMEBREW_TAP_WORKFLOW_GITHUB_APP_ID }}
+ private-key: ${{ secrets.HOMEBREW_TAP_WORKFLOW_GITHUB_APP_SECRET }}
+ owner: defenseunicorns
+ repositories: homebrew-tap
+
# Create the GitHub release notes, upload artifact backups to S3, publish homebrew recipe
- name: Run GoReleaser
- uses: goreleaser/goreleaser-action@336e29918d653399e599bfca99fadc1d7ffbc9f7 # v4.3.0
+ uses: goreleaser/goreleaser-action@286f3b13b1b49da4ac219696163fb8c1c93e1200 # v6.0.0
with:
distribution: goreleaser
- version: latest
- args: release --rm-dist --debug
+ version: "~> v2"
+ args: release --clean --verbose
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN}}
- HOMEBREW_TAP_GITHUB_TOKEN: ${{ secrets.ZARF_ORG_PROJECT_TOKEN }}
+ HOMEBREW_TAP_GITHUB_TOKEN: ${{ steps.brew-tap-token.outputs.token }}
- name: Save CVE report
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
+ uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
with:
name: cve-report
path: build/zarf-known-cves.csv
diff --git a/.github/workflows/scan-codeql.yml b/.github/workflows/scan-codeql.yml
index 8713d28567..7184bf1778 100644
--- a/.github/workflows/scan-codeql.yml
+++ b/.github/workflows/scan-codeql.yml
@@ -30,25 +30,20 @@ jobs:
strategy:
fail-fast: false
matrix:
- language: ["go", "javascript"]
+ language: ["go"]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
- name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Setup golang
uses: ./.github/actions/golang
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@004c5de30b6423267685b897a3d595e944f7fed5 # v2.20.2
- env:
- CODEQL_EXTRACTOR_GO_BUILD_TRACING: on
+ uses: github/codeql-action/init@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0
with:
languages: ${{ matrix.language }}
config-file: ./.github/codeql.yaml
@@ -57,6 +52,6 @@ jobs:
run: make build-cli-linux-amd
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@004c5de30b6423267685b897a3d595e944f7fed5 # v2.20.2
+ uses: github/codeql-action/analyze@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0
with:
category: "/language:${{matrix.language}}"
diff --git a/.github/workflows/scan-cves.yml b/.github/workflows/scan-cves.yml
index 0dfe776713..2851849bf7 100644
--- a/.github/workflows/scan-cves.yml
+++ b/.github/workflows/scan-cves.yml
@@ -6,21 +6,13 @@ permissions:
on:
schedule:
- cron: "0 10 * * *"
- pull_request:
- paths:
- - "go.mod"
- - "go.sum"
- - "src/ui/package.json"
- - "src/ui/package-lock.json"
- - "cargo.toml"
- - "cargo.lock"
jobs:
validate:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Setup golang
uses: ./.github/actions/golang
diff --git a/.github/workflows/scan-docs-and-schema.yml b/.github/workflows/scan-docs-and-schema.yml
index ea307eaf3d..0f24d27fc2 100644
--- a/.github/workflows/scan-docs-and-schema.yml
+++ b/.github/workflows/scan-docs-and-schema.yml
@@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Setup golang
uses: ./.github/actions/golang
diff --git a/.github/workflows/scan-lint.yml b/.github/workflows/scan-lint.yml
index 1a9b83f278..e35d4f7330 100644
--- a/.github/workflows/scan-lint.yml
+++ b/.github/workflows/scan-lint.yml
@@ -9,13 +9,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
-
- - name: Run Revive Action by pulling pre-built image
- uses: docker://morphy/revive-action:v2
- with:
- config: revive.toml
- # Exclude patterns, separated by semicolons (optional)
- exclude: "src/cmd/viper.go"
- # Path pattern (default: ./...)
- path: "./src/..."
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ - name: Run golangci-lint
+ uses: golangci/golangci-lint-action@a4f60bb28d35aeee14e6880718e0c85ff1882e64 # v6.0.1
diff --git a/.github/workflows/scorecard.yaml b/.github/workflows/scorecard.yaml
index ec34073aa0..f98ea7bdd1 100644
--- a/.github/workflows/scorecard.yaml
+++ b/.github/workflows/scorecard.yaml
@@ -22,22 +22,21 @@ jobs:
steps:
- name: "Checkout code"
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
persist-credentials: false
- name: "Run analysis"
- uses: ossf/scorecard-action@08b4669551908b1024bb425080c797723083c031 # v2.2.0
+ uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1
with:
results_file: results.sarif
results_format: sarif
- repo_token: ${{ secrets.SCORECARD_READ_TOKEN }}
publish_results: true
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: "Upload artifact"
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
+ uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
with:
name: SARIF file
path: results.sarif
@@ -45,6 +44,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
- uses: github/codeql-action/upload-sarif@004c5de30b6423267685b897a3d595e944f7fed5 # v2.20.2
+ uses: github/codeql-action/upload-sarif@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0
with:
sarif_file: results.sarif
diff --git a/.github/workflows/test-bigbang.yml b/.github/workflows/test-bigbang.yml
index 02bf391377..e7fbd80bda 100644
--- a/.github/workflows/test-bigbang.yml
+++ b/.github/workflows/test-bigbang.yml
@@ -24,14 +24,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Setup golang
uses: ./.github/actions/golang
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
- name: Build Zarf binary
uses: ./.github/actions/packages
with:
@@ -39,24 +36,24 @@ jobs:
build-examples: "false"
- name: Login to Iron Bank
- uses: docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc # v2.2.0
- if: ${{ env.IRONBANK_USERNAME != '' }}
+ uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0
+ if: ${{ env.IRON_BANK_ROBOT_USERNAME != '' }}
env:
- IRONBANK_USERNAME: ${{ secrets.IRONBANK_USERNAME }}
+ IRON_BANK_ROBOT_USERNAME: ${{ secrets.IRON_BANK_ROBOT_USERNAME }}
with:
registry: registry1.dso.mil
- username: ${{ secrets.IRONBANK_USERNAME }}
- password: ${{ secrets.IRONBANK_PASSWORD }}
+ username: ${{ secrets.IRON_BANK_ROBOT_USERNAME }}
+ password: ${{ secrets.IRON_BANK_ROBOT_PASSWORD }}
- name: Build a registry1.dso.mil Zarf 'init' package
- if: ${{ env.IRONBANK_USERNAME != '' }}
+ if: ${{ env.IRON_BANK_ROBOT_USERNAME != '' }}
env:
- IRONBANK_USERNAME: ${{ secrets.IRONBANK_USERNAME }}
+ IRON_BANK_ROBOT_USERNAME: ${{ secrets.IRON_BANK_ROBOT_USERNAME }}
run: make ib-init-package
# Upload the contents of the build directory for later stages to use
- name: Upload build artifacts
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
+ uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
with:
name: build-artifacts
path: build/
@@ -67,10 +64,10 @@ jobs:
needs: build
steps:
- name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Download build artifacts
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
+ uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4.1.2
with:
name: build-artifacts
path: build/
@@ -90,20 +87,23 @@ jobs:
uses: ./.github/actions/k3d
- name: Login to Iron Bank
- uses: docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc # v2.2.0
- if: ${{ env.IRONBANK_USERNAME != '' }}
+ uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0
+ if: ${{ env.IRON_BANK_ROBOT_USERNAME != '' }}
env:
- IRONBANK_USERNAME: ${{ secrets.IRONBANK_USERNAME }}
+ IRON_BANK_ROBOT_USERNAME: ${{ secrets.IRON_BANK_ROBOT_USERNAME }}
with:
registry: registry1.dso.mil
- username: ${{ secrets.IRONBANK_USERNAME }}
- password: ${{ secrets.IRONBANK_PASSWORD }}
+ username: ${{ secrets.IRON_BANK_ROBOT_USERNAME }}
+ password: ${{ secrets.IRON_BANK_ROBOT_PASSWORD }}
- name: Run tests
- if: ${{ env.IRONBANK_USERNAME != '' }}
+ if: ${{ env.IRON_BANK_ROBOT_USERNAME != '' }}
env:
- IRONBANK_USERNAME: ${{ secrets.IRONBANK_USERNAME }}
- run: "go test ./src/extensions/bigbang/test -failfast -v -timeout 30m"
+ IRON_BANK_ROBOT_USERNAME: ${{ secrets.IRON_BANK_ROBOT_USERNAME }}
+ run: |
+ sudo mkdir /mnt/zarf-tmp
+ sudo chown -R runner:runner /mnt/zarf-tmp
+ CI=true go test ./src/extensions/bigbang/test -failfast -v -timeout 30m
- name: Save logs
uses: ./.github/actions/save-logs
diff --git a/.github/workflows/test-e2e-shim.yml b/.github/workflows/test-e2e-shim.yml
index 75e43f1ca1..b79de0b0ca 100644
--- a/.github/workflows/test-e2e-shim.yml
+++ b/.github/workflows/test-e2e-shim.yml
@@ -11,6 +11,9 @@ on:
- "docs/**"
- "CODEOWNERS"
+permissions:
+ contents: read
+
# This is here to act as a shim for branch protection rules to work correctly.
# This is ugly but this seems to be the best way to do this since:
# - Job names in a workflow must be unique
@@ -34,6 +37,13 @@ jobs:
run: |
echo skipped
+ validate-without-cluster:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Skipped
+ run: |
+ echo skipped
+
validate-k3d:
runs-on: ubuntu-latest
steps:
diff --git a/.github/workflows/test-e2e.yml b/.github/workflows/test-e2e.yml
index f54411c534..a4716f24e2 100644
--- a/.github/workflows/test-e2e.yml
+++ b/.github/workflows/test-e2e.yml
@@ -25,14 +25,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Setup golang
uses: ./.github/actions/golang
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
- name: Build binary and zarf packages
uses: ./.github/actions/packages
with:
@@ -40,22 +37,56 @@ jobs:
# Upload the contents of the build directory for later stages to use
- name: Upload build artifacts
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
+ uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
with:
name: build-artifacts
path: build/
retention-days: 1
+ validate-without-cluster:
+ runs-on: ubuntu-latest
+ needs: build
+ steps:
+ - name: Checkout
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+
+ - name: Download build artifacts
+ uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4.1.2
+ with:
+ name: build-artifacts
+ path: build/
+
+ - name: Setup golang
+ uses: ./.github/actions/golang
+
+ - name: Make Zarf executable
+ run: |
+ chmod +x build/zarf
+
+ # Before we run the regular tests we need to aggressively cleanup files to reduce disk pressure
+ - name: Cleanup files
+ uses: ./.github/actions/cleanup-files
+
+ - name: Run tests
+ run: |
+ make test-e2e-without-cluster ARCH=amd64
+
+ - name: Save logs
+ if: always()
+ uses: ./.github/actions/save-logs
+ with:
+ suffix: -validate-without-cluster
+
# Run the tests on k3d
validate-k3d:
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Download build artifacts
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
+ uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4.1.2
with:
name: build-artifacts
path: build/
@@ -66,14 +97,23 @@ jobs:
- name: Setup K3d
uses: ./.github/actions/k3d
- - name: Run tests
+ - name: Make Zarf executable
run: |
chmod +x build/zarf
- make test-e2e ARCH=amd64
+
+ # Before we run the regular tests we need to aggressively cleanup files to reduce disk pressure
+ - name: Cleanup files
+ uses: ./.github/actions/cleanup-files
+
+ - name: Run tests
+ run: |
+ make test-e2e-with-cluster ARCH=amd64
- name: Save logs
if: always()
uses: ./.github/actions/save-logs
+ with:
+ suffix: -validate-k3d
# Run the tests on k3s
validate-k3s:
@@ -81,10 +121,10 @@ jobs:
needs: build
steps:
- name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Download build artifacts
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
+ uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4.1.2
with:
name: build-artifacts
path: build/
@@ -92,17 +132,26 @@ jobs:
- name: Setup golang
uses: ./.github/actions/golang
+ - name: Make Zarf executable
+ run: |
+ chmod +x build/zarf
+
+ # Before we run the regular tests we need to aggressively cleanup files to reduce disk pressure
+ - name: Cleanup files
+ uses: ./.github/actions/cleanup-files
+
- name: Run tests
# NOTE: "PATH=$PATH" preserves the default user $PATH. This is needed to maintain the version of go installed
# in a previous step. This test run will use Zarf to create a K3s cluster, and a brand new cluster will be
# used for each test
run: |
- chmod +x build/zarf
- sudo env "PATH=$PATH" CI=true APPLIANCE_MODE=true make test-e2e ARCH=amd64
+ sudo env "PATH=$PATH" CI=true APPLIANCE_MODE=true make test-e2e-with-cluster ARCH=amd64
- name: Save logs
if: always()
uses: ./.github/actions/save-logs
+ with:
+ suffix: -validate-k3s
# Run the tests on kind
validate-kind:
@@ -110,10 +159,10 @@ jobs:
needs: build
steps:
- name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Download build artifacts
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
+ uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4.1.2
with:
name: build-artifacts
path: build/
@@ -126,14 +175,23 @@ jobs:
kind delete cluster && kind create cluster
kubectl scale deploy -n kube-system coredns --replicas=1
- - name: Run tests
+ - name: Make Zarf executable
run: |
chmod +x build/zarf
- make test-e2e ARCH=amd64
+
+ # Before we run the regular tests we need to aggressively cleanup files to reduce disk pressure
+ - name: Cleanup files
+ uses: ./.github/actions/cleanup-files
+
+ - name: Run tests
+ run: |
+ make test-e2e-with-cluster ARCH=amd64
- name: Save logs
if: always()
uses: ./.github/actions/save-logs
+ with:
+ suffix: -validate-kind
# Run the tests on minikube
validate-minikube:
@@ -141,10 +199,10 @@ jobs:
needs: build
steps:
- name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Download build artifacts
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
+ uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4.1.2
with:
name: build-artifacts
path: build/
@@ -155,11 +213,20 @@ jobs:
- name: Setup Minikube
run: minikube start --driver=docker
- - name: Run tests
+ - name: Make Zarf executable
run: |
chmod +x build/zarf
- make test-e2e ARCH=amd64
+
+ # Before we run the regular tests we need to aggressively cleanup files to reduce disk pressure
+ - name: Cleanup files
+ uses: ./.github/actions/cleanup-files
+
+ - name: Run tests
+ run: |
+ make test-e2e-with-cluster ARCH=amd64
- name: Save logs
if: always()
uses: ./.github/actions/save-logs
+ with:
+ suffix: -validate-minikube
diff --git a/.github/workflows/test-external.yml b/.github/workflows/test-external.yml
index e0aaf3946a..f5b803bda4 100644
--- a/.github/workflows/test-external.yml
+++ b/.github/workflows/test-external.yml
@@ -24,16 +24,16 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Setup golang
uses: ./.github/actions/golang
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
- name: Build binary and zarf packages
uses: ./.github/actions/packages
+ with:
+ init-package: "false"
+ build-examples: "false"
- name: Setup k3d
uses: ./.github/actions/k3d
diff --git a/.github/workflows/test-site.yml b/.github/workflows/test-site.yml
new file mode 100644
index 0000000000..0bcb83d271
--- /dev/null
+++ b/.github/workflows/test-site.yml
@@ -0,0 +1,33 @@
+name: Test Site
+on:
+ pull_request:
+
+permissions:
+ contents: read
+
+# Abort prior jobs in the same workflow / PR
+concurrency:
+ group: site-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ validate:
+ runs-on: ubuntu-latest
+ defaults:
+ run:
+ working-directory: ./site
+ steps:
+ - name: Checkout
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+
+ - name: Setup Node.js
+ uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
+
+ - name: npm ci
+ run: npm ci
+
+ - name: run site build
+ run: npm run build
+
+ - name: check links
+ run: npm run link-check
diff --git a/.github/workflows/test-ui.yml b/.github/workflows/test-ui.yml
deleted file mode 100644
index 3efecdc0dd..0000000000
--- a/.github/workflows/test-ui.yml
+++ /dev/null
@@ -1,64 +0,0 @@
-name: Test Web UI
-on:
- pull_request:
- paths-ignore:
- - "**.md"
- - "**.jpg"
- - "**.png"
- - "**.gif"
- - "**.svg"
- - "adr/**"
- - "docs/**"
- - "CODEOWNERS"
-
-permissions:
- contents: read
-
-# Abort prior jobs in the same workflow / PR
-concurrency:
- group: e2e-ui-${{ github.ref }}
- cancel-in-progress: true
-
-jobs:
- validate:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
-
- # Have to run early for now since UI tests are a little brittle around cluster state
- - name: Setup K3d
- uses: ./.github/actions/k3d
-
- - name: Setup golang
- uses: ./.github/actions/golang
-
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
- - name: Build binary and zarf packages
- uses: ./.github/actions/packages
-
- - name: Cache browsers
- uses: actions/cache@v3
- with:
- path: "~/.cache/ms-playwright/"
- key: ${{ runner.os }}-browsers
-
- - name: Ensure playright is installed
- run: npx --prefix src/ui playwright install
-
- - name: Run UI tests
- run: make test-ui
-
- - name: Save logs
- if: always()
- uses: ./.github/actions/save-logs
-
- - name: Save playright logs
- uses: actions/upload-artifact@v3
- if: always()
- with:
- name: playwright-report
- path: src/ui/playwright-report/
- retention-days: 30
diff --git a/.github/workflows/test-unit.yml b/.github/workflows/test-unit.yml
index 87c2a6a8b8..1f956b92a3 100644
--- a/.github/workflows/test-unit.yml
+++ b/.github/workflows/test-unit.yml
@@ -10,6 +10,10 @@ on:
- "adr/**"
- "docs/**"
- "CODEOWNERS"
+ push:
+ # Running unit tests on main gives codecov a base to compare PRs against
+ branches:
+ - main
permissions:
contents: read
@@ -24,10 +28,15 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Setup golang
uses: ./.github/actions/golang
- name: Run unit tests
run: make test-unit
+
+ - name: Upload coverage reports to Codecov
+ uses: codecov/codecov-action@125fc84a9a348dbcf27191600683ec096ec9021c # v4.4.1
+ with:
+ token: ${{ secrets.CODECOV_TOKEN }}
diff --git a/.github/workflows/test-upgrade.yml b/.github/workflows/test-upgrade.yml
index 78b47e5bd6..b7b8a96dde 100644
--- a/.github/workflows/test-upgrade.yml
+++ b/.github/workflows/test-upgrade.yml
@@ -24,14 +24,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Setup golang
uses: ./.github/actions/golang
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
- name: Build PR binary and zarf init package
uses: ./.github/actions/packages
with:
@@ -39,7 +36,7 @@ jobs:
# Upload the contents of the build directory for later stages to use
- name: Upload build artifacts
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
+ uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
with:
name: build-artifacts
path: build/
@@ -50,10 +47,10 @@ jobs:
needs: build
steps:
- name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Download build artifacts
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
+ uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4.1.2
with:
name: build-artifacts
path: build/
@@ -66,7 +63,7 @@ jobs:
chmod +x build/zarf
- name: Install release version of Zarf
- uses: defenseunicorns/setup-zarf@main
+ uses: defenseunicorns/setup-zarf@f95763914e20e493bb5d45d63e30e17138f981d6 # v1.0.0
with:
download-init-package: true
@@ -74,7 +71,7 @@ jobs:
# NOTE: "PATH=$PATH" preserves the default user $PATH. This is needed to maintain the version of zarf installed
# in a previous step. This test run will the current release to create a K3s cluster.
run: |
- sudo env "PATH=$PATH" CI=true zarf init --components k3s,git-server,logging --nodeport 31337 --confirm
+ sudo env "PATH=$PATH" CI=true zarf init --components k3s,git-server --nodeport 31337 --confirm
# Before we run the regular tests we need to aggressively cleanup files to reduce disk pressure
- name: Cleanup files
@@ -93,7 +90,7 @@ jobs:
# NOTE: "PATH=$PATH" preserves the default user $PATH. This is needed to maintain the version of go installed
# in a previous step. This test run will use this PR's Zarf to create a K3s cluster.
run: |
- sudo env "PATH=$PATH" CI=true APPLIANCE_MODE=true APPLIANCE_MODE_KEEP=true make test-e2e ARCH=amd64
+ sudo env "PATH=$PATH" CI=true APPLIANCE_MODE=true APPLIANCE_MODE_KEEP=true make test-e2e-with-cluster ARCH=amd64
- name: "Describe nodes, pods and deployments"
# NOTE: We describe nodes, pods and deployments here to help understand failures
diff --git a/.github/workflows/test-windows.yml b/.github/workflows/test-windows.yml
index 863337c0a0..a26614f029 100644
--- a/.github/workflows/test-windows.yml
+++ b/.github/workflows/test-windows.yml
@@ -24,7 +24,7 @@ jobs:
runs-on: windows-latest
steps:
- name: Checkout
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Optimize caching
run: echo C:\Program Files\Git\usr\bin>>"%GITHUB_PATH%"
@@ -33,24 +33,24 @@ jobs:
- name: Setup golang
uses: ./.github/actions/golang
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
- - name: Build windows binary
- run: make build-cli-windows-amd
+ - name: Run Windows unit tests
+ run: make test-unit
shell: pwsh
- # Builds an init package manually off of the v0.23.6 release since
- # Windows in GitHub cannot natively build linux containers and
- # the tests this workflow runs do not use the agent at all!
+ - name: Build Windows binary and zarf packages
+ uses: ./.github/actions/packages
+ with:
+ init-package: "false"
+ os: windows
+ shell: pwsh
+
+ # TODO: (@WSTARR) Builds an init package manually off of the v0.30.1
+ # release since Windows in GitHub cannot natively build linux containers
+ # and the tests this workflow run do not use the agent at all!
- name: Build init-package
run: |
- make release-init-package ARCH=amd64 AGENT_IMAGE_TAG=v0.25.2
-
- - name: Build zarf packages
- run: make build-examples ARCH=amd64
- shell: pwsh
+ make release-init-package ARCH=amd64 AGENT_IMAGE_TAG=v0.30.1
- - name: Run windows tests
+ - name: Run windows E2E tests
run: make test-e2e ARCH=amd64 -e SKIP_K8S=true
shell: pwsh
diff --git a/.gitignore b/.gitignore
index 62e05722fc..9c90e0b138 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,18 +1,14 @@
-!.env.example
.DS_Store
-.env
-.env.*
.idea/
-.image-cache/
.scratch/
-.svelte-kit
-.terraform.lock.hcl
.tool-versions
.vagrant
.vscode/
.zarf*
*.bak
*.key
+*.crt
+*.dat
*.run.zstd
*.tar
*.tar.gz
@@ -20,18 +16,14 @@
*.vbox
*.zst
*.zim
-assets/
build
data/
-dist/
-node_modules
-playwright-report/
-playwright/.cache/
-test-results/
zarf
zarf-pki
zarf-sbom/
*.part*
test-*.txt
__debug_bin
-docs-website/static/zarf.schema.json
+.netlify
+!**/testdata/**
+coverage.out
diff --git a/.golangci.yaml b/.golangci.yaml
new file mode 100644
index 0000000000..ab7cc77904
--- /dev/null
+++ b/.golangci.yaml
@@ -0,0 +1,73 @@
+run:
+ timeout: 5m
+linters:
+ disable-all: true
+ enable:
+ - errcheck
+ - gosimple
+ - govet
+ - ineffassign
+ - staticcheck
+ - unused
+ - revive
+ - goheader
+ - goimports
+ - nolintlint
+ - testifylint
+linters-settings:
+ govet:
+ enable-all: true
+ disable:
+ - shadow
+ - fieldalignment
+ - unusedwrite
+ nolintlint:
+ require-specific: true
+ goheader:
+ template: |-
+ SPDX-License-Identifier: Apache-2.0
+ SPDX-FileCopyrightText: 2021-Present The Zarf Authors
+ revive:
+ rules:
+ - name: blank-imports
+ - name: context-as-argument
+ - name: context-keys-type
+ - name: dot-imports
+ - name: error-return
+ - name: error-strings
+ - name: error-naming
+ - name: exported
+ - name: if-return
+ - name: increment-decrement
+ - name: var-naming
+ - name: var-declaration
+ - name: package-comments
+ - name: range
+ - name: receiver-naming
+ - name: time-naming
+ - name: unexported-return
+ - name: indent-error-flow
+ - name: errorf
+ - name: empty-block
+ - name: superfluous-else
+ - name: unused-parameter
+ - name: unreachable-code
+ - name: redefines-builtin-id
+ testifylint:
+ enable-all: true
+ errcheck:
+ exclude-functions:
+ - (*github.com/spf13/cobra.Command).Help
+ - (*github.com/spf13/cobra.Command).MarkFlagRequired
+ - (*github.com/spf13/pflag.FlagSet).MarkHidden
+ - (*github.com/spf13/pflag.FlagSet).MarkDeprecated
+issues:
+ # Revive rules that are disabled by default.
+ include:
+ - EXC0012
+ - EXC0013
+ - EXC0014
+ - EXC0015
+ # Exclude linting code copied from Helm.
+ exclude-dirs:
+ - "src/cmd/tools/helm"
diff --git a/.goreleaser.yaml b/.goreleaser.yaml
index ada0dd1ee2..8743d5d263 100644
--- a/.goreleaser.yaml
+++ b/.goreleaser.yaml
@@ -1,3 +1,5 @@
+version: 2
+
before:
hooks:
- go mod tidy
@@ -15,7 +17,19 @@ builds:
- darwin
- windows
ldflags:
- - -s -w -X github.com/defenseunicorns/zarf/src/config.CLIVersion={{.Tag}} -X k8s.io/component-base/version.gitVersion=v0.0.0+zarf{{.Tag}} -X k8s.io/component-base/version.gitCommit={{.FullCommit}} -X k8s.io/component-base/version.buildDate={{.Date}}
+ - -s -w -X github.com/defenseunicorns/zarf/src/config.CLIVersion={{.Tag}}
+ - -X k8s.io/component-base/version.gitVersion=v{{.Env.K8S_MODULES_MAJOR_VER}}.{{.Env.K8S_MODULES_MINOR_VER}}.{{.Env.K8S_MODULES_PATCH_VER}}
+ - -X k8s.io/component-base/version.gitCommit={{.FullCommit}}
+ - -X k8s.io/component-base/version.buildDate={{.Date}}
+ - -X helm.sh/helm/v3/pkg/lint/rules.k8sVersionMajor={{.Env.K8S_MODULES_MAJOR_VER}}
+ - -X helm.sh/helm/v3/pkg/lint/rules.k8sVersionMinor={{.Env.K8S_MODULES_MINOR_VER}}
+ - -X helm.sh/helm/v3/pkg/chartutil.k8sVersionMajor={{.Env.K8S_MODULES_MAJOR_VER}}
+ - -X helm.sh/helm/v3/pkg/chartutil.k8sVersionMinor={{.Env.K8S_MODULES_MINOR_VER}}
+ - -X github.com/derailed/k9s/cmd.version={{.Env.K9S_VERSION}}
+ - -X github.com/google/go-containerregistry/cmd/crane/cmd.Version={{.Env.CRANE_VERSION}}
+ - -X github.com/defenseunicorns/zarf/src/cmd/tools.syftVersion={{.Env.SYFT_VERSION}}
+ - -X github.com/defenseunicorns/zarf/src/cmd/tools.archiverVersion={{.Env.ARCHIVER_VERSION}}
+ - -X github.com/defenseunicorns/zarf/src/cmd/tools.helmVersion={{.Env.HELM_VERSION}}
goarch:
- amd64
- arm64
@@ -42,7 +56,7 @@ sboms:
snapshot:
name_template: "{{ incpatch .Version }}-snapshot"
-# Use the auto-generated changlog github provides
+# Use the auto-generated changelog github provides
changelog:
use: github-native
@@ -60,22 +74,37 @@ release:
# Update the 'generic' brew formula and create a versioned brew formula for artifacts from this release
brews:
- name: "{{ .Env.BREW_NAME }}"
- tap:
+ repository:
owner: defenseunicorns
name: homebrew-tap
token: "{{ .Env.HOMEBREW_TAP_GITHUB_TOKEN }}"
- commit_msg_template: "Brew formula update for {{ .ProjectName }} version {{ .Tag }}"
+ branch: "{{ .ProjectName }}-{{ .Tag }}"
+ pull_request:
+ enabled: true
+ base:
+ branch: main
+ owner: defenseunicorns
+ name: homebrew-tap
+
+ commit_msg_template: "build(release): upgrade {{ .ProjectName }} to {{ .Tag }}"
homepage: "https://zarf.dev/"
description: "DevSecOps for Air Gap"
# NOTE: We are using .Version instead of .Tag because homebrew has weird semver parsing rules and won't be able to
# install versioned releases that has a `v` character before the version number.
- name: "zarf@{{ .Version }}"
- tap:
+ repository:
owner: defenseunicorns
name: homebrew-tap
token: "{{ .Env.HOMEBREW_TAP_GITHUB_TOKEN }}"
- commit_msg_template: "Brew formula update for {{ .ProjectName }} versioned release {{ .Tag }}"
+ branch: "{{ .ProjectName }}-{{ .Tag }}"
+ pull_request:
+ enabled: true
+ base:
+ branch: main
+ owner: defenseunicorns
+ name: homebrew-tap
+ commit_msg_template: "build(release): {{ .ProjectName }}@{{ .Tag }}"
homepage: "https://zarf.dev/"
description: "DevSecOps for Air Gap"
@@ -84,4 +113,4 @@ blobs:
- provider: s3
region: us-gov-west-1
bucket: zarf-public
- folder: "release/{{.Version}}"
+ directory: "release/{{.Version}}"
diff --git a/.grype.yaml b/.grype.yaml
index 20e7bb8817..1ed8fe29e9 100644
--- a/.grype.yaml
+++ b/.grype.yaml
@@ -1,14 +1,4 @@
-# Ignore file for false positives from protobuf, see the following for more information:
-# https://github.com/anchore/grype/issues/558
ignore:
- # This vulnerability does not affect Zarf as we do not instantiate a rekor client
- - vulnerability: GHSA-2h5h-59f5-c5x9
-
- # This vulnerability does not affect Zarf as we do not instantiate a rekor client
- - vulnerability: GHSA-frqx-jfcm-6jjr
-
- # From rouille - The Zarf injector does not expose endpoints that use multipart form data
- - vulnerability: GHSA-mc8h-8q98-g5hr
-
- # From semver - This comes through nodemon which is only used for development
- - vulnerability: GHSA-c2qf-rxjj-qqgw
+ # From helm - This behavior was introduced intentionally, and cannot be removed without breaking backwards compatibility (some users may be relying on these values).
+ # https://helm.sh/blog/response-cve-2019-25210/
+ - vulnerability: GHSA-jw44-4f3j-q396
diff --git a/.images/get-started/dosbox.png b/.images/get-started/dosbox.png
deleted file mode 100644
index b0bd13f6ee..0000000000
Binary files a/.images/get-started/dosbox.png and /dev/null differ
diff --git a/.images/get-started/not-private-verify.png b/.images/get-started/not-private-verify.png
deleted file mode 100644
index beae6c892a..0000000000
Binary files a/.images/get-started/not-private-verify.png and /dev/null differ
diff --git a/.images/get-started/not-private.png b/.images/get-started/not-private.png
deleted file mode 100644
index 1a3e658c05..0000000000
Binary files a/.images/get-started/not-private.png and /dev/null differ
diff --git a/.images/get-started/plg.png b/.images/get-started/plg.png
deleted file mode 100644
index ca356e9c76..0000000000
Binary files a/.images/get-started/plg.png and /dev/null differ
diff --git a/.images/harbor-credentials.png b/.images/harbor-credentials.png
deleted file mode 100644
index 5f2ef80c5a..0000000000
Binary files a/.images/harbor-credentials.png and /dev/null differ
diff --git a/.images/zarf-dod.jpg b/.images/zarf-dod.jpg
deleted file mode 100644
index 21b396d843..0000000000
Binary files a/.images/zarf-dod.jpg and /dev/null differ
diff --git a/.images/zarf-logo.png b/.images/zarf-logo.png
deleted file mode 100644
index 6af7054fca..0000000000
Binary files a/.images/zarf-logo.png and /dev/null differ
diff --git a/.markdownlint-cli2.jsonc b/.markdownlint-cli2.jsonc
new file mode 100644
index 0000000000..6c40a7c57f
--- /dev/null
+++ b/.markdownlint-cli2.jsonc
@@ -0,0 +1,22 @@
+{
+ // Disable some built-in rules
+ "config": {
+ "first-line-heading": false,
+ "line-length": false,
+ "single-h1": true,
+ "hr-style": false,
+ "no-trailing-punctuation": false,
+ "code-block-style": false,
+ "no-inline-html": false
+ },
+ // Define glob expressions to use (only valid at root)
+ "globs": [
+ "**/*.mdx",
+ "../**/*.md"
+ ],
+ "ignores": [
+ "**/node_modules/**",
+ "src/content/docs/commands/*.md",
+ "site/src/content/docs/commands/*.md"
+ ]
+}
\ No newline at end of file
diff --git a/.markdownlint.json b/.markdownlint.json
deleted file mode 100644
index 4c98f54e2a..0000000000
--- a/.markdownlint.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "MD013": false,
- "MD033": false,
- "MD041": false
-}
diff --git a/.markdownlintignore b/.markdownlintignore
deleted file mode 100644
index 7b24597e36..0000000000
--- a/.markdownlintignore
+++ /dev/null
@@ -1 +0,0 @@
-docs/2-the-zarf-cli/100-cli-commands/
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 7028b9df9c..b77cc86c1c 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -9,36 +9,37 @@ repos:
args:
- "--allow-missing-credentials"
- id: detect-private-key
- exclude: |
- (?x)^(
- examples/big-bang/kustomization/values.yaml|
- examples/istio-with-separate-cert/files/bigbangdev.key
- )$
+ exclude: "src/test/e2e/30_config_file_test.go"
- id: end-of-file-fixer
- exclude: "^examples/big-bang/template/bigbang/vendor/.*$"
+ exclude: site/src/content/docs/commands/.*
- id: fix-byte-order-marker
- id: trailing-whitespace
- exclude: "^examples/big-bang/template/bigbang/vendor/.*$"
args: [--markdown-linebreak-ext=md]
- - repo: https://github.com/sirosen/fix-smartquotes
- rev: 0.2.0
+ exclude: site/src/content/docs/commands/.*
+ - repo: https://github.com/sirosen/texthooks
+ rev: 0.6.4
hooks:
- id: fix-smartquotes
- - repo: https://github.com/dnephin/pre-commit-golang
- rev: v0.4.0
- hooks:
- - id: go-fmt
- repo: local
hooks:
- - id: generate-zarf-schema
- name: Check for outdated Zarf schema
- entry: ./hack/verify-zarf-schema.sh
+ - id: check-docs-and-schema
+ name: Check for outdated docs and Zarf schema
+ entry: ./hack/check-zarf-docs-and-schema.sh
files: "src/types/types.go"
types: [go]
language: script
- description:
- "Runs `zarf internal config-schema > zarf.schema.json` to ensure
- schema is up to date"
+ - id: goimports
+ name: goimports
+ entry: golangci-lint run --enable-only goimports --fix
+ types: [go]
+ language: golang
+ pass_filenames: false
+ - id: lint
+ name: golangci-lint go lint
+ entry: golangci-lint run
+ types: [go]
+ language: golang
+ pass_filenames: false
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 0.14.0
hooks:
@@ -47,3 +48,7 @@ repos:
files: "zarf.yaml"
types: [yaml]
args: ["--schemafile", "zarf.schema.json"]
+ exclude: |
+ (?x)^(
+ src/test/packages/12-lint/.*
+ )$
diff --git a/CODEOWNERS b/CODEOWNERS
index 79ae397d7e..c713375a0d 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -1,42 +1,5 @@
-* @defenseunicorns/zarf
+* @defenseunicorns/zarf @dgershman
-# Docs & examples
-/adr/ @jeff-mccoy @cmwylie19 @Racer159 @Noxsios
-/docs/ @Madeline-UX @jeff-mccoy @cmwylie19 @Racer159 @Noxsios
-/examples/ @jeff-mccoy @cmwylie19 @Racer159 @Noxsios
-*.md @Madeline-UX @jeff-mccoy @cmwylie19 @Racer159 @Noxsios
-
-# Core code
-/src/ @jeff-mccoy @cmwylie19 @Racer159 @Noxsios
-/go.* @jeff-mccoy @cmwylie19 @Racer159 @Noxsios
-main.go @jeff-mccoy @cmwylie19 @Racer159 @Noxsios
-
-# Init package
-/packages/ @jeff-mccoy @cmwylie19 @Racer159 @Noxsios
-/zarf.yaml @jeff-mccoy @cmwylie19 @Racer159 @Noxsios
-
-# Web UI-specific
-/package*.json @mike-winberry @Racer159 @Noxsios @jeff-mccoy @cmwylie19
-/src/internal/api @mike-winberry @Racer159 @Noxsios @jeff-mccoy @cmwylie19
-/src/ui/ @mike-winberry @Racer159 @Noxsios @jeff-mccoy @cmwylie19
-/playwright.config.ts @mike-winberry @Racer159 @Noxsios @jeff-mccoy @cmwylie19
-/svelte.config.js @mike-winberry @Racer159 @Noxsios @jeff-mccoy @cmwylie19
-/tsconfig.json @mike-winberry @Racer159 @Noxsios @jeff-mccoy @cmwylie19
-/vite.config.ts @mike-winberry @Racer159 @Noxsios @jeff-mccoy @cmwylie19
-/docs-website/ @mike-winberry @Racer159 @Noxsios @jeff-mccoy @cmwylie19
-
-# Privileged pipeline files
-/.github/ @jeff-mccoy @cmwylie19 @Racer159 @Noxsios
-/hack/ @jeff-mccoy @cmwylie19 @Racer159 @Noxsios
-/.gitignore @jeff-mccoy @cmwylie19 @Racer159 @Noxsios
-/.golangci.yml @jeff-mccoy @cmwylie19 @Racer159 @Noxsios
-/.goreleaser.yml @jeff-mccoy @cmwylie19 @Racer159 @Noxsios
-/.grype.yaml @jeff-mccoy @cmwylie19 @Racer159 @Noxsios
-/Dockerfile @jeff-mccoy @cmwylie19 @Racer159 @Noxsios
-/renovate.json @jeff-mccoy @cmwylie19 @Racer159 @Noxsios
-/Makefile @jeff-mccoy @cmwylie19 @Racer159 @Noxsios
-
-# Additional privileged files
-/CODEOWNERS @jeff-mccoy @runyontr
-/cosign.pub @jeff-mccoy @runyontr
-/LICENSE @jeff-mccoy @runyontr
+/CODEOWNERS @jeff-mccoy @austenbryan
+/cosign.pub @jeff-mccoy @austenbryan
+/LICENSE @jeff-mccoy @austenbryan
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000000..a7d8c48f7e
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,132 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in our
+community a harassment-free experience for everyone, regardless of age, body
+size, visible or invisible disability, ethnicity, sex characteristics, gender
+identity and expression, level of experience, education, socio-economic status,
+nationality, personal appearance, race, caste, color, religion, or sexual
+identity and orientation.
+
+We pledge to act and interact in ways that contribute to an open, welcoming,
+diverse, inclusive, and healthy community.
+
+## Our Standards
+
+Examples of behavior that contributes to a positive environment for our
+community include:
+
+* Demonstrating empathy and kindness toward other people
+* Being respectful of differing opinions, viewpoints, and experiences
+* Giving and gracefully accepting constructive feedback
+* Accepting responsibility and apologizing to those affected by our mistakes,
+ and learning from the experience
+* Focusing on what is best not just for us as individuals, but for the overall
+ community
+
+Examples of unacceptable behavior include:
+
+* The use of sexualized language or imagery, and sexual attention or advances of
+ any kind
+* Trolling, insulting or derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or email address,
+ without their explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Enforcement Responsibilities
+
+Community leaders are responsible for clarifying and enforcing our standards of
+acceptable behavior and will take appropriate and fair corrective action in
+response to any behavior that they deem inappropriate, threatening, offensive,
+or harmful.
+
+Community leaders have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, and will communicate reasons for moderation
+decisions when appropriate.
+
+## Scope
+
+This Code of Conduct applies within all community spaces, and also applies when
+an individual is officially representing the community in public spaces.
+Examples of representing our community include using an official email address,
+posting via an official social media account, or acting as an appointed
+representative at an online or offline event.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported to the community leaders responsible for enforcement at
+zarf-dev-private@googlegroups.com.
+All complaints will be reviewed and investigated promptly and fairly.
+
+All community leaders are obligated to respect the privacy and security of the
+reporter of any incident.
+
+## Enforcement Guidelines
+
+Community leaders will follow these Community Impact Guidelines in determining
+the consequences for any action they deem in violation of this Code of Conduct:
+
+### 1. Correction
+
+**Community Impact**: Use of inappropriate language or other behavior deemed
+unprofessional or unwelcome in the community.
+
+**Consequence**: A private, written warning from community leaders, providing
+clarity around the nature of the violation and an explanation of why the
+behavior was inappropriate. A public apology may be requested.
+
+### 2. Warning
+
+**Community Impact**: A violation through a single incident or series of
+actions.
+
+**Consequence**: A warning with consequences for continued behavior. No
+interaction with the people involved, including unsolicited interaction with
+those enforcing the Code of Conduct, for a specified period of time. This
+includes avoiding interactions in community spaces as well as external channels
+like social media. Violating these terms may lead to a temporary or permanent
+ban.
+
+### 3. Temporary Ban
+
+**Community Impact**: A serious violation of community standards, including
+sustained inappropriate behavior.
+
+**Consequence**: A temporary ban from any sort of interaction or public
+communication with the community for a specified period of time. No public or
+private interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, is allowed during this period.
+Violating these terms may lead to a permanent ban.
+
+### 4. Permanent Ban
+
+**Community Impact**: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behavior, harassment of an
+individual, or aggression toward or disparagement of classes of individuals.
+
+**Consequence**: A permanent ban from any sort of public interaction within the
+community.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage],
+version 2.1, available at
+[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
+
+Community Impact Guidelines were inspired by
+[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
+
+For answers to common questions about this code of conduct, see the FAQ at
+[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
+[https://www.contributor-covenant.org/translations][translations].
+
+[homepage]: https://www.contributor-covenant.org
+[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
+[Mozilla CoC]: https://github.com/mozilla/diversity
+[FAQ]: https://www.contributor-covenant.org/faq
+[translations]: https://www.contributor-covenant.org/translations
\ No newline at end of file
diff --git a/Makefile b/Makefile
index cd2e099bec..9a4fa4e58e 100644
--- a/Makefile
+++ b/Makefile
@@ -3,13 +3,14 @@
# Provide a default value for the operating system architecture used in tests, e.g. " APPLIANCE_MODE=true|false make test-e2e ARCH=arm64"
ARCH ?= amd64
-KEY ?= ""
######################################################################################
# Figure out which Zarf binary we should use based on the operating system we are on
ZARF_BIN := ./build/zarf
+BUILD_CLI_FOR_SYSTEM := build-cli-linux-amd
ifeq ($(OS),Windows_NT)
ZARF_BIN := $(addsuffix .exe,$(ZARF_BIN))
+ BUILD_CLI_FOR_SYSTEM := build-cli-windows-amd
else
UNAME_S := $(shell uname -s)
UNAME_P := $(shell uname -p)
@@ -19,24 +20,50 @@ else
endif
ifeq ($(UNAME_P),i386)
ZARF_BIN := $(addsuffix -intel,$(ZARF_BIN))
+ BUILD_CLI_FOR_SYSTEM = build-cli-mac-intel
endif
ifeq ($(UNAME_P),arm)
ZARF_BIN := $(addsuffix -apple,$(ZARF_BIN))
+ BUILD_CLI_FOR_SYSTEM = build-cli-mac-apple
endif
endif
endif
CLI_VERSION ?= $(if $(shell git describe --tags),$(shell git describe --tags),"UnknownVersion")
+BUILD_ARGS := -s -w -X github.com/defenseunicorns/zarf/src/config.CLIVersion=$(CLI_VERSION)
+K8S_MODULES_VER=$(subst ., ,$(subst v,,$(shell go list -f '{{.Version}}' -m k8s.io/client-go)))
+K8S_MODULES_MAJOR_VER=$(shell echo $$(($(firstword $(K8S_MODULES_VER)) + 1)))
+K8S_MODULES_MINOR_VER=$(word 2,$(K8S_MODULES_VER))
+K8S_MODULES_PATCH_VER=$(word 3,$(K8S_MODULES_VER))
+K9S_VERSION=$(shell go list -f '{{.Version}}' -m github.com/derailed/k9s)
+CRANE_VERSION=$(shell go list -f '{{.Version}}' -m github.com/google/go-containerregistry)
+SYFT_VERSION=$(shell go list -f '{{.Version}}' -m github.com/anchore/syft)
+ARCHIVER_VERSION=$(shell go list -f '{{.Version}}' -m github.com/mholt/archiver/v3)
+HELM_VERSION=$(shell go list -f '{{.Version}}' -m helm.sh/helm/v3)
+
+BUILD_ARGS += -X helm.sh/helm/v3/pkg/lint/rules.k8sVersionMajor=$(K8S_MODULES_MAJOR_VER)
+BUILD_ARGS += -X helm.sh/helm/v3/pkg/lint/rules.k8sVersionMinor=$(K8S_MODULES_MINOR_VER)
+BUILD_ARGS += -X helm.sh/helm/v3/pkg/chartutil.k8sVersionMajor=$(K8S_MODULES_MAJOR_VER)
+BUILD_ARGS += -X helm.sh/helm/v3/pkg/chartutil.k8sVersionMinor=$(K8S_MODULES_MINOR_VER)
+BUILD_ARGS += -X k8s.io/component-base/version.gitVersion=v$(K8S_MODULES_MAJOR_VER).$(K8S_MODULES_MINOR_VER).$(K8S_MODULES_PATCH_VER)
+BUILD_ARGS += -X github.com/derailed/k9s/cmd.version=$(K9S_VERSION)
+BUILD_ARGS += -X github.com/google/go-containerregistry/cmd/crane/cmd.Version=$(CRANE_VERSION)
+BUILD_ARGS += -X github.com/defenseunicorns/zarf/src/cmd/tools.syftVersion=$(SYFT_VERSION)
+BUILD_ARGS += -X github.com/defenseunicorns/zarf/src/cmd/tools.archiverVersion=$(ARCHIVER_VERSION)
+BUILD_ARGS += -X github.com/defenseunicorns/zarf/src/cmd/tools.helmVersion=$(HELM_VERSION)
+
GIT_SHA := $(if $(shell git rev-parse HEAD),$(shell git rev-parse HEAD),"")
BUILD_DATE := $(shell date -u +'%Y-%m-%dT%H:%M:%SZ')
-BUILD_ARGS := -s -w -X 'github.com/defenseunicorns/zarf/src/config.CLIVersion=$(CLI_VERSION)' -X 'k8s.io/component-base/version.gitVersion=v0.0.0+zarf$(CLI_VERSION)' -X 'k8s.io/component-base/version.gitCommit=$(GIT_SHA)' -X 'k8s.io/component-base/version.buildDate=$(BUILD_DATE)'
-.DEFAULT_GOAL := help
+BUILD_ARGS += -X k8s.io/component-base/version.gitCommit=$(GIT_SHA)
+BUILD_ARGS += -X k8s.io/component-base/version.buildDate=$(BUILD_DATE)
+
+.DEFAULT_GOAL := build
.PHONY: help
help: ## Display this help information
- @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) \
- | sort | awk 'BEGIN {FS = ":.*?## "}; \
- {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
+ @grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) \
+ | sort | awk 'BEGIN {FS = ":.*?## "}; \
+ {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
clean: ## Clean the build directory
rm -rf build
@@ -46,60 +73,44 @@ destroy: ## Run `zarf destroy` on the current cluster
rm -fr build
delete-packages: ## Delete all Zarf package tarballs in the project recursively
- find . -type f -name 'zarf-package-*' -delete
-
-# INTERNAL: used to ensure the ui directory exists
-ensure-ui-build-dir:
- mkdir -p build/ui
- touch build/ui/index.html
-
-# INTERNAL: used to build the UI only if necessary
-check-ui:
- @ if [ ! -z "$(shell command -v shasum)" ]; then\
- if test "$(shell ./hack/print-ui-diff.sh | shasum)" != "$(shell cat build/ui/git-info.txt | shasum)" ; then\
- $(MAKE) build-ui;\
- ./hack/print-ui-diff.sh > build/ui/git-info.txt;\
- fi;\
- else\
- $(MAKE) build-ui;\
- fi
-
-build-ui: ## Build the Zarf UI
- npm --prefix src/ui ci
- npm --prefix src/ui run build
+ find . -type f -name 'zarf-package-*' -not -path '*/testdata/*' -print -delete
# Note: the path to the main.go file is not used due to https://github.com/golang/go/issues/51831#issuecomment-1074188363
+.PHONY: build
+build: ## Build the Zarf CLI for the machines OS and architecture
+ go mod tidy
+ $(MAKE) $(BUILD_CLI_FOR_SYSTEM)
-build-cli-linux-amd: check-ui ## Build the Zarf CLI for Linux on AMD64
+build-cli-linux-amd: ## Build the Zarf CLI for Linux on AMD64
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="$(BUILD_ARGS)" -o build/zarf .
-build-cli-linux-arm: check-ui ## Build the Zarf CLI for Linux on ARM
+build-cli-linux-arm: ## Build the Zarf CLI for Linux on ARM
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="$(BUILD_ARGS)" -o build/zarf-arm .
-build-cli-mac-intel: check-ui ## Build the Zarf CLI for macOS on AMD64
+build-cli-mac-intel: ## Build the Zarf CLI for macOS on AMD64
GOOS=darwin GOARCH=amd64 go build -ldflags="$(BUILD_ARGS)" -o build/zarf-mac-intel .
-build-cli-mac-apple: check-ui ## Build the Zarf CLI for macOS on ARM
+build-cli-mac-apple: ## Build the Zarf CLI for macOS on ARM
GOOS=darwin GOARCH=arm64 go build -ldflags="$(BUILD_ARGS)" -o build/zarf-mac-apple .
-build-cli-windows-amd: check-ui ## Build the Zarf CLI for Windows on AMD64
+build-cli-windows-amd: ## Build the Zarf CLI for Windows on AMD64
GOOS=windows GOARCH=amd64 go build -ldflags="$(BUILD_ARGS)" -o build/zarf.exe . ## Build the Zarf CLI for Windows on AMD64
-build-cli-windows-arm: check-ui ## Build the Zarf CLI for Windows on ARM
+build-cli-windows-arm: ## Build the Zarf CLI for Windows on ARM
GOOS=windows GOARCH=arm64 go build -ldflags="$(BUILD_ARGS)" -o build/zarf-arm.exe . ## Build the Zarf CLI for Windows on ARM
build-cli-linux: build-cli-linux-amd build-cli-linux-arm ## Build the Zarf CLI for Linux on AMD64 and ARM
build-cli: build-cli-linux-amd build-cli-linux-arm build-cli-mac-intel build-cli-mac-apple build-cli-windows-amd build-cli-windows-arm ## Build the CLI
-docs-and-schema: ensure-ui-build-dir ## Generate the Zarf Documentation and Schema
- hack/gen-cli-docs.sh
+docs-and-schema: ## Generate the Zarf Documentation and Schema
+ ZARF_CONFIG=hack/empty-config.toml go run main.go internal gen-cli-docs
ZARF_CONFIG=hack/empty-config.toml hack/create-zarf-schema.sh
-dev: ensure-ui-build-dir ## Start a Dev Server for the Zarf UI
- go mod download
- npm --prefix src/ui ci
- npm --prefix src/ui run dev
+init-package-with-agent: build build-local-agent-image init-package
+
+lint-packages-and-examples: build ## Recursively lint all zarf.yaml files in the repo except for those dedicated to tests
+ hack/lint-all-zarf-packages.sh $(ZARF_BIN) false
# INTERNAL: a shim used to build the agent image only if needed on Windows using the `test` command
init-package-local-agent:
@@ -115,7 +126,7 @@ build-local-agent-image: ## Build the Zarf agent image to be used in a locally b
@ if [ "$(ARCH)" = "arm64" ]; then rm build/zarf-linux-arm64; fi
init-package: ## Create the zarf init package (must `brew install coreutils` on macOS and have `docker` first)
- @test -s $(ZARF_BIN) || $(MAKE) build-cli
+ @test -s $(ZARF_BIN) || $(MAKE)
$(ZARF_BIN) package create -o build -a $(ARCH) --confirm .
# INTERNAL: used to build a release version of the init package with a specific agent image
@@ -124,11 +135,11 @@ release-init-package:
# INTERNAL: used to build an iron bank version of the init package with an ib version of the registry image
ib-init-package:
- @test -s $(ZARF_BIN) || $(MAKE) build-cli
+ @test -s $(ZARF_BIN) || $(MAKE)
$(ZARF_BIN) package create -o build -a $(ARCH) --confirm . \
--set REGISTRY_IMAGE_DOMAIN="registry1.dso.mil/" \
--set REGISTRY_IMAGE="ironbank/opensource/docker/registry-v2" \
- --set REGISTRY_IMAGE_TAG="2.8.2"
+ --set REGISTRY_IMAGE_TAG="2.8.3"
# INTERNAL: used to publish the init package
publish-init-package:
@@ -136,7 +147,7 @@ publish-init-package:
$(ZARF_BIN) package publish . oci://$(REPOSITORY_URL)
build-examples: ## Build all of the example packages
- @test -s $(ZARF_BIN) || $(MAKE) build-cli
+ @test -s $(ZARF_BIN) || $(MAKE)
@test -s ./build/zarf-package-dos-games-$(ARCH)-1.0.0.tar.zst || $(ZARF_BIN) package create examples/dos-games -o build -a $(ARCH) --confirm
@@ -160,57 +171,46 @@ build-examples: ## Build all of the example packages
@test -s ./build/zarf-package-yolo-$(ARCH).tar.zst || $(ZARF_BIN) package create examples/yolo -o build -a $(ARCH) --confirm
+ @test -s ./build/zarf-package-component-webhooks-$(ARCH)-0.0.1.tar.zst || $(ZARF_BIN) package create examples/component-webhooks -o build -a $(ARCH) --confirm
+
build-injector-linux: ## Build the Zarf injector for AMD64 and ARM64
- docker run --rm --user "$(id -u)":"$(id -g)" -v $$PWD/src/injector:/usr/src/zarf-injector -w /usr/src/zarf-injector rust:1.71.0-bookworm make build-injector-linux
+ docker run --rm --user "$(id -u)":"$(id -g)" -v $$PWD/src/injector:/usr/src/zarf-injector -w /usr/src/zarf-injector rust:1.71.0-bookworm make build-injector-linux list-sizes
## NOTE: Requires an existing cluster or the env var APPLIANCE_MODE=true
.PHONY: test-e2e
-test-e2e: build-examples ## Run all of the core Zarf CLI E2E tests (builds any deps that aren't present)
+test-e2e: test-e2e-without-cluster test-e2e-with-cluster ## Run all of the core Zarf CLI E2E tests (builds any deps that aren't present)
+
+.PHONY: test-e2e-with-cluster
+test-e2e-with-cluster: build-examples ## Run all of the core Zarf CLI E2E tests that DO require a cluster (builds any deps that aren't present)
+ @test -s ./build/zarf-init-$(ARCH)-$(CLI_VERSION).tar.zst || $(MAKE) init-package
+ cd src/test/e2e && go test ./main_test.go ./[2-9]*.go -failfast -v -timeout 35m
+
+.PHONY: test-e2e-without-cluster
+test-e2e-without-cluster: build-examples ## Run all of the core Zarf CLI E2E tests that DO NOT require a cluster (builds any deps that aren't present)
@test -s ./build/zarf-init-$(ARCH)-$(CLI_VERSION).tar.zst || $(MAKE) init-package
- cd src/test/e2e && go test -failfast -v -timeout 30m
+ cd src/test/e2e && go test ./main_test.go ./[01]* -failfast -v -timeout 35m
## NOTE: Requires an existing cluster
.PHONY: test-external
test-external: ## Run the Zarf CLI E2E tests for an external registry and cluster
- @test -s $(ZARF_BIN) || $(MAKE) build-cli
+ @test -s $(ZARF_BIN) || $(MAKE)
@test -s ./build/zarf-init-$(ARCH)-$(CLI_VERSION).tar.zst || $(MAKE) init-package
@test -s ./build/zarf-package-podinfo-flux-$(ARCH).tar.zst || $(ZARF_BIN) package create examples/podinfo-flux -o build -a $(ARCH) --confirm
+ @test -s ./build/zarf-package-argocd-$(ARCH).tar.zst || $(ZARF_BIN) package create examples/argocd -o build -a $(ARCH) --confirm
cd src/test/external && go test -failfast -v -timeout 30m
## NOTE: Requires an existing cluster and
.PHONY: test-upgrade
test-upgrade: ## Run the Zarf CLI E2E tests for an external registry and cluster
- @test -s $(ZARF_BIN) || $(MAKE) build-cli
+ @test -s $(ZARF_BIN) || $(MAKE)
[ -n "$(shell zarf version)" ] || (echo "Zarf must be installed prior to the upgrade test" && exit 1)
[ -n "$(shell zarf package list 2>&1 | grep test-upgrade-package)" ] || (echo "Zarf must be initialized and have the 6.3.3 upgrade-test package installed prior to the upgrade test" && exit 1)
@test -s "zarf-package-test-upgrade-package-amd64-6.3.4.tar.zst" || zarf package create src/test/upgrade/ --set PODINFO_VERSION=6.3.4 --confirm
cd src/test/upgrade && go test -failfast -v -timeout 30m
.PHONY: test-unit
-test-unit: ensure-ui-build-dir ## Run unit tests within the src/pkg and the bigbang extension directory
- cd src/pkg && go test ./... -failfast -v -timeout 30m
- cd src/extensions/bigbang && go test ./. -failfast -v timeout 30m
-
-.PHONY: test-ui
-test-ui: ## Run the Zarf UI E2E tests (requires `make build-ui` first) (run with env CI=true to use build/zarf)
- export NODE_PATH=$(CURDIR)/src/ui/node_modules && \
- npm --prefix src/ui run test:pre-init && \
- npm --prefix src/ui run test:init && \
- npm --prefix src/ui run test:post-init && \
- npm --prefix src/ui run test:connect
-
-.PHONY: test-ui-dev-server
-# INTERNAL: used to start a dev version of the API server for the Zarf Web UI tests (locally)
-test-ui-dev-server:
- API_DEV_PORT=5173 \
- API_PORT=3333 \
- API_TOKEN=insecure \
- go run -ldflags="$(BUILD_ARGS)" main.go dev ui -l=trace
-
-.PHONY: test-ui-build-server
-# INTERNAL: used to start the built version of the API server for the Zarf Web UI (in CI)
-test-ui-build-server:
- API_PORT=3333 API_TOKEN=insecure $(ZARF_BIN) dev ui
+test-unit: ## Run unit tests
+ go test -failfast -v -coverprofile=coverage.out -covermode=atomic $$(go list ./... | grep -v '^github.com/defenseunicorns/zarf/src/test' | grep -v 'github.com/defenseunicorns/zarf/src/extensions/bigbang/test')
# INTERNAL: used to test that a dev has ran `make docs-and-schema` in their PR
test-docs-and-schema:
@@ -218,11 +218,12 @@ test-docs-and-schema:
hack/check-zarf-docs-and-schema.sh
# INTERNAL: used to test for new CVEs that may have been introduced
-test-cves: ensure-ui-build-dir
- go run main.go tools sbom packages . -o json --exclude './docs-website' | grype --fail-on low
+test-cves:
+ go run main.go tools sbom scan . -o json --exclude './site' --exclude './examples' | grype --fail-on low
-cve-report: ensure-ui-build-dir ## Create a CVE report for the current project (must `brew install grype` first)
- go run main.go tools sbom packages . -o json --exclude './docs-website' | grype -o template -t hack/.templates/grype.tmpl > build/zarf-known-cves.csv
+cve-report: ## Create a CVE report for the current project (must `brew install grype` first)
+ @test -d ./build || mkdir ./build
+ go run main.go tools sbom scan . -o json --exclude './site' --exclude './examples' | grype -o template -t hack/grype.tmpl > build/zarf-known-cves.csv
-lint-go: ## Run revive to lint the go code (must `brew install revive` first)
- revive -config revive.toml -exclude src/cmd/viper.go -formatter stylish ./src/...
+lint-go: ## Run golang-ci-lint to lint the go code (must `brew install golangci-lint` first)
+ golangci-lint run
diff --git a/README.md b/README.md
index ae6badce2f..221ac84ae0 100644
--- a/README.md
+++ b/README.md
@@ -4,75 +4,97 @@
[](https://go.dev/)
[](https://github.com/defenseunicorns/zarf/actions/workflows/release.yml)
[](https://app.netlify.com/sites/zarf-docs/deploys)
-[](https://api.securityscorecards.dev/projects/github.com/defenseunicorns/zarf)
+[](https://securityscorecards.dev/viewer/?uri=github.com/defenseunicorns/zarf)
-
+
[](https://zarf.dev/)
[](https://docs.zarf.dev/)
[](https://kubernetes.slack.com/archives/C03B6BJAUJ3)
+[](https://github.com/defenseunicorns/zarf/issues/2202)
+[](CODE_OF_CONDUCT.md)
Zarf eliminates the [complexity of air gap software delivery](https://www.itopstimes.com/contain/air-gap-kubernetes-considerations-for-running-cloud-native-applications-without-the-cloud/) for Kubernetes clusters and cloud-native workloads using a declarative packaging strategy to support DevSecOps in offline and semi-connected environments.
-## Why Use Zarf
+## Why Use Zarf
- 💸 **Free and Open-Source.** Zarf will always be free to use and maintained by the open-source community.
-- ⭐️ **Zero Dependencies.** As a statically compiled binary, the Zarf CLI has zero dependencies to run on any machine.
-- 🔓 **No Vendor Lock.** There is no proprietary software that locks you into using Zarf. If you want to remove it, you still can use your helm charts to deploy your software manually.
-- 💻 **OS Agnostic.** Zarf supports numerous operating systems. A full matrix of supported OSes, architectures and featuresets is coming soon.
-- 📦 **Highly Distributable.** Integrate and deploy software from multiple secure development environments including edge, embedded systems, secure cloud, data centers, and even local environments.
+- ⭐️ **Zero Dependencies.** As a statically compiled binary, the Zarf CLI has zero dependencies to run on any machine.
+- 🔓 **No Vendor Lock.** There is no proprietary software that locks you into using Zarf. If you want to remove it, you can still use your Helm charts to deploy your software manually.
+- 💻 **OS Agnostic.** Zarf supports numerous operating systems. A full matrix of supported OSes, architectures, and feature sets is coming soon.
+- 📦 **Highly Distributable.** Integrate and deploy software from multiple secure development environments, including edge, embedded systems, secure cloud, data centers, and even local environments.
- 🚀 **Develop Connected, Deploy Disconnected.** Teams can build and configure individual applications or entire DevSecOps environments while connected to the internet. Once created, they can be packaged and shipped to a disconnected environment to be deployed.
- 💿 **Single File Deployments.** Zarf allows you to package the parts of the internet your app needs into a single compressed file to be installed without connectivity.
-- ♻️ **Declarative Deployments.** Zarf packages define the precise state for your application enabling it to be deployed the same way every time.
+- ♻️ **Declarative Deployments.** Zarf packages define the precise state for your application, enabling it to be deployed the same way every time.
- 🦖 **Inherit Legacy Code.** Zarf packages can wrap legacy code and projects - allowing them to be deployed to modern DevSecOps environments.
## 📦 Out of the Box Features
- Automate Kubernetes deployments in disconnected environments
-- Automate [Software Bill of Materials (SBOM)](https://docs.zarf.dev/docs/create-a-zarf-package/package-sboms) generation
-- Build and [publish packages as OCI image artifacts](https://docs.zarf.dev/docs/zarf-tutorials/publish-and-deploy)
-- Provide a [web dashboard](https://docs.zarf.dev/docs/deploy-a-zarf-package/view-sboms) for viewing SBOM output
+- Automate [Software Bill of Materials (SBOM)](https://docs.zarf.dev/ref/sboms/) generation
+- Build and [publish packages as OCI image artifacts](https://docs.zarf.dev/tutorials/6-publish-and-deploy/)
+- Provide a [web dashboard](https://docs.zarf.dev/ref/sboms/#the-sbom-viewer) for viewing SBOM output
- Create and verify package signatures with [cosign](https://github.com/sigstore/cosign)
-- [Publish](https://docs.zarf.dev/docs/the-zarf-cli/cli-commands/zarf_package_publish), [pull](https://docs.zarf.dev/docs/the-zarf-cli/cli-commands/zarf_package_pull), and [deploy](https://docs.zarf.dev/docs/the-zarf-cli/cli-commands/zarf_package_deploy) packages from an [OCI registry](https://opencontainers.org/)
-- Powerful component lifecycle [actions](https://docs.zarf.dev/docs/create-a-zarf-package/component-actions)
+- [Publish](https://docs.zarf.dev/commands/zarf_package_publish), [pull](https://docs.zarf.dev/commands/zarf_package_pull), and [deploy](https://docs.zarf.dev/commands/zarf_package_deploy) packages from an [OCI registry](https://opencontainers.org/)
+- Powerful component lifecycle [actions](https://docs.zarf.dev/ref/actions)
- Deploy a new cluster while fully disconnected with [K3s](https://k3s.io/) or into any existing cluster using a [kube config](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/)
-- Builtin logging stack with [Loki](https://grafana.com/oss/loki/)
-- Builtin Git server with [Gitea](https://gitea.io/en-us/)
-- Builtin Docker registry
+- Built-in Git server with [Gitea](https://gitea.io/en-us/)
+- Built-in Docker registry
- Builtin [K9s Dashboard](https://k9scli.io/) for managing a cluster from the terminal
- [Mutating Webhook](adr/0005-mutating-webhook.md) to automatically update Kubernetes pod's image path and pull secrets as well as [Flux Git Repository](https://fluxcd.io/docs/components/source/gitrepositories/) URLs and secret references
-- Builtin [command to find images](https://docs.zarf.dev/docs/the-zarf-cli/cli-commands/zarf_prepare_find-images) and resources from a Helm chart
-- Tunneling capability to [connect to Kubernetes resources](https://docs.zarf.dev/docs/the-zarf-cli/cli-commands/zarf_connect) without network routing, DNS, TLS or Ingress configuration required
+- Builtin [command to find images](https://docs.zarf.dev/commands/zarf_dev_find-images) and resources from a Helm chart
+- Tunneling capability to [connect to Kubernetes resources](https://docs.zarf.dev/commands/zarf_connect) without network routing, DNS, TLS or Ingress configuration required
## 🛠️ Configurable Features
-- Customizable [variables and package templates](https://docs.zarf.dev/examples/variables/) with defaults and user prompting
-- [Composable packages](https://docs.zarf.dev/docs/create-a-zarf-package/zarf-components#composing-package-components) to include multiple sub-packages/components
+- Customizable [variables and package templates](https://docs.zarf.dev/ref/values/) with defaults and user prompting
+- [Composable packages](https://docs.zarf.dev/ref/components/#component-imports) to include multiple sub-packages/components
- Component-level OS/architecture filtering
## Demo
-[](https://www.youtube.com/watch?v=WnOYlFVVKDE)
+[](https://www.youtube.com/watch?v=WnOYlFVVKDE)
__
-## Getting Started
+## ✅ Getting Started
-To try Zarf out for yourself, visit the ["Try It Now"](https://zarf.dev/install) section on our website, and if you want to learn more about Zarf and its use cases visit [docs.zarf.dev](https://docs.zarf.dev/docs/zarf-overview).
+Follow the instructions at .
-From the docs you can learn more about [installation](https://docs.zarf.dev/docs/getting-started/#installing-zarf), [using the CLI](https://docs.zarf.dev/docs/the-zarf-cli/), [making packages](https://docs.zarf.dev/docs/create-a-zarf-package/zarf-packages/), and the [Zarf package schema](https://docs.zarf.dev/docs/create-a-zarf-package/zarf-schema).
+To discover more about Zarf and explore its features, please visit [docs.zarf.dev](https://docs.zarf.dev/). The documentation offers in-depth insights on:
-Using Zarf in Github workflows? Check out the [setup-zarf](https://github.com/defenseunicorns/setup-zarf) action. Install any version of Zarf and its `init` package with zero added dependencies.
+- [installation](https://docs.zarf.dev/getting-started/install)
+- [packages](https://docs.zarf.dev/ref/packages)
+- [components](https://docs.zarf.dev/ref/components)
+- [actions](https://docs.zarf.dev/ref/actions)
+- [variables](https://docs.zarf.dev/ref/values)
+- [SBOMs](https://docs.zarf.dev/ref/sboms)
+- and more!
-## Developing
+Using Zarf in GitHub workflows? Check out the [setup-zarf](https://github.com/defenseunicorns/setup-zarf) action. Install any version of Zarf and its `init` package with zero added dependencies.
-To contribute, please see our [Contributor Guide](https://docs.zarf.dev/docs/contribute-to-zarf/contributor-guide). Below is an architectural diagram showing the basics of how Zarf functions which you can read more about [here](https://docs.zarf.dev/docs/contribute-to-zarf/nerd-notes).
+## 🫶 Our Community
-
+Join us on the [Kubernetes Slack](https://kubernetes.slack.com/) in the [_#zarf_](https://kubernetes.slack.com/archives/C03B6BJAUJ3) channel or the [_#zarf-dev_](https://kubernetes.slack.com/archives/C03BP9Z3CMA) channel! Our active community of developers, users, and contributors are available to answer questions, share examples, and find new ways use Zarf together!
-[Source DrawIO](docs/.images/architecture.drawio.svg)
+We are so grateful to our Zarf community for contributing bug fixes and collaborating on new features:
-## Special Thanks
+
+
+
+
+Made with [contrib.rocks](https://contrib.rocks).
+
+## 💻 Contributing
+
+Check out our [Contributor Guide](https://docs.zarf.dev/contribute/contributor-guide/) to learn more about how to set up your development environment and begin contributing.
+We also recommend checking out our architectural diagram.
+
+To dive deeper into the tech, you can read the [Nerd Notes](https://docs.zarf.dev/contribute/nerd-notes/) in our Docs.
+
+
+
+## ⭐️ Special Thanks
> Early Zarf research and prototypes were developed jointly with [United States Naval Postgraduate School](https://nps.edu/) research you can read [here](https://calhoun.nps.edu/handle/10945/68688).
diff --git a/SECURITY.md b/SECURITY.md
deleted file mode 100644
index ff723278fe..0000000000
--- a/SECURITY.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Security Policy
-
-## Supported Versions
-
-As Zarf has not yet reached v1.0.0, only the current latest minor release is supported.
-
-## Reporting a Vulnerability
-
-Please email `security-notice [at] defenseunicorns.com` to report a vulnerability. If you are unable to disclose details via email, please let us know and we can coordinate alternate communications.
diff --git a/SUPPORT.md b/SUPPORT.md
new file mode 100644
index 0000000000..ad6ce504bd
--- /dev/null
+++ b/SUPPORT.md
@@ -0,0 +1,47 @@
+# Support Guidelines
+
+We strive to create clear guidelines on communication to the Zarf team to provide a good community experience.
+
+## Questions
+For guidance on using Zarf, [the documentation](https://docs.zarf.dev/) should cover most use cases.
+For all questions documentation may not cover, we suggest utilizing [Github Discussions](https://github.com/defenseunicorns/zarf/discussions).
+
+## Standard Process
+All code issues should be a [Github Issue](https://github.com/defenseunicorns/zarf/issues/new/choose) that follows the issue template.
+
+Following the templates provides the Zarf community a foundation of understanding to be able to assist quickly.
+After an issue is made, this issue can be brought into other channels such as the [Kubernetes Slack #Zarf](https://zarf.dev/slack) channel or the [bi-weekly Zarf Community Meeting](https://docs.zarf.dev/contribute/contributor-guide/).
+
+ Github Issue
+ / \
+ Zarf Slack Channel Zarf Community Call
+
+
+
+## Sensitive Information Process
+For issues from those who are unable to post on Github, you may send an email using the following issue template filled out to [zarf-dev-private@googlegroups.com](zarf-dev-private@googlegroups.com)
+
+The response time to emails may be delayed as they are not able to receive community help, so we encourage participation into Github Issues as much as possible.
+
+```
+### Environment
+Device and OS:
+App version:
+Kubernetes distro being used:
+Other:
+
+### Steps to reproduce
+1.
+
+### Expected result
+
+### Actual Result
+
+### Visual Proof (screenshots, videos, text, etc)
+
+### Severity/Priority
+
+### Additional Context
+Add any other context or screenshots about the technical debt here.
+
+```
\ No newline at end of file
diff --git a/adr/0007-use-rust-binary-for-both-injection-stages.md b/adr/0007-use-rust-binary-for-both-injection-stages.md
index 776e02d47a..d402e2cd0b 100644
--- a/adr/0007-use-rust-binary-for-both-injection-stages.md
+++ b/adr/0007-use-rust-binary-for-both-injection-stages.md
@@ -10,7 +10,7 @@ Amends [3. Image injection into remote clusters without native support](0003-ima
## Context
-In ADR 3, the decision was made to create a rust binary (`stage1`) that would re-assemble a `registry:2` image and a go registry binary (`stage2`) from a series of configmaps. While this solution works, it is overkill for the operations that `stage2` performs. The `stage2` binary is only responsible for 1. starting a docker registry in `rw` mode, 2. pushing the `registry:2` crane tarball into said registry, 3. starting the docker registry in `r` mode. This `registry:2` image is then immedietely consumed by the `zarf-registry` package, creating a true in-cluster docker registry. The injector pod is then destroyed. The overhead this operation creates:
+In ADR 3, the decision was made to create a rust binary (`stage1`) that would re-assemble a `registry:2` image and a go registry binary (`stage2`) from a series of configmaps. While this solution works, it is overkill for the operations that `stage2` performs. The `stage2` binary is only responsible for 1. starting a docker registry in `rw` mode, 2. pushing the `registry:2` crane tarball into said registry, 3. starting the docker registry in `r` mode. This `registry:2` image is then immediately consumed by the `zarf-registry` package, creating a true in-cluster docker registry. The injector pod is then destroyed. The overhead this operation creates:
- having to keep track of another binary (making the total number 3 for the zarf ecosystem)
- nearly doubling the amount of configmaps loaded into the cluster (makes init slower)
diff --git a/adr/0009-sbom-more-than-images.md b/adr/0009-sbom-more-than-images.md
index 93ba83356f..501ca37aa5 100644
--- a/adr/0009-sbom-more-than-images.md
+++ b/adr/0009-sbom-more-than-images.md
@@ -21,7 +21,7 @@ Potential considerations:
2. Run Syft against files and dataInjections
Pros:
- We know these files are actually inside of the package and won't just be noise
- - This is the most common two ways for people to include addtional artifacts in packages (we use files in our own init package)
+ - This is the most common two ways for people to include additional artifacts in packages (we use files in our own init package)
Cons:
- This is only a subset of what Zarf provides and someone could commit an artifact to a git repo for example
diff --git a/adr/0012-local-image-support-via-docker.md b/adr/0012-local-image-support-via-docker.md
index 8edd63bd0d..32a0102d53 100644
--- a/adr/0012-local-image-support-via-docker.md
+++ b/adr/0012-local-image-support-via-docker.md
@@ -8,7 +8,7 @@ Accepted
## Context
-There has been a long-standing usabilty gap with Zarf when doing local development due to a lack of local image support. A solution was merged in, [#1173](https://github.com/defenseunicorns/zarf/pull/1173), and released in [v0.23.4](https://github.com/defenseunicorns/zarf/releases/tag/v0.23.4) to support this feature. Unfortuantely, we didn't realize there is a [glaring issue](https://github.com/defenseunicorns/zarf/issues/1214) with the implementation that causes Zarf to crash when trying to load large images into the local docker daemon. The docker daemon support in Crane is somewhat naive and can send a machine into an OOM condition due to how the tar stream is loaded into memory from the docker save action. Crane does have an option to avoid this issue, but at the cost of being much slower to load images from docker.
+There has been a long-standing usability gap with Zarf when doing local development due to a lack of local image support. A solution was merged in, [#1173](https://github.com/defenseunicorns/zarf/pull/1173), and released in [v0.23.4](https://github.com/defenseunicorns/zarf/releases/tag/v0.23.4) to support this feature. Unfortunately, we didn't realize there is a [glaring issue](https://github.com/defenseunicorns/zarf/issues/1214) with the implementation that causes Zarf to crash when trying to load large images into the local docker daemon. The docker daemon support in Crane is somewhat naive and can send a machine into an OOM condition due to how the tar stream is loaded into memory from the docker save action. Crane does have an option to avoid this issue, but at the cost of being much slower to load images from docker.
We did extensive investigation into various strategies of loading docker images from the daemon including: crane, skopeo, the docker go client and executing the docker cli directly with varying levels of success. Unfortunately, some of the methods that did work well were up to 3 times slower than the current implementation, though they avoided the OOM issue. Lastly, the docker daemon save operations directly still ended up being slower than crane and docker produced a legacy format that would cause issues with [future package schema changes](https://github.com/defenseunicorns/zarf/issues/1319) we are planning for oci imports.
@@ -21,7 +21,7 @@ We did extensive investigation into various strategies of loading docker images
## Decision
-We had hoped to leverage docker caching and avoid crane caching moreso, but realized that caching was still occuring via Syft for SBOM. Additionaly, the extremely-large, local-only image is actually the edge case here and we created a recommended workaround in the FAQs as well as an inline alert when a large docker image is detected. This restores behavior to what it was before the docker daemon support was added, but with the added benefit of being able to load images from the docker daemon when they are available locally.
+We had hoped to leverage docker caching and avoid crane caching more, but realized that caching was still occurring via Syft for SBOM. Additionally, the extremely-large, local-only image is actually the edge case here and we created a recommended workaround in the FAQs as well as an inline alert when a large docker image is detected. This restores behavior to what it was before the docker daemon support was added, but with the added benefit of being able to load images from the docker daemon when they are available locally.
## Consequences
diff --git a/adr/0014-oci-publish.md b/adr/0014-oci-publish.md
index 7989c12996..20a5407815 100644
--- a/adr/0014-oci-publish.md
+++ b/adr/0014-oci-publish.md
@@ -47,13 +47,13 @@ zarf-package-adr-arm64.tar.zst
With this new structure in place, we can now publish Zarf packages as OCI artifacts. Under the hood this implements the `oras` Go library using Docker's authentication system. For interacting with these packages, the `oci://` package path prefix has been added (ex. `zarf package publish oci://...`).
-For an example of this in action, please see the corresponding [tutorial](../docs/5-zarf-tutorials/7-publish-and-deploy.md).
+For an example of this in action, please see the corresponding [tutorial](../docs/5-zarf-tutorials/6-publish-and-deploy.md).
## Consequences
Backwards compatibility was an important considering when making these changes. We had to implement logic to make sure a new version of the Zarf binary could still operate with older versions of Zarf packages.
-At the moment we are testing the backwards compatibility by virtue of maintaining the `./src/test/e2e/27_cosign_deploy_test.go` where we are deploying an old Zarf package via `sget`.
+At the moment we are testing the backwards compatibility by virtue of maintaining the `./src/test/e2e/27_cosign_deploy_test.go` where we are deploying an old Zarf package via `sget` (which itself is now deprecated).
One thing we may want to look at more in the future is how we can get more intricate tests around the backwards compatibility.
diff --git a/adr/0017-zarf-bundle.md b/adr/0017-zarf-bundle.md
index fc62487181..cb2764464d 100644
--- a/adr/0017-zarf-bundle.md
+++ b/adr/0017-zarf-bundle.md
@@ -4,7 +4,7 @@ Date: 2023-06-13
## Status
-Pending
+[Migrated](https://github.com/defenseunicorns/uds-cli)
## Context
@@ -76,9 +76,11 @@ Cons:
## Decision
+> :warning: **NOTE**: This functionality was migrated to [uds-cli](https://github.com/defenseunicorns/uds-cli) - this ADR is kept here for historical purposes.
+
The current proposition (subject to change before acceptance) is **Zarf Bundles**, which a following PR will focus on and create a POC of.
-In essense the `zarf-bundle.yaml` would look something like so:
+In essence the `zarf-bundle.yaml` would look something like so:
```yaml
metadata:
diff --git a/adr/0018-hooks.md b/adr/0018-hooks.md
index edd97f09aa..cd3b10c189 100644
--- a/adr/0018-hooks.md
+++ b/adr/0018-hooks.md
@@ -1,21 +1,21 @@
# 18. Zarf Hooks
-Date: 2023-06-13
+Date: 2023-09-20
## Status
-Pending
+Accepted
## Context
The idea of `hooks` is to provide a way for cluster maintainers to register functionality that runs during the deployment lifecycle. Zarf packages already have the concept of `actions` that can execute commands on the host machine's shell during certain package lifecycle events. As `actions` gain more adoption, the team has noticed they are being used to add functionality to Zarf in unexpected ways. We want `actions` to be a tool that extends upon the functionality of Zarf and its packages, not a tool that works around missing or clunky functionality.
-
We want package creators to be able to create system agnostic packages by leveraging core Zarf functionality. The following is one such scenario:
- _IF_ ECR is chosen as the external registry during `zarf init` / cluster creation, _THEN_ Zarf will seamlessly leverage ECR without requiring advanced user effort.
Using ECR as a remote registry creates 2 problems that Zarf will need to solve:
+
1. ECR authentication tokens expire after 12 hours and need to be refreshed. This means the cluster will need to constantly be refreshing its tokens and the user deploying packages will need to make sure they have a valid token.
2. ECR Image Repositories do not support 'push-to-create'. This means we will need to explicitly create an image repository for every image that is being pushed within the Zarf package.
@@ -28,91 +28,100 @@ Currently there are 2 solutions:
Neither one of these current solutions are ideal. We don't want to require overly complex external + prior actions for Zarf package deployments, and we don't want package creators to have to create and distribute packages that are specific to ECR.
-## Approaches Considered
+Potential considerations:
### Internal Zarf Implementation
-Clusters that have hooks will have `zarf-hook-*` secret(s) in the 'zarf' namespace. This secret will contain the hook's configuration and any other required metadata. As part of the package deployment process, Zarf will check if the cluster has any hooks and run them if they exist. Given the scenario above, there is no longer a need for an ECR specific Zarf package to be created. An ECR hook would perform the proper configuration for any package deployed onto that cluster; thereby requiring no extra manual intervention from the package deployer.
-
-
-Zarf HookConfig state information struct:
-```go
-type HookConfig struct {
- HookName string `json:"hookName" jsonschema:"description=Name of the hook"`
- Internal bool `json:"internal" jsonschema:"description=Internal hooks are run by Zarf itself, not by a plugin"`
- Lifecycle HookLifecycle `json:"lifecycle" jsonschema:"description=Lifecycle of the hook"`
- HookData map[string]interface{} `json:"hookData" jsonschema:"description=Generic data map used for the hook. The data is obtained from a secret in the Zarf namespace"`
- OCIReference string `json:"ociReference" jsonschema:"description=Optional OCI reference to the hook image to run"`
-}
-```
-
-Example Secret Data:
-```yaml
-hookName: ecr-repository
-internal: true
-lifecycle: before-component
-hookData:
- registryURL: public.ecr.aws/abcdefg/zarf-ecr-registry
- region: us-east-1
- repositoryPrefix: ecr-zarf-registry
-```
-
-For this solution, hooks have to be 'installed' onto a cluster before they are used. When Zarf is deploying a package onto a cluster, it will look for any secrets with the `zarf-hook` label in the `zarf` namespace. If hooks are found, Zarf will run any 'package' level hooks before deploying a component and run any 'component' level hook for each component that is getting deployed. The hook lifecycle options will be:
-1. Before a package deployment
-2. After a package deployment
-3. Before a component deployment
-4. After a component deployment
- - NOTE: The order of hook execution is nearly random. If there are multiple hooks for a lifecycle there is no guarantee that they will be executed in a certain order.
- - NOTE: The `package` lifecycle might be changed to a `run-once` lifecycle. This would benefit packages that don't have kube context information when the deployment starts.
-
-Zarf hooks will have two forms of execution via `Internal` and `External` hooks.
-#### Internal Hooks
-Internal hooks will be hooks that are built into the Zarf CLI and run internal code when executed. The logic for these hooks would be built into the Zarf CLI and would be updated with new releases of the CLI.
-
-#### External Hooks
-There are a few approaches for external hooks.
-1. Have the hook metadata reference an OCI image that is downloaded and run.
- - The hook metadata can reference the shasum of the image to ensure the image is not tampered with.
- - We can pass metadata from the secret to the image.
-2. Have the hook metadata reference an image/endpoint that we call via a gRPC call.
- - This would require a lot of consideration to security since we will be executing code from an external source.
-3. Have the hook metadata contain a script or list of shell commands that can get run.
- - This would be the simplest solution but would require the most work from the hook creator. This also has the most potential security issues.
-
-
-
-**PROS**
- - Implementing Hooks internally means we don't have to deal with any bootstrapping issues.
- - Internally managed hooks can leverage Zarf internal code.
-
-**CONS**
- - Since 'Internal' hooks are built into the CLI, the only way to get updates for the hook is to update the CLI.
- - External hooks will have a few security concerns that we will have to work through.
- - Implementing hooks internally adds more complexity to the Zarf CLI. This is especially true if wwe end up using WASM as the execution engine for hooks.
+ Clusters that have hooks will have `zarf-hook-*` secret(s) in the 'zarf' namespace. This secret will contain the hook's configuration and any other required metadata. As part of the package deployment process, Zarf will check if the cluster has any hooks and run them if they exist. Given the scenario above, there is no longer a need for an ECR specific Zarf package to be created. An ECR hook would perform the proper configuration for any package deployed onto that cluster; thereby requiring no extra manual intervention from the package deployer.
+
+ Zarf HookConfig state information struct:
+
+ ```go
+ type HookConfig struct {
+ HookName string `json:"hookName" jsonschema:"description=Name of the hook"`
+ Internal bool `json:"internal" jsonschema:"description=Internal hooks are run by Zarf itself, not by a plugin"`
+ Lifecycle HookLifecycle `json:"lifecycle" jsonschema:"description=Lifecycle of the hook"`
+ HookData map[string]interface{} `json:"hookData" jsonschema:"description=Generic data map used for the hook. The data is obtained from a secret in the Zarf namespace"`
+ OCIReference string `json:"ociReference" jsonschema:"description=Optional OCI reference to the hook image to run"`
+ }
+ ```
+
+ Example Secret Data:
+
+ ```yaml
+ hookName: ecr-repository
+ internal: true
+ lifecycle: before-component
+ hookData:
+ registryURL: public.ecr.aws/abcdefg/zarf-ecr-registry
+ region: us-east-1
+ repositoryPrefix: ecr-zarf-registry
+ ```
+
+ For this solution, hooks have to be 'installed' onto a cluster before they are used. When Zarf is deploying a package onto a cluster, it will look for any secrets with the `zarf-hook` label in the `zarf` namespace. If hooks are found, Zarf will run any 'package' level hooks before deploying a component and run any 'component' level hook for each component that is getting deployed. The hook lifecycle options will be:
+
+ 1. Before a package deployment
+ 2. After a package deployment
+ 3. Before a component deployment
+ 4. After a component deployment
+
+ NOTE: The order of hook execution is nearly random. If there are multiple hooks for a lifecycle there is no guarantee that they will be executed in a certain order.
+ NOTE: The `package` lifecycle might be changed to a `run-once` lifecycle. This would benefit packages that don't have kube context information when the deployment starts.
+
+ Zarf hooks will have two forms of execution via `Internal` and `External` hooks:
+
+ Internal Hooks:
+
+ Internal hooks will be hooks that are built into the Zarf CLI and run internal code when executed. The logic for these hooks would be built into the Zarf CLI and would be updated with new releases of the CLI.
+ External Hooks:
+
+ There are a few approaches for external hooks:
+
+ 1. Have the hook metadata reference an OCI image that is downloaded and run.
+
+ - The hook metadata can reference the shasum of the image to ensure the image is not tampered with.
+ - We can pass metadata from the secret to the image.
+
+ 1. Have the hook metadata reference an image/endpoint that we call via a gRPC call.
+ - This would require a lot of consideration to security since we will be executing code from an external source.
+
+ 1. Have the hook metadata contain a script or list of shell commands that can get run.
+ - This would be the simplest solution but would require the most work from the hook creator. This also has the most potential security issues.
+
+ Pros:
+
+ - Implementing Hooks internally means we don't have to deal with any bootstrapping issues.
+ - Internally managed hooks can leverage Zarf internal code.
+
+ Cons:
+
+ - Since 'Internal' hooks are built into the CLI, the only way to get updates for the hook is to update the CLI.
+ - External hooks will have a few security concerns that we will have to work through.
+ - Implementing hooks internally adds more complexity to the Zarf CLI. This is especially true if we end up using WASM as the execution engine for hooks.
### Webhooks
-Webhooks, such as Pepr, can act as a K8s controller that enables Kubernetes mutations. We are (or will be) considering using Pepr to replace the `Zarf Agent`. Pepr is capable to accomplishing most of what Zarf wants to do with the concept of Hooks. Zarf hook configuration could be saved as secrets that Zarf will be able to use. As Zarf is deploying packages onto a cluster, it can check for secrets the represent hooks (as it would if hook execution is handled internally as stated above) and get information on how to run the webhook from the secret. This would likely mean that the secret that describes the hook would have a `URL` instead of an `OCIReference` as well as config information that it would pass through to the hook. With the webhook approach, lifecycle management is a lot more flexible as the webhook can operate on native kubernetes events such as a secret getting created / updated.
-**PROS**
- - Pepr as a solution would be more flexible than the internal Zarf implementation of Hooks since the webhook could be anywhere.
- - Using Pepr would reduce the complexity of Zarf's codebase.
- - It will be easier to secure third party hooks when Pepr is the one running them.
- - Lifecycle management would be a lot easier with a webhook solution like Pepr.
+ Webhooks, such as Pepr, can act as a K8s controller that enables Kubernetes mutations. We are (or will be) considering using Pepr to replace the `Zarf Agent`. Pepr is capable to accomplishing most of what Zarf wants to do with the concept of Hooks. Zarf hook configuration could be saved as secrets that Zarf will be able to use. As Zarf is deploying packages onto a cluster, it can check for secrets the represent hooks (as it would if hook execution is handled internally as stated above) and get information on how to run the webhook from the secret. This would likely mean that the secret that describes the hook would have a `URL` instead of an `OCIReference` as well as config information that it would pass through to the hook. With the webhook approach, lifecycle management is a lot more flexible as the webhook can operate on native kubernetes events such as a secret getting created / updated.
-**CONS**
- - Pepr is a new project that hasn't been stress tested in production yet (but neither has Hooks).
- - The Pepr image needs to be pushed to an image registry before it is deployed. This will require a new bootstrapping solution to solve the ECR problem we identified above.
+ Pros:
+ - Pepr as a solution would be more flexible than the internal Zarf implementation of Hooks since the webhook could be anywhere.
+ - Using Pepr would reduce the complexity of Zarf's codebase.
+ - It will be easier to secure third party hooks when Pepr is the one running them.
+ - Lifecycle management would be a lot easier with a webhook solution like Pepr.
-## Consequences
+ Cons:
+
+ - Pepr is a new project that hasn't been stress tested in production yet (but neither has Hooks).
+ - The Pepr image needs to be pushed to an image registry before it is deployed. This will require a new bootstrapping solution to solve the ECR problem we identified above.
-- External hooks will likely not be implemented in the first pass of this feature. Handling external hooks will be an interesting challenge as we'll have to download the hook image and run / execute it. Security will be something we consider heavily when implementing this feature.
+## Decision
-- While hooks don't introduce raw schema changes to Zarf, it does add complexity where side affects are happening during package deployments that might not be obvious to the package deployer. This is especially the case if the person who deployed the hooks is different from the person who is deploying the subsequent packages.
+[Pepr](https://github.com/defenseunicorns/pepr) will be used to enable custom, or environment-specific, automation tasks to be integrated in the Zarf package deployment lifecycle. Pepr also allows the Zarf codebase to remain agnostic to any third-party APIs or dependencies that may be used.
-- At the current moment, we don't have a way to version hooks. This is something we should consider so we can update hooks that have been deployed onto a cluster.
+A `--skip-webhooks` flag has been added to `zarf package deploy` to allow users to opt out of Zarf checking and waiting for any webhooks to complete during package deployments.
-- At the current moment, there is no way to have a package opt out of running hooks. This means that someone who deploys a hook to a cluster effectively has a way to manipulate every other package deployment that will get deployed onto that cluster.
+## Consequences
-- Some situations will require hooks to be 'seeded' onto the cluster. For example, the ECR scenario we identified above would require hooks to exist before running `zarf init` on the EKS cluster.
+While hooks don't introduce raw schema changes to Zarf, it does add complexity where side affects are happening during package deployments that might not be obvious to the package deployer. This is especially the case if the person who deployed the hooks is different from the person who is deploying the subsequent packages.
diff --git a/adr/0019-decouple-transformation-library-from-zarf.md b/adr/0019-decouple-transformation-library-from-zarf.md
index 43922c0e00..60257ce320 100644
--- a/adr/0019-decouple-transformation-library-from-zarf.md
+++ b/adr/0019-decouple-transformation-library-from-zarf.md
@@ -8,9 +8,10 @@ Pending
## Context
-We need a way to decouple transformations from Zarf. We know the Zarf transformation library is battle tested, hardened, and reliable. As Pepr takes admission responsibilities from the Zarf Agent, we need a way to synchronize the TypeScript with the Go code instead of maintaining two disparate libraries which will be expected to grow.
+We need a way to decouple transformations from Zarf. We know the Zarf transformation library is battle tested, hardened, and reliable. As Pepr takes admission responsibilities from the Zarf Agent, we need a way to synchronize the TypeScript with the Go code instead of maintaining two disparate libraries which will be expected to grow.
We considered:
+
- WASM
- gRPC
- REST
@@ -19,6 +20,7 @@ We considered:
#### WASM
**PROS**
+
- Shared codebase between TypeScript and Go
- Fast
- API Contract
@@ -30,6 +32,7 @@ We considered:
#### gRPC
**PROS**
+
- Shared codebase between TypeScript and Go
- Fast
- API Contract
@@ -40,6 +43,7 @@ We considered:
#### REST
**PROS**
+
- Shared codebase between TypeScript and Go
- Proven
- API Contract
@@ -50,13 +54,12 @@ We considered:
#### Rewrite in TypeScript
**PROS**
+
- Low hanging fruit
**CONS**
- Two codebases to maintain
- TypeScript is not as battle tested as Go
-
-
## Decision
We conformed around using WASM because we can leverage the battle tested transform library from Zarf without incurring network overhead cost from pod to pod or container to container communications.
diff --git a/adr/0020-package-sources.md b/adr/0020-package-sources.md
new file mode 100644
index 0000000000..df68d58455
--- /dev/null
+++ b/adr/0020-package-sources.md
@@ -0,0 +1,79 @@
+# 20. Package Sources
+
+Date: 2023-09-28
+
+## Status
+
+Accepted
+
+## Context
+
+Zarf natively supports creating the following package sources:
+
+- Local Tarball (`.tar` and `.tar.zst`)
+ - Via `zarf package create -o `, with compression determined by `metadata.uncompressed` in `zarf.yaml`
+- Split Tarball (`.part...`)
+ - Via `zarf package create --max-package-size -o `
+- OCI package (`oci://`)
+ - Via `zarf package publish oci://` or `zarf package create -o oci://...`
+- In-cluster (Deployed) package
+ - Post `zarf package deploy ` the package is show in `zarf package list`
+
+However, the current loading abilities of Zarf have been inconsistent depending upon the action specified. For example:
+
+- Split tarball packages could be created, deployed, but not inspected, or removed
+- In-cluster packages could be removed (by name), but not inspected
+- HTTPs URLs could be deployed, but not inspected, or removed
+- etc...
+
+## Decision
+
+Zarf must support the `deploy`, `inspect`, `remove`, `publish`, `pull`, and `mirror-resources` commands across package sources.
+
+For common behavior to be exhibited by all sources, the `PackageSource` interface has been introduced along with the `layout` library.
+
+```go
+// src/pkg/packager/sources/new.go
+
+// PackageSource is an interface for package sources.
+//
+// While this interface defines three functions, LoadPackage, LoadPackageMetadata, and Collect; only one of them should be used within a packager function.
+//
+// These functions currently do not promise repeatability due to the side effect nature of loading a package.
+type PackageSource interface {
+ // LoadPackage loads a package from a source.
+ //
+ // For the default sources included in Zarf, package integrity (checksums, signatures, etc.) is validated during this function
+ // and expects the package structure to follow the default Zarf package structure.
+ //
+ // If your package does not follow the default Zarf package structure, you will need to implement your own source.
+ LoadPackage(*layout.PackagePaths) error
+ // LoadPackageMetadata loads a package's metadata from a source.
+ //
+ // This function follows the same principles as LoadPackage, with a few exceptions:
+ //
+ // - Package integrity validation will display a warning instead of returning an error if
+ // the package is signed but no public key is provided. This is to allow for the inspection and removal of packages
+ // that are signed but the user does not have the public key for.
+ LoadPackageMetadata(dst *layout.PackagePaths, wantSBOM bool, skipValidation bool) error
+
+ // Collect relocates a package from its source to a tarball in a given destination directory.
+ Collect(destinationDirectory string) (tarball string, err error)
+}
+```
+
+The following sources have been implemented:
+
+- Local Tarball (`.tar` and `.tar.zst`)
+- Split Tarball (`.part...`)
+- HTTP(S) URL
+- Published OCI package (`oci://`)
+- In-cluster (Deployed) package (`inspect` and `remove` only)
+
+The `layout` library contains the `PackagePaths` struct which supersedes the prior `TempPaths` struct. This new struct contains access methods to different aspects of Zarf's internal package layout. This struct is passed to the `PackageSource` functions to allow for the loading of packages into the correct layout. In order for a package to be loaded into the correct layout, the package must follow the default Zarf package structure, or be converted to the expected structure during loading operations.
+
+## Consequences
+
+The `PackageSource` interface and `layout` library are now part of the public API of Zarf. This means that any package source can be implemented by a third party and used with Zarf as a first class citizen.
+
+By moving towards a behavioral driven design, Zarf is now more consistent in its behavior across all package sources. If it walks like a source, and it quacks like a source, it's a source.
diff --git a/adr/0021-composable-components.md b/adr/0021-composable-components.md
new file mode 100644
index 0000000000..eb26be6788
--- /dev/null
+++ b/adr/0021-composable-components.md
@@ -0,0 +1,23 @@
+# 21. Composable Components
+
+Date: 2023-10-26
+
+## Status
+
+Accepted
+
+## Context
+
+Zarf has supports composing components together between packages on `zarf package create` since v0.16.0. This has allowed package creators to make more complex packages from smaller reusable bits. As this functionality grew however there were a few problems that developed:
+
+1. Import chains did not handle scaling to larger numbers of layers with test coverage usually only covering the first import.
+2. When OCI skeletons were added they were largely bolted on after the fact without rethinking how they would impact composability.
+3. Component filtering via the `only` filter was not implemented in a central location leading to bugs with create-time filters.
+
+## Decision
+
+We decided to separate composability into its own package that represents a composability import chain as a doubly linked list. This allows us to represent the whole chain as it exists relative to the "head" Zarf package (the definition that Zarf was asked to build) to more easily handle packages that are in different locations (such as OCI skeletons in one's cache). We also run the compose functions on all components so that the additional filter logic that is needed for these components can be handled more concisely and built upon (as it might for `flavor` https://github.com/defenseunicorns/zarf/issues/2101).
+
+## Consequences
+
+Maintaining the full context within a linked list does use more memory and some operations on it are less efficient than they could be if we one-shotted the compose. This is a decent tradeoff however as most import chains won't be longer than 4 or 5 elements in practice and these structs and operations are relatively small.
diff --git a/adr/0022-dev-cmd.md b/adr/0022-dev-cmd.md
new file mode 100644
index 0000000000..5939aea526
--- /dev/null
+++ b/adr/0022-dev-cmd.md
@@ -0,0 +1,42 @@
+# 22. Introduce `dev` command
+
+Date: 2023-12-03
+
+## Status
+
+Accepted
+
+## Context
+
+> Feature request:
+
+The current package development lifecycle is:
+
+1. Create a `zarf.yaml` file and add components
+2. Create a package with `zarf package create `
+3. Debug any create errors and resolve by editing `zarf.yaml` and repeating step 2
+4. Run `zarf init` to initialize the cluster
+5. Deploy the package with `zarf package deploy `
+6. Debug any deploy errors and resolve by editing `zarf.yaml` and repeating step 2 or 5
+
+If there are deployment errors, the common pattern is to reset the cluster (ex: `k3d cluster delete && k3d cluster create`) and repeat steps 4-6. Re-initializing the cluster, recreating the package, and redeploying the package is tedious and time consuming; especially when the package is large or the change was small.
+
+`zarf package create` is designed around air-gapped environments where the package is created in one environment and deployed in another. Due to this architecture, a package's dependencies _must_ be retrieved and assembled _each_ and _every_ time.
+
+There already exists the concept of [`YOLO` mode](0010-yolo-mode.md), which can build + deploy a package without the need for `zarf init`, and builds without fetching certain heavy dependencies (like Docker images). However, `YOLO` mode is not exposed via CLI flags, and is meant to develop and deploy packages in fully connected environments.
+
+## Decision
+
+Introduce a `dev deploy` command that will combine the lifecycle of `package create` and `package deploy` into a single command. This command will:
+
+- Not result in a re-usable tarball / OCI artifact
+- Not have any interactive prompts
+- Not require `zarf init` to be run by default (override-able with a CLI flag)
+- Be able to create+deploy a package in either YOLO mode (default) or prod mode (exposed via a CLI flag)
+- Only build + deploy components that _will_ be deployed (contrasting with `package create` which builds _all_ components regardless of whether they will be deployed)
+
+## Consequences
+
+The `dev deploy` command will make it easier to develop and deploy packages in connected **development** environments. It will also make it easier to debug deployment errors by allowing the user to iterate on the package without having to re-initialize the cluster, re-build and re-deploy the package each cycle.
+
+There is a purpose to placing this functionality behind a new command, rather than adding it to `package create`. Commands under `dev` are meant to be used in **development** environments, and are **not** meant to be used in **production** environments. There is still the possibility that a user will use `dev deploy` in a production environment, but the command name and documentation will make it clear that this is not the intended use case.
diff --git a/adr/0023-chart-override.md b/adr/0023-chart-override.md
new file mode 100644
index 0000000000..d4fb4661c0
--- /dev/null
+++ b/adr/0023-chart-override.md
@@ -0,0 +1,65 @@
+# 23. Simplifying Helm Chart Value Overrides
+
+Date: 2024-03-25
+
+## Status
+
+Accepted
+
+
+## Context
+
+The process of deploying applications with Helm charts in Kubernetes environments often necessitates the customization of chart values to align with specific operational or environmental requirements. The current method for customizing these values—either through manual edits or `###ZARF_VAR_XYZ###`. A more streamlined approach would greatly enhance the deployment experience by offering both flexibility and reliability.
+
+## Decision
+
+To address this issue, we propose the introduction of a feature designed to simplify the process of overriding chart values at the time of deployment. This feature would allow users to easily specify overrides for any chart values directly via command-line arguments, eliminating the need to alter the chart's default values file or manage multiple command-line arguments for each override.
+
+Key aspects of the proposed implementation include:
+- Use existing `--set` flags to specify overrides for chart values.
+- The ability to list all overrides in a structured and easily understandable format within `zarf.yaml`.
+- Ensuring that during deployment, these specified overrides take precedence over the chart's default values, thus facilitating customized deployments without necessitating permanent modifications to the chart.
+
+## Consequences
+
+Adopting this feature would lead to several key improvements:
+- **Streamlined Configuration Process**: Allowing helm values overrides in the zarf package schema simplifies the user experience by reducing the reliance on extensive custom `###ZARF_VAR_XYZ###` templating and aligning more closely with standard Helm practices
+
+Ultimately, this feature is aimed at enhancing the deployment workflow by offering a straightforward and efficient means of customizing Helm chart deployments via command-line inputs.
+
+## Example Configuration
+
+Below is an example of how the `zarf.yaml` configuration file might be structured to utilize the new override feature for Helm chart values:
+
+```yaml
+kind: ZarfPackageConfig
+metadata:
+ name: helm-charts
+ description: Example showcasing multiple ways to deploy helm charts
+ version: 0.0.1
+
+components:
+ - name: demo-helm-charts
+ required: true
+ charts:
+ - name: podinfo-local
+ version: 6.4.0
+ namespace: podinfo-from-local-chart
+ localPath: chart
+ valuesFiles:
+ - values.yaml
+ variables:
+ - name: REPLICA_COUNT
+ description: "Override the number of pod replicas"
+ path: replicaCount
+```
+This configuration allows for the specification of default values and descriptions for variables that can be overridden at deployment time. The variables section under each chart specifies the variables that can be overridden, along with a path that indicates where in the values file the variable is located.
+
+### Command Line Example
+
+To override the `REPLICA_COUNT` variable at deployment time, the following command can be used:
+
+```bash
+zarf package deploy zarf-package-helm-charts-arm64-0.0.1.tar.zst --set REPLICA_COUNT=5
+```
+This command demonstrates how users can easily customize their Helm chart deployments by specifying overrides for chart values directly via command-line arguments, in line with the proposed feature.
diff --git a/adr/0024-starlight.md b/adr/0024-starlight.md
new file mode 100644
index 0000000000..9907b00fbb
--- /dev/null
+++ b/adr/0024-starlight.md
@@ -0,0 +1,76 @@
+# 24. Migrate documentation to Starlight
+
+Date: 2024-03-30
+
+## Status
+
+Accepted
+
+## Context
+
+The current documentation site is built with Docusaurus 2. While Docusaurus has served us well, it has some limitations, primarily around performance and dependency management.
+
+### Proposed Solutions
+
+1. [**Starlight**](https://starlight.astro.build/) is a new documentation site generator that is built with performance in mind. It is a lightweight, fast, and flexible static site generator powered by [Astro](https://astro.build) that is designed to be easy to use and extend.
+
+ - **Pros**:
+ - Fast performance.
+ - Easy to extend with custom components in any framework.
+ - Built-in support for MDX.
+ - Simplified build process.
+ - Better control over dependencies.
+ - Client-side static site search built-in.
+ - Excellent default theme.
+ - **Cons**:
+ - Newer project with a smaller ecosystem compared to others.
+ - Much fewer plugins and themes available compared to other static site generators.
+ - Only absolute URLs are supported for cross-site links (relative image URLs are supported).
+
+2. [**Hugo**](https://gohugo.io/): is another popular static site generator that is known for its speed and flexibility. It is written in Go and has a large ecosystem of themes and plugins.
+
+ - **Pros**:
+ - Fast performance.
+ - Large ecosystem of themes and plugins.
+ - By default no JavaScript is required.
+ - **Cons**:
+ - Fewer built-in features compared to others, much more of a DIY approach.
+ - Steeper learning curve compared to others.
+ - More complex build process.
+ - Not as easy to extend with custom components.
+ - Theme management is abysmal w/ a combination of Go modules, Git submodules, and NPM packages.
+ - Zero documentation themes the team liked, leading to the quandry of whether to build, and having to maintain, a custom theme.
+
+3. [**Material for MkDocs**](https://squidfunk.github.io/mkdocs-material/): is a popular static site generator geared towards project documentation. The Material for MkDocs theme provides a clean and responsive design.
+
+ - **Pros**:
+ - _Amazing_ default theme and developer experience for writing docs.
+ - Easy to use and extend.
+ - Large ecosystem of plugins.
+ - **Cons**:
+ - Not as flexible as Hugo or Starlight.
+ - Making custom components can be more challenging.
+ - Brings in Python dependencies (not a really huge detractor, but the team would like to reduce dependencies on different languages where possible).
+
+## Decision
+
+To simplify the development process and improve the performance of the documentation site, we have decided to migrate to Starlight. This is based upon a number of factors:
+
+- Small dependency footprint.
+- Fast performance.
+- Easy to extend with custom components.
+- Built-in support for MDX.
+- The majority of the features we need are built-in and require minimal configuration.
+ - Client-side static site search
+ - Sane spacing and typography
+ - Dark mode + light mode
+ - Syntax highlighting
+ - Responsive design + mobile-friendly
+ - Tabs + Admonitions
+
+## Consequences
+
+- During the transition, we will need to update the existing documentation content to work with the new site generator. Additionally, the site architecture will be re-evaluated and optimized. This _will_ result in many links to current content breaking.
+- Every documentation generator has its quirks and limitations, so we will need to adapt to the new workflow and learn how to best utilize the features of Starlight.
+- The migration will take time and effort, but the benefits of improved performance and flexibility will be worth it in the long run.
+- The team will need to learn how to use Astro and Starlight, which may require some training and experimentation.
diff --git a/docs-website/.gitignore b/docs-website/.gitignore
deleted file mode 100644
index 7369cbf447..0000000000
--- a/docs-website/.gitignore
+++ /dev/null
@@ -1,23 +0,0 @@
-# Dependencies
-/node_modules
-
-# Production
-/build
-
-# Generated files
-.docusaurus
-.cache-loader
-
-# Misc
-.DS_Store
-.env.local
-.env.development.local
-.env.test.local
-.env.production.local
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-
-# Code Editor
-.vscode/settings.json
\ No newline at end of file
diff --git a/docs-website/README.md b/docs-website/README.md
deleted file mode 100644
index 4e79534ece..0000000000
--- a/docs-website/README.md
+++ /dev/null
@@ -1,53 +0,0 @@
-# Zarf - Docs Site
-
-[](https://kubernetes.slack.com/archives/C03B6BJAUJ3)
-[](https://zarf.dev/)
-[](https://docs.zarf.dev/)
-Zarf Documentation|[](https://app.netlify.com/sites/zarf-docs/deploys)
-
-This is the docs site for [Zarf](https://github.com/defenseunicorns/zarf), a declarative air gap solution for Kubernetes. This site is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator created by Facebook.
-
-## Prerequisites
-
-This site requires `nodejs` and `npm` so install it if you haven't already.
-
-```bash
-# FOR LINUX (Ubuntu)
-$ sudo apt update
-$ sudo apt install nodejs
-$ sudo apt install npm
-
-# FOR MAC (Homebrew)
-$ brew install nodejs
-```
-
-## Installation
-
-To install the required dependencies run the following:
-
-```bash
-npm ci
-```
-
-## Running
-
-There are two ways to run the site locally, the simplest being the following:
-
-```bash
-npm run start
-```
-
-This will open a browser window that will let you see the built site.
-
-> ⚠️ *Note, `npm run start` will not perform some link checking or build the search index.*
-
-To perform a full build and to run it locally you should run the following:
-
-```bash
-npm run build
-npm run serve
-```
-
-## Deployment
-
-To deploy the site, push your changes into a branch and open a PR. [Netlify](https://www.netlify.com/) will generate a preview for you and a PR approver to see your changes. Once the approver is happy with the changes they can approve and merge the PR and it will be pushed to production.
diff --git a/docs-website/babel.config.js b/docs-website/babel.config.js
deleted file mode 100644
index e00595dae7..0000000000
--- a/docs-website/babel.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
-};
diff --git a/docs-website/docusaurus.config.js b/docs-website/docusaurus.config.js
deleted file mode 100644
index 7993d8b01f..0000000000
--- a/docs-website/docusaurus.config.js
+++ /dev/null
@@ -1,149 +0,0 @@
-// @ts-check
-// Note: type annotations allow type checking and IDEs autocompletion
-
-const prismRenderer = require("prism-react-renderer/dist/index");
-const { SocialsBox } = require("./static-components/SocialsBox/SocialsBox");
-
-/** @type {import('@docusaurus/types').Config} */
-const config = {
- title: "Zarf Documentation",
- tagline: "Airgap is hard. Zarf makes it easy.",
- url: "https://zarf.dev",
- baseUrl: "/",
- onBrokenLinks: "throw",
- onBrokenMarkdownLinks: "throw",
- favicon: "img/favicon.svg",
- organizationName: "Defense Unicorns", // Usually your GitHub org/user name.
- projectName: "Zarf", // Usually your repo name.
- markdown: {
- mermaid: true,
- },
- plugins: [
- 'custom-loaders'
- ],
- themes: [
- [require.resolve("@easyops-cn/docusaurus-search-local"), { hashed: true }],
- [require.resolve("@docusaurus/theme-mermaid"), { hashed: true }],
- ],
- staticDirectories: ["static"],
- presets: [
- [
- "classic",
- /** @type {import('@docusaurus/preset-classic').Options} */
- ({
- docs: {
- path: "..",
- include: [
- "CONTRIBUTING.md",
- "adr/**/*.{md,mdx}",
- "docs/**/*.{md,mdx}",
- "examples/**/*.{md,mdx}",
- "packages/**/*.{md,mdx}",
- ],
- showLastUpdateTime: true,
- showLastUpdateAuthor: true,
- sidebarPath: require.resolve("./src/sidebars.js"),
- editUrl: ({ docPath }) => {
- // TODO: (@RAZZLE) once examples have been fixed, change this url to edit: `https://github.com/defenseunicorns/zarf/edit/main/${docPath}`
- return `https://github.com/defenseunicorns/zarf/tree/main/${docPath}`; // <-- to view
- },
- routeBasePath: "/",
- async sidebarItemsGenerator({ defaultSidebarItemsGenerator, ...args }) {
- const sidebarItems = await defaultSidebarItemsGenerator(args);
- if (args.item.dirName === "docs") {
- // This hack places the examples tree at the 7th position in the sidebar
- sidebarItems.splice(6, 0, {
- type: 'category',
- label: 'Package Examples',
- link: {
- type: "doc",
- id: "examples/README",
- },
- items: [
- {
- type: "autogenerated",
- dirName: "examples",
- },
- ],
- });
- }
- if (args.item.dirName === "examples") {
- // This hack removes the "Overview" page from the sidebar on the examples page
- return sidebarItems.slice(1);
- }
- return sidebarItems;
- },
- },
- blog: false,
- theme: {
- customCss: [require.resolve("./src/css/custom.css")],
- },
- }),
- ],
- ],
-
- themeConfig:
- /** @type {import('@docusaurus/preset-classic').ThemeConfig} */
- ({
- colorMode: {
- defaultMode: "dark",
- disableSwitch: true,
- },
- navbar: {
- logo: {
- alt: "Zarf",
- src: "img/zarf-logo-light.svg",
- srcDark: "img/zarf-logo-dark.svg",
- href: "https://zarf.dev/",
- target: "_self",
- },
- items: [
- {
- type: "search",
- position: "right",
- },
- {
- type: "doc",
- docId: "docs/zarf-overview",
- position: "left",
- label: "Docs",
- },
- {
- position: "left",
- label: "Product",
- to: "https://zarf.dev",
- target: "_self",
- },
- {
- type: "html",
- position: "right",
- className: "navbar__item--socials-box",
- value: SocialsBox({
- linkClass: "menu__link",
- }),
- },
- ],
- },
- footer: {
- style: "dark",
- logo: {
- alt: "Zarf",
- src: "img/zarf-logo-light.svg",
- srcDark: "img/zarf-logo-dark.svg",
- href: "https://zarf.dev/",
- },
- copyright: `
-$ zarf init --components="logging" --confirm
-
-Saving log file to
-/var/folders/bk/rz1xx2sd5zn134c0_j1s2n5r0000gp/T/zarf-2023-03-22-11-47-22-867656842.log
-
- • Loading Zarf Package /Users/jason/.zarf-cache/zarf-init-arm64-v0.24.3.tar.zst
- • Loading Zarf Package /Users/jason/.zarf-cache/zarf-init-arm64-v0.24.3.tar.zst
-
-kind: ZarfInitConfig
-metadata:
- name: init
-description: Used to establish a new Zarf cluster
-architecture: arm64
-build:
- terminal: fv-az488-281
-user: runner
-architecture: arm64
-timestamp: Sun, 26 Feb 2023 01:28:31 +0000
-version: v0.24.3
-migrations:
- - scripts-to-actions
-components:
-- name: zarf-injector
-description: |
- Bootstraps a Kubernetes cluster by cloning a running pod in the cluster and hosting the registry image.
- Removed and destroyed after the Zarf Registry is self-hosting the registry image.
-required: true
-cosignKeyPath: cosign.pub
-files:
- - source: sget://defenseunicorns/zarf-injector:arm64-2023-02-09
-target: "###ZARF_TEMP###/zarf-injector"
- executable: true
-- name: zarf-seed-registry
-description: |
- Deploys the Zarf Registry using the registry image provided by the Zarf Injector.
-required: true
-charts:
- - name: docker-registry
-releaseName: zarf-docker-registry
-version: 1.0.0
-namespace: zarf
-valuesFiles:
- - packages/zarf-registry/registry-values.yaml
-- packages/zarf-registry/registry-values-seed.yaml
-localPath: packages/zarf-registry/chart
-- name: zarf-registry
-description: |
- Updates the Zarf Registry to use the self-hosted registry image.
- Serves as the primary docker registry for the cluster.
-required: true
-charts:
- - name: docker-registry
-releaseName: zarf-docker-registry
-version: 1.0.0
-namespace: zarf
-valuesFiles:
- - packages/zarf-registry/registry-values.yaml
-localPath: packages/zarf-registry/chart
-manifests:
- - name: registry-connect
-namespace: zarf
-files:
- - packages/zarf-registry/connect.yaml
-- name: kep-1755-registry-annotation
-namespace: zarf
-files:
- - packages/zarf-registry/configmap.yaml
-images:
- - registry:2.8.1
-- name: zarf-agent
-description: |
- A Kubernetes mutating webhook to enable automated URL rewriting for container
- images and git repository references in Kubernetes manifests. This prevents
- the need to manually update URLs from their original sources to the Zarf-managed
- docker registry and git server.
-required: true
-actions:
- onCreate:
- before:
- - cmd: make init-package-local-agent AGENT_IMAGE_TAG="v0.24.3"
-manifests:
- - name: zarf-agent
-namespace: zarf
-files:
- - packages/zarf-agent/manifests/service.yaml
-- packages/zarf-agent/manifests/secret.yaml
-- packages/zarf-agent/manifests/deployment.yaml
-- packages/zarf-agent/manifests/webhook.yaml
-images:
- - ghcr.io/defenseunicorns/zarf/agent:v0.24.3
-- name: logging
-description: |
- Deploys the Promtail Grafana & Loki (PGL) stack.
- Aggregates logs from different containers and presents them in a web dashboard.
- Recommended if no other logging stack is deployed in the cluster.
-charts:
- - name: loki-stack
-releaseName: zarf-loki-stack
-url: https://grafana.github.io/helm-charts
-version: 2.8.9
-namespace: zarf
-valuesFiles:
- - packages/logging-pgl/pgl-values.yaml
-manifests:
- - name: logging-connect
-namespace: zarf
-files:
- - packages/logging-pgl/connect.yaml
-images:
- - docker.io/grafana/promtail:2.7.0
-- grafana/grafana:8.3.5
-- grafana/loki:2.6.1
-- quay.io/kiwigrid/k8s-sidecar:1.19.2
-- name: git-server
-description: |
- Deploys Gitea to provide git repositories for Kubernetes configurations.
- Required for GitOps deployments if no other git server is available.
-actions:
- onDeploy:
- after:
- - maxTotalSeconds: 60
-maxRetries: 3
-cmd: ./zarf internal create-read-only-gitea-user
-charts:
- - name: gitea
-releaseName: zarf-gitea
-url: https://dl.gitea.io/charts
-version: 7.0.2
-namespace: zarf
-valuesFiles:
- - packages/gitea/gitea-values.yaml
-manifests:
- - name: git-connect
-namespace: zarf
-files:
- - packages/gitea/connect.yaml
-images:
- - gitea/gitea:1.18.3
-variables:
-- name: K3S_ARGS
-description: Arguments to pass to K3s
-default: --disable traefik
-- name: REGISTRY_EXISTING_PVC
-description: "Optional: Use an existing PVC for the registry instead of creating a new one. If this is set, the REGISTRY_PVC_SIZE variable will be ignored."
-- name: REGISTRY_PVC_SIZE
-description: The size of the persistent volume claim for the registry
-default: 20Gi
-- name: REGISTRY_CPU_REQ
-description: The CPU request for the registry
-default: 100m
-- name: REGISTRY_MEM_REQ
-description: The memory request for the registry
-default: 256Mi
-- name: REGISTRY_CPU_LIMIT
-description: The CPU limit for the registry
-default: "3"
-- name: REGISTRY_MEM_LIMIT
-description: The memory limit for the registry
-default: 2Gi
-- name: REGISTRY_HPA_MIN
-description: The minimum number of registry replicas
-default: "1"
-- name: REGISTRY_HPA_MAX
-description: The maximum number of registry replicas
-default: "5"
-- name: REGISTRY_HPA_ENABLE
-description: Enable the Horizontal Pod Autoscaler for the registry
-default: "true"
-- name: GIT_SERVER_EXISTING_PVC
-description: "Optional: Use an existing PVC for the git server instead of creating a new one. If this is set, the GIT_SERVER_PVC_SIZE variable will be ignored."
-- name: GIT_SERVER_PVC_SIZE
-description: The size of the persistent volume claim for git server
-default: 10Gi
-- name: GIT_SERVER_CPU_REQ
-description: The CPU request for git server
-default: 200m
-- name: GIT_SERVER_MEM_REQ
-description: The memory request for git server
-default: 512Mi
-- name: GIT_SERVER_CPU_LIMIT
-description: The CPU limit for git server
-default: "3"
-- name: GIT_SERVER_MEM_LIMIT
-description: The memory limit for git server
-default: 2Gi
-constants:
-- name: AGENT_IMAGE
-value: defenseunicorns/zarf/agent
-- name: AGENT_IMAGE_TAG
-value: v0.24.3
-- name: REGISTRY_IMAGE
-value: registry
-- name: REGISTRY_IMAGE_TAG
-value: 2.8.1
-This package has 9 artifacts with software bill-of-materials (SBOM) included. You can view them now
-in the zarf-sbom folder in this directory or to go directly to one, open this in your browser:
-/Users/jason/src/github.com/jasonvanbrackel/zarf/docs/.examples/tutorials/zarf-sbom/sbom-viewer-docker.io_grafana_promtail_2.7.0.html
-
-* This directory will be removed after package deployment.
-
- ✔ Deploy Zarf package confirmed
-
-
-
- 📦 ZARF-INJECTOR COMPONENT
-
-
-
-
- • Copying 1 files
- • Copying 1 files
- • Gathering cluster information
- • Gathering cluster information
- • Attempting to bootstrap the seed image into the cluster
- • Attempting to bootstrap the seed image into the cluster
-
-
- 📦 ZARF-SEED-REGISTRY COMPONENT
-
-
-
- • Loading the Zarf State from the Kubernetes cluster
- • Loading the Zarf State from the Kubernetes cluster
- • Processing helm chart docker-registry:1.0.0 from Zarf-generated helm chart
- • Processing helm chart docker-registry:1.0.0 from Zarf-generated helm chart
-
-
-
- 📦 ZARF-REGISTRY COMPONENT
-
-
-
-
- • Opening tunnel 52538 -> 5000 for svc/zarf-docker-registry in namespace zarf
- • Creating port forwarding tunnel at http://127.0.0.1:52538/v2/_catalog
- • Storing images in the zarf registry
- • Storing images in the zarf registry
- • Processing helm chart docker-registry:1.0.0 from Zarf-generated helm chart
- • Processing helm chart docker-registry:1.0.0 from Zarf-generated helm chart
- • Starting helm chart generation registry-connect
- • Starting helm chart generation registry-connect
- • Processing helm chart raw-init-zarf-registry-registry-connect:0.1.1679500042 from Zarf-generated
- helm chart
- • Processing helm chart raw-init-zarf-registry-registry-connect:0.1.1679500042 from Zarf-generated
- helm chart
- • Starting helm chart generation kep-1755-registry-annotation
- • Starting helm chart generation kep-1755-registry-annotation
- • Processing helm chart raw-init-zarf-registry-kep-1755-registry-annotation:0.1.1679500042 from
- Zarf-generated helm chart
- • Processing helm chart raw-init-zarf-registry-kep-1755-registry-annotation:0.1.1679500042 from
- Zarf-generated helm chart
-
-
-
- 📦 ZARF-AGENT COMPONENT
-
-
-
-
- • Opening tunnel 52550 -> 5000 for svc/zarf-docker-registry in namespace zarf
- • Creating port forwarding tunnel at http://127.0.0.1:52550/v2/_catalog
- • Storing images in the zarf registry
- • Storing images in the zarf registry
- • Starting helm chart generation zarf-agent
- • Starting helm chart generation zarf-agent
- • Processing helm chart raw-init-zarf-agent-zarf-agent:0.1.1679500042 from Zarf-generated helm chart
- • Processing helm chart raw-init-zarf-agent-zarf-agent:0.1.1679500042 from Zarf-generated helm chart
-
-
-Saving log file to
-/var/folders/bk/rz1xx2sd5zn134c0_j1s2n5r0000gp/T/zarf-2023-03-23-09-17-19-1802773183.log
- ✔ Loading Zarf Package /Users/jason/.zarf-cache/zarf-init-arm64-v0.24.3.tar.zst
-
-kind: ZarfInitConfig
-metadata:
- name: init
-description: Used to establish a new Zarf cluster
-architecture: arm64
-build:
- terminal: fv-az488-281
-user: runner
-architecture: arm64
-timestamp: Sun, 26 Feb 2023 01:28:31 +0000
-version: v0.24.3
-migrations:
- - scripts-to-actions
-components:
-- name: zarf-injector
-description: |
- Bootstraps a Kubernetes cluster by cloning a running pod in the cluster and hosting the registry image.
- Removed and destroyed after the Zarf Registry is self-hosting the registry image.
-required: true
-cosignKeyPath: cosign.pub
-files:
- - source: sget://defenseunicorns/zarf-injector:arm64-2023-02-09
-target: "###ZARF_TEMP###/zarf-injector"
- executable: true
-- name: zarf-seed-registry
-description: |
- Deploys the Zarf Registry using the registry image provided by the Zarf Injector.
-required: true
-charts:
- - name: docker-registry
-releaseName: zarf-docker-registry
-version: 1.0.0
-namespace: zarf
-valuesFiles:
- - packages/zarf-registry/registry-values.yaml
-- packages/zarf-registry/registry-values-seed.yaml
-localPath: packages/zarf-registry/chart
-- name: zarf-registry
-description: |
- Updates the Zarf Registry to use the self-hosted registry image.
- Serves as the primary docker registry for the cluster.
-required: true
-charts:
- - name: docker-registry
-releaseName: zarf-docker-registry
-version: 1.0.0
-namespace: zarf
-valuesFiles:
- - packages/zarf-registry/registry-values.yaml
-localPath: packages/zarf-registry/chart
-manifests:
- - name: registry-connect
-namespace: zarf
-files:
- - packages/zarf-registry/connect.yaml
-- name: kep-1755-registry-annotation
-namespace: zarf
-files:
- - packages/zarf-registry/configmap.yaml
-images:
- - registry:2.8.1
-- name: zarf-agent
-description: |
- A Kubernetes mutating webhook to enable automated URL rewriting for container
- images and git repository references in Kubernetes manifests. This prevents
- the need to manually update URLs from their original sources to the Zarf-managed
- docker registry and git server.
-required: true
-actions:
- onCreate:
- before:
- - cmd: make init-package-local-agent AGENT_IMAGE_TAG="v0.24.3"
-manifests:
- - name: zarf-agent
-namespace: zarf
-files:
- - packages/zarf-agent/manifests/service.yaml
-- packages/zarf-agent/manifests/secret.yaml
-- packages/zarf-agent/manifests/deployment.yaml
-- packages/zarf-agent/manifests/webhook.yaml
-images:
- - ghcr.io/defenseunicorns/zarf/agent:v0.24.3
-- name: logging
-description: |
- Deploys the Promtail Grafana & Loki (PGL) stack.
- Aggregates logs from different containers and presents them in a web dashboard.
- Recommended if no other logging stack is deployed in the cluster.
-charts:
- - name: loki-stack
-releaseName: zarf-loki-stack
-url: https://grafana.github.io/helm-charts
-version: 2.8.9
-namespace: zarf
-valuesFiles:
- - packages/logging-pgl/pgl-values.yaml
-manifests:
- - name: logging-connect
-namespace: zarf
-files:
- - packages/logging-pgl/connect.yaml
-images:
- - docker.io/grafana/promtail:2.7.0
-- grafana/grafana:8.3.5
-- grafana/loki:2.6.1
-- quay.io/kiwigrid/k8s-sidecar:1.19.2
-- name: git-server
-description: |
- Deploys Gitea to provide git repositories for Kubernetes configurations.
- Required for GitOps deployments if no other git server is available.
-actions:
- onDeploy:
- after:
- - maxTotalSeconds: 60
-maxRetries: 3
-cmd: ./zarf internal create-read-only-gitea-user
-charts:
- - name: gitea
-releaseName: zarf-gitea
-url: https://dl.gitea.io/charts
-version: 7.0.2
-namespace: zarf
-valuesFiles:
- - packages/gitea/gitea-values.yaml
-manifests:
- - name: git-connect
-namespace: zarf
-files:
- - packages/gitea/connect.yaml
-images:
- - gitea/gitea:1.18.3
-variables:
-- name: K3S_ARGS
-description: Arguments to pass to K3s
-default: --disable traefik
-- name: REGISTRY_EXISTING_PVC
-description: "Optional: Use an existing PVC for the registry instead of creating a new one. If this is set, the REGISTRY_PVC_SIZE variable will be ignored."
-- name: REGISTRY_PVC_SIZE
-description: The size of the persistent volume claim for the registry
-default: 20Gi
-- name: REGISTRY_CPU_REQ
-description: The CPU request for the registry
-default: 100m
-- name: REGISTRY_MEM_REQ
-description: The memory request for the registry
-default: 256Mi
-- name: REGISTRY_CPU_LIMIT
-description: The CPU limit for the registry
-default: "3"
-- name: REGISTRY_MEM_LIMIT
-description: The memory limit for the registry
-default: 2Gi
-- name: REGISTRY_HPA_MIN
-description: The minimum number of registry replicas
-default: "1"
-- name: REGISTRY_HPA_MAX
-description: The maximum number of registry replicas
-default: "5"
-- name: REGISTRY_HPA_ENABLE
-description: Enable the Horizontal Pod Autoscaler for the registry
-default: "true"
-- name: GIT_SERVER_EXISTING_PVC
-description: "Optional: Use an existing PVC for the git server instead of creating a new one. If this is set, the GIT_SERVER_PVC_SIZE variable will be ignored."
-- name: GIT_SERVER_PVC_SIZE
-description: The size of the persistent volume claim for git server
-default: 10Gi
-- name: GIT_SERVER_CPU_REQ
-description: The CPU request for git server
-default: 200m
-- name: GIT_SERVER_MEM_REQ
-description: The memory request for git server
-default: 512Mi
-- name: GIT_SERVER_CPU_LIMIT
-description: The CPU limit for git server
-default: "3"
-- name: GIT_SERVER_MEM_LIMIT
-description: The memory limit for git server
-default: 2Gi
-constants:
-- name: AGENT_IMAGE
-value: defenseunicorns/zarf/agent
-- name: AGENT_IMAGE_TAG
-value: v0.24.3
-- name: REGISTRY_IMAGE
-value: registry
-- name: REGISTRY_IMAGE_TAG
-value: 2.8.1
-This package has 9 artifacts with software bill-of-materials (SBOM) included. You can view them now
-in the zarf-sbom folder in this directory or to go directly to one, open this in your browser:
-/Users/jason/src/github.com/jasonvanbrackel/zarf/docs-website/zarf-sbom/sbom-viewer-docker.io_grafana_promtail_2.7.0.html
-
-* This directory will be removed after package deployment.
-
-? Deploy this Zarf package? (y/N) Yes
-
-───────────────────────────────────────────────────────────────────────────────────────
-name: logging
-charts:
-- name: loki-stack
-releaseName: zarf-loki-stack
-url: https://grafana.github.io/helm-charts
-version: 2.8.9
-namespace: zarf
-valuesFiles:
- - packages/logging-pgl/pgl-values.yaml
-manifests:
-- name: logging-connect
-namespace: zarf
-files:
- - packages/logging-pgl/connect.yaml
-images:
-- docker.io/grafana/promtail:2.7.0
-- grafana/grafana:8.3.5
-- grafana/loki:2.6.1
-- quay.io/kiwigrid/k8s-sidecar:1.19.2
-
-Deploys the Promtail Grafana & Loki (PGL) stack. Aggregates logs from different containers and
-presents them in a web dashboard. Recommended if no other logging stack is deployed in the cluster.
-? Deploy the logging component? (y/N) Yes
-───────────────────────────────────────────────────────────────────────────────────────
-
-
-
-Specify a maximum file size for this package in Megabytes. Above this size, the package will be split into multiple files. 0 will disable this feature.
- ? Please provide a value for "Maximum Package Size"(0) 0
-
-
-$ zarf init
-Using config file /Users/josimoore/Desktop/projects/zarf/zarf-config.toml
-
-Saving log file to
-/var/folders/gb/qfjdrlp52_v87bj_2rfzqls00000gn/T/zarf-2023-03-28-08-39-23-314846914.log
-
- • Loading Zarf Package /Users/josimoore/.zarf-cache/zarf-init-arm64-v0.25.0.tar.zst
- • Loading Zarf Package /Users/josimoore/.zarf-cache/zarf-init-arm64-v0.25.0.tar.zst
-
-kind: ZarfInitConfig
-metadata:
- name: init
-description: Used to establish a new Zarf cluster
-architecture: arm64
-build:
- terminal: fv-az442-536
-user: runner
-architecture: arm64
-timestamp: Tue, 21 Mar 2023 23:50:40 +0000
-version: v0.25.0
-migrations:
- - scripts-to-actions
-components:
-- name: zarf-injector
-description: |
- Bootstraps a Kubernetes cluster by cloning a running pod in the cluster and hosting the registry image.
- Removed and destroyed after the Zarf Registry is self-hosting the registry image.
-required: true
-cosignKeyPath: cosign.pub
-files:
- - source: sget://defenseunicorns/zarf-injector:arm64-2023-02-09
-target: "###ZARF_TEMP###/zarf-injector"
- executable: true
-- name: zarf-seed-registry
-description: |
- Deploys the Zarf Registry using the registry image provided by the Zarf Injector.
-required: true
-charts:
- - name: docker-registry
-releaseName: zarf-docker-registry
-version: 1.0.0
-namespace: zarf
-valuesFiles:
- - packages/zarf-registry/registry-values.yaml
-- packages/zarf-registry/registry-values-seed.yaml
-localPath: packages/zarf-registry/chart
-- name: zarf-registry
-description: |
- Updates the Zarf Registry to use the self-hosted registry image.
- Serves as the primary docker registry for the cluster.
-required: true
-charts:
- - name: docker-registry
-releaseName: zarf-docker-registry
-version: 1.0.0
-namespace: zarf
-valuesFiles:
- - packages/zarf-registry/registry-values.yaml
-localPath: packages/zarf-registry/chart
-manifests:
- - name: registry-connect
-namespace: zarf
-files:
- - packages/zarf-registry/connect.yaml
-- name: kep-1755-registry-annotation
-namespace: zarf
-files:
- - packages/zarf-registry/configmap.yaml
-images:
- - registry:2.8.1
-- name: zarf-agent
-description: |
- A Kubernetes mutating webhook to enable automated URL rewriting for container
- images and git repository references in Kubernetes manifests. This prevents
- the need to manually update URLs from their original sources to the Zarf-managed
- docker registry and git server.
-required: true
-actions:
- onCreate:
- before:
- - cmd: make init-package-local-agent AGENT_IMAGE_TAG="v0.25.0"
-manifests:
- - name: zarf-agent
-namespace: zarf
-files:
- - packages/zarf-agent/manifests/service.yaml
-- packages/zarf-agent/manifests/secret.yaml
-- packages/zarf-agent/manifests/deployment.yaml
-- packages/zarf-agent/manifests/webhook.yaml
-images:
- - ghcr.io/defenseunicorns/zarf/agent:v0.25.0
-- name: logging
-description: |
- Deploys the Promtail Grafana & Loki (PGL) stack.
- Aggregates logs from different containers and presents them in a web dashboard.
- Recommended if no other logging stack is deployed in the cluster.
-charts:
- - name: loki-stack
-releaseName: zarf-loki-stack
-url: https://grafana.github.io/helm-charts
-version: 2.9.9
-namespace: zarf
-valuesFiles:
- - packages/logging-pgl/pgl-values.yaml
-manifests:
- - name: logging-connect
-namespace: zarf
-files:
- - packages/logging-pgl/connect.yaml
-images:
- - docker.io/grafana/promtail:2.7.2
-- grafana/grafana:8.3.5
-- grafana/loki:2.6.1
-- quay.io/kiwigrid/k8s-sidecar:1.19.2
-- name: git-server
-description: |
- Deploys Gitea to provide git repositories for Kubernetes configurations.
- Required for GitOps deployments if no other git server is available.
-actions:
- onDeploy:
- after:
- - maxTotalSeconds: 60
-maxRetries: 3
-cmd: ./zarf internal create-read-only-gitea-user
-charts:
- - name: gitea
-releaseName: zarf-gitea
-url: https://dl.gitea.io/charts
-version: 7.0.4
-namespace: zarf
-valuesFiles:
- - packages/gitea/gitea-values.yaml
-manifests:
- - name: git-connect
-namespace: zarf
-files:
- - packages/gitea/connect.yaml
-images:
- - gitea/gitea:1.19.3-rootless
-variables:
-- name: K3S_ARGS
-description: Arguments to pass to K3s
-default: --disable traefik
-- name: REGISTRY_EXISTING_PVC
-description: "Optional: Use an existing PVC for the registry instead of creating a new one. If this is set, the REGISTRY_PVC_SIZE variable will be ignored."
-- name: REGISTRY_PVC_SIZE
-description: The size of the persistent volume claim for the registry
-default: 20Gi
-- name: REGISTRY_CPU_REQ
-description: The CPU request for the registry
-default: 100m
-- name: REGISTRY_MEM_REQ
-description: The memory request for the registry
-default: 256Mi
-- name: REGISTRY_CPU_LIMIT
-description: The CPU limit for the registry
-default: "3"
-- name: REGISTRY_MEM_LIMIT
-description: The memory limit for the registry
-default: 2Gi
-- name: REGISTRY_HPA_MIN
-description: The minimum number of registry replicas
-default: "1"
-- name: REGISTRY_HPA_MAX
-description: The maximum number of registry replicas
-default: "5"
-- name: REGISTRY_HPA_ENABLE
-description: Enable the Horizontal Pod Autoscaler for the registry
-default: "true"
-- name: GIT_SERVER_EXISTING_PVC
-description: "Optional: Use an existing PVC for the git server instead of creating a new one. If this is set, the GIT_SERVER_PVC_SIZE variable will be ignored."
-- name: GIT_SERVER_PVC_SIZE
-description: The size of the persistent volume claim for git server
-default: 10Gi
-- name: GIT_SERVER_CPU_REQ
-description: The CPU request for git server
-default: 200m
-- name: GIT_SERVER_MEM_REQ
-description: The memory request for git server
-default: 512Mi
-- name: GIT_SERVER_CPU_LIMIT
-description: The CPU limit for git server
-default: "3"
-- name: GIT_SERVER_MEM_LIMIT
-description: The memory limit for git server
-default: 2Gi
-constants:
-- name: AGENT_IMAGE
-value: defenseunicorns/zarf/agent
-- name: AGENT_IMAGE_TAG
-value: v0.25.0
-- name: REGISTRY_IMAGE
-value: registry
-- name: REGISTRY_IMAGE_TAG
-value: 2.8.1
-This package has 9 artifacts with software bill-of-materials (SBOM) included. You can view them now
-in the zarf-sbom folder in this directory or to go directly to one, open this in your browser:
-/Users/josimoore/Desktop/projects/zarf/zarf-sbom/sbom-viewer-docker.io_grafana_promtail_2.7.2.html
-
-* This directory will be removed after package deployment.
-
-? Deploy this Zarf package? (y/N) Yes
-
-───────────────────────────────────────────────────────────────────────────────────────
-name: k3s
-only:
- localOS: linux
-cluster:
-architecture: amd64
-actions:
-onDeploy:
-defaults:
-maxRetries: 5
-before:
-- maxRetries: 0
-cmd: ./zarf internal is-valid-hostname
-- cmd: "[ -e /etc/redhat-release ] && systemctl disable firewalld --now || echo ''"
-after:
-- cmd: systemctl daemon-reload
-- cmd: systemctl enable k3s
-- cmd: systemctl start k3s
-files:
-- source: packages/distros/k3s/common/zarf-clean-k3s.sh
-target: /opt/zarf/zarf-clean-k3s.sh
-executable: true
-- source: packages/distros/k3s/common/k3s.service
-target: /etc/systemd/system/k3s.service
-symlinks:
-- /etc/systemd/system/multi-user.target.wants/k3s.service
-- source: https://github.com/k3s-io/k3s/releases/download/v1.24.1+k3s1/k3s
-shasum: ca398d82fee8f9f52b05fb184582054be3c0285a1b9e8fb5c7b9a91448a
-target: /usr/sbin/k3s
-executable: true
-symlinks:
-- /usr/sbin/kubctl
-- /usr/sbin/ctr
-- /usr/sbin/crictl
-- source: https://github.com/k3s-io/k3s/releases/download/v1.24.1+k3s1/k3s-airgap-images-amd64.tar.zst
-shasum: 6736bf9fa4d5754d60b0508bafb2f888a70cb99a203a3a1617a919ca4ee74034
-target: /var/lib/rancher/k3s/agent/images/k3s.tar.zst
-
-*** REQUIRES ROOT *** Install K3s, certified Kubernetes distribution built for IoT & Edge computing
-K3s provides the cluster need for Zarf running in Appliance Mode as well as can host a low-resource
-Gitops Service if not using an existing Kubernetes platform.
-
-? Deploy the k3s component? (y/N) No
-
-───────────────────────────────────────────────────────────────────────────────────────
-
-name: logging
-charts:
-- name: loki-stack
- releaseName: zarf-loki-stack
- url: https://grafana.github.io/helm-charts
- version: 2.9.9
- namespace: zarf
- valuesFiles:
- - packages/logging-pgl/pgl-values.yaml
-manifests:
-- name: logging-connect
- namespace: zarf
- files:
- - packages/logging-pgl/connect.yaml
-images:
-- docker.io/grafana/promtail:2.7.2
-- grafana/grafana:8.3.5
-- grafana/loki:2.6.1
-- quay.io/kiwigrid/k8s-sidecar:1.19.2
-
-Deploys the Promtail Grafana & Loki (PGL) stack. Aggregates logs from different containers and
-presents them in a web dashboard. Recommended if no other logging stack is deployed in the cluster.
-
-? Deploy the logging component? (y/N) No
-
-───────────────────────────────────────────────────────────────────────────────────────
-
-name: git-server
-actions:
- onDeploy:
- after:
- - maxTotalSeconds: 60
- maxRetries: 3
- cmd: ./zarf internal create-read-only-gitea-user
-charts:
-- name: gitea
- releaseName: zarf-gitea
- url: https://d1.gitea.io/charts
- version: 7.0.4
- namespace: zarf
- valuesFiles:
- - packages/gitea/gitea-values.yaml
-manifests:
-- name: git-connect
- namespace: zarf
- files:
- - packages/gitea/connect.yaml
-images:
-- gitea/gitea:1.19.3-rootless
-
-Deploys Gitea to provide git repositories for Kubernetes configurations. Required for GitOps
-deployments if no other git server is available.
-? Deploy the git-server component? (y/N) No
-
-
-
- 📦 ZARF-INJECTOR COMPONENT
-
-
-
-
- • Copying 1 files
- • Copying 1 files
- • Gathering cluster information
- • Gathering cluster information
- • Attempting to bootstrap the seed image into the cluster
- • Attempting to bootstrap the seed image into the cluster
-
-
-
- 📦 ZARF-SEED-REGISTRY COMPONENT
-
-
-
-
- • Loading the Zarf State from the Kubernetes cluster
- • Loading the Zarf State from the Kubernetes cluster
- • Processing helm chart docker-registry:1.0.0 from Zarf-generated helm chart
- • Processing helm chart docker-registry:1.0.0 from Zarf-generated helm chart
-
-
-
- 📦 ZARF-REGISTRY COMPONENT
-
-
-
-
- • Opening tunnel 62270 -> 5000 for svc/zarf-docker-registry in namespace zarf
- • Creating port forwarding tunnel at http://127.0.0.1:62270/v2/_catalog
- • Storing images in the zarf registry
- • Storing images in the zarf registry
- • Processing helm chart docker-registry:1.0.0 from Zarf-generated helm chart
- • Processing helm chart docker-registry:1.0.0 from Zarf-generated helm chart
- • Starting helm chart generation registry-connect
- • Starting helm chart generation registry-connect
- • Processing helm chart raw-init-zarf-registry-registry-connect:0.1.1680014363 from Zarf-generated
- helm chart
- • Processing helm chart raw-init-zarf-registry-registry-connect:0.1.1680014363 from Zarf-generated
- helm chart
- • Starting helm chart generation kep-1755-registry-annotation
- • Starting helm chart generation kep-1755-registry-annotation
- • Processing helm chart raw-init-zarf-registry-kep-1755-registry-annotation:0.1.1680014363 from
- Zarf-generated helm chart
- • Processing helm chart raw-init-zarf-registry-kep-1755-registry-annotation:0.1.1680014363 from
- Zarf-generated helm chart
-
-
-
- 📦 ZARF-AGENT COMPONENT
-
-
-
-
- • Opening tunnel 62284 -> 5000 for svc/zarf-docker-registry in namespace zarf
- • Creating port forwarding tunnel at http://127.0.0.1:62284/v2/_catalog
- • Storing images in the zarf registry
- • Storing images in the zarf registry
- • Starting helm chart generation zarf-agent
- • Starting helm chart generation zarf-agent
- • Processing helm chart raw-init-zarf-agent-zarf-agent:0.1.1680014363 from Zarf-generated helm chart
- • Processing helm chart raw-init-zarf-agent-zarf-agent:0.1.1680014363 from Zarf-generated helm chart
- ✔ Zarf deployment complete
-
-
- Application | Username | Password | Connect
- Registry | zarf-push | DdarrzTahz6oclGTUAUOfbsY | zarf connect registry
-
-
-
-
-
diff --git a/docs-website/static/img/GithubIcon.svg b/docs-website/static/img/GithubIcon.svg
deleted file mode 100644
index 12c0875d01..0000000000
--- a/docs-website/static/img/GithubIcon.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
\ No newline at end of file
diff --git a/docs-website/static/img/SlackIcon.svg b/docs-website/static/img/SlackIcon.svg
deleted file mode 100644
index 97d36b4570..0000000000
--- a/docs-website/static/img/SlackIcon.svg
+++ /dev/null
@@ -1,19 +0,0 @@
-
\ No newline at end of file
diff --git a/docs-website/static/img/favicon.svg b/docs-website/static/img/favicon.svg
deleted file mode 100644
index 2fc8794d16..0000000000
--- a/docs-website/static/img/favicon.svg
+++ /dev/null
@@ -1,97 +0,0 @@
-
diff --git a/docs-website/static/img/zarf-logo-dark-old.svg b/docs-website/static/img/zarf-logo-dark-old.svg
deleted file mode 100644
index 507e232348..0000000000
--- a/docs-website/static/img/zarf-logo-dark-old.svg
+++ /dev/null
@@ -1,223 +0,0 @@
-
\ No newline at end of file
diff --git a/docs-website/static/img/zarf-logo-dark.svg b/docs-website/static/img/zarf-logo-dark.svg
deleted file mode 100644
index a4ec0090ac..0000000000
--- a/docs-website/static/img/zarf-logo-dark.svg
+++ /dev/null
@@ -1,232 +0,0 @@
-
\ No newline at end of file
diff --git a/docs-website/static/img/zarf-logo-light.svg b/docs-website/static/img/zarf-logo-light.svg
deleted file mode 100644
index e31203b88a..0000000000
--- a/docs-website/static/img/zarf-logo-light.svg
+++ /dev/null
@@ -1,223 +0,0 @@
-
\ No newline at end of file
diff --git a/docs-website/static/img/zarf-logo.png b/docs-website/static/img/zarf-logo.png
deleted file mode 100644
index 6af7054fca..0000000000
Binary files a/docs-website/static/img/zarf-logo.png and /dev/null differ
diff --git a/docs/.images/Zarf Files - 3 Bubbles.svg b/docs/.images/Zarf Files - 3 Bubbles.svg
deleted file mode 100644
index 2b2cf8536e..0000000000
--- a/docs/.images/Zarf Files - 3 Bubbles.svg
+++ /dev/null
@@ -1,215 +0,0 @@
-
diff --git a/docs/.images/Zarf Left Underwater - Behind rock.svg b/docs/.images/Zarf Left Underwater - Behind rock.svg
deleted file mode 100644
index 159ca1cd96..0000000000
--- a/docs/.images/Zarf Left Underwater - Behind rock.svg
+++ /dev/null
@@ -1,732 +0,0 @@
-
diff --git a/docs/.images/architecture.drawio.svg b/docs/.images/architecture.drawio.svg
deleted file mode 100644
index a5500107da..0000000000
--- a/docs/.images/architecture.drawio.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/docs/.images/dashboard/Web_UI__Launch_w__Cluster_AdobeExpress.gif b/docs/.images/dashboard/Web_UI__Launch_w__Cluster_AdobeExpress.gif
deleted file mode 100644
index 5300580c80..0000000000
Binary files a/docs/.images/dashboard/Web_UI__Launch_w__Cluster_AdobeExpress.gif and /dev/null differ
diff --git a/docs/.images/favicon.svg b/docs/.images/favicon.svg
deleted file mode 100644
index 2fc8794d16..0000000000
--- a/docs/.images/favicon.svg
+++ /dev/null
@@ -1,97 +0,0 @@
-
diff --git a/docs/.images/tutorials/adoption_thumbnail.png b/docs/.images/tutorials/adoption_thumbnail.png
deleted file mode 100644
index 9a1a38a87e..0000000000
Binary files a/docs/.images/tutorials/adoption_thumbnail.png and /dev/null differ
diff --git a/docs/.images/tutorials/differential_package_thumbnail.png b/docs/.images/tutorials/differential_package_thumbnail.png
deleted file mode 100644
index d62413d372..0000000000
Binary files a/docs/.images/tutorials/differential_package_thumbnail.png and /dev/null differ
diff --git a/docs/.images/tutorials/logging_thumbnail.png b/docs/.images/tutorials/logging_thumbnail.png
deleted file mode 100644
index d137c900cc..0000000000
Binary files a/docs/.images/tutorials/logging_thumbnail.png and /dev/null differ
diff --git a/docs/.images/tutorials/package_deploy_thumbnail.jpg b/docs/.images/tutorials/package_deploy_thumbnail.jpg
deleted file mode 100644
index d1a85088ec..0000000000
Binary files a/docs/.images/tutorials/package_deploy_thumbnail.jpg and /dev/null differ
diff --git a/docs/.images/tutorials/publish_and_deploy_thumbnail.png b/docs/.images/tutorials/publish_and_deploy_thumbnail.png
deleted file mode 100644
index 6de909c8ba..0000000000
Binary files a/docs/.images/tutorials/publish_and_deploy_thumbnail.png and /dev/null differ
diff --git a/docs/.images/what-is-zarf/appliance-mode.png b/docs/.images/what-is-zarf/appliance-mode.png
deleted file mode 100644
index ec93133ad6..0000000000
Binary files a/docs/.images/what-is-zarf/appliance-mode.png and /dev/null differ
diff --git a/docs/.images/what-is-zarf/build-the-package.png b/docs/.images/what-is-zarf/build-the-package.png
deleted file mode 100644
index 31edb1aa03..0000000000
Binary files a/docs/.images/what-is-zarf/build-the-package.png and /dev/null differ
diff --git a/docs/.images/what-is-zarf/how-to-use-it.png b/docs/.images/what-is-zarf/how-to-use-it.png
deleted file mode 100644
index 0e81561b56..0000000000
Binary files a/docs/.images/what-is-zarf/how-to-use-it.png and /dev/null differ
diff --git a/docs/.images/what-is-zarf/ship-the-package.png b/docs/.images/what-is-zarf/ship-the-package.png
deleted file mode 100644
index 8627c97f63..0000000000
Binary files a/docs/.images/what-is-zarf/ship-the-package.png and /dev/null differ
diff --git a/docs/.images/what-is-zarf/utility-mode.png b/docs/.images/what-is-zarf/utility-mode.png
deleted file mode 100644
index cb43b08acc..0000000000
Binary files a/docs/.images/what-is-zarf/utility-mode.png and /dev/null differ
diff --git a/docs/0-zarf-overview.md b/docs/0-zarf-overview.md
deleted file mode 100644
index e89945d9d4..0000000000
--- a/docs/0-zarf-overview.md
+++ /dev/null
@@ -1,245 +0,0 @@
----
-sidebar_position: 0
----
-
-import TabItem from "@theme/TabItem";
-import Tabs from "@theme/Tabs";
-
-# Overview
-
-
-
-## What is Zarf?
-
-Zarf was created to _**support the declarative creation & distribution of software "packages" into remote/constrained/independent environments**_.
-
-> "Zarf is a tool to help deploy modern stacks into air-gapped environments; it's all about moving the bits." — Jeff
-
-Zarf is a free and open-source tool that simplifies the setup and deployment of applications and resources onto air-gapped or disconnected environments. Zarf equips you with the ability to quickly and securely deploy modern software onto complex systems without relying on internet connectivity.
-
-It also simplifies the installation, updating, and maintenance of DevSecOps capabilities like Kubernetes clusters, logging, and SBOM compliance out of the box. Most importantly, Zarf keeps applications and systems running even when they are disconnected.
-
-:::note
-
-Check out our [glossary](1-getting-started/0-understand-the-basics.md) for an explanation of common terms used in the project.
-
-:::
-
-## How Zarf Works
-
-Zarf simplifies and standardizes the delivery of complex software deployments. This gives users the ability to reduce tens/hundreds of individual software updates, movements, and manual installations to a few simple terminal commands. This tool equips users with the ability to pull, package, and install all the resources their applications or clusters need to run without being connected to the internet. It can also deploy any necessary resources needed to stand up infrastructure tools (such as Terraform).
-
-
-
-A typical Zarf deployment is made up of three parts:
-
-1. The `zarf` binary:
- - A statically compiled Go binary that can be run on any machine, server, or operating system with or without connectivity.
- - Creates packages containing numerous software types/updates into a single distributable package (while on an internet-accessible network).
- - Declaratively deploys package contents "into place" for use on production systems (while on an internet-isolated network).
-2. A Zarf init package:
- - A compressed tarball package that contains the configuration needed to instantiate an environment without connectivity.
- - Automatically seeds your cluster with a container registry.
- - Provides additional capabilities such as logging, git server, and K8s cluster.
-3. A Zarf Package:
- - A compressed tarball package that contains all of the files, manifests, source repositories, and images needed to deploy your infrastructure, application, and resources in a disconnected environment.
-
-:::note
-
-For more technical information on how Zarf works and to view the Zarf architecture, visit our [Nerd Notes page](./12-contribute-to-zarf/3-nerd-notes.md).
-
-:::
-
-## Target Use Cases
-
-- Make the delivery of software "across the air gap" an open-source "solved problem".
-- Make it trivial to deploy and run Kubernetes apps "at the Edge".
-- Make it easy to support GitOps-based K8s cluster updates in isolated environments.
-- Make it possible to support GitOps-based K8s cluster updates in internet-connected-but-independent environments (think: dependency caching per availability zone, etc).
-
-## What can be Packaged?
-
-Given Zarf's being a "K8s cluster to serve _other_ K8s clusters", the following types of software can be rolled into a Zarf Package:
-
-- Container images: to serve images for the Zarf and downstream clusters to run containers from.
-- Repositories: to serve as the git-based "source of truth" for downstream "GitOps"ed K8s clusters to watch.
-- Pre-compiled binaries: to provide the software necessary to start and support the Zarf cluster.
-- [Component actions](3-create-a-zarf-package/7-component-actions.md): to support scripts and commands that run at various stages of the Zarf [package create lifecycle](./3-create-a-zarf-package/5-package-create-lifecycle.md), and [package deploy lifecycle](./4-deploy-a-zarf-package/1-package-deploy-lifecycle.md).
-- Helm charts, kustomizations, and other K8s manifests: to apply in a Kubernetes cluster.
-- [Data injections](../examples/kiwix/README.md): to declaratively inject data into running containers in a Kubernetes cluster.
-
-## How To Use Zarf
-
-Zarf is intended for use in a software deployment process that looks similar to this:
-
-
-
-### (0) Connect to the Internet
-
-Zarf doesn't build software—it helps you distribute software that already exists.
-
-Zarf can pull from various places like Docker Hub, Iron Bank, GitHub, and local filesystems. In order to do this, you must ensure that Zarf has a clear path and appropriate access credentials. Be sure you know what you want to pack and how to access it before you begin using Zarf.
-
-### (1) Create a Package
-
-This part of the process requires access to the internet. The `zarf` binary is presented with a `zarf.yaml`, it then begins downloading, packing, and compressing the software that you requested. It then outputs a single, ready-to-move distributable called "a package".
-
-For additional information, see the [Creating a package](./5-zarf-tutorials/0-creating-a-zarf-package.md) section.
-
-### (2) Ship the Package to the System Location
-
-Zarf enables secure software delivery for various environments, such as remote, constrained, independent, and air-gapped systems. Considering there are various target environments with their own appropriate transferring mechanisms, Zarf does not determine _how_ packages are moved so long as they can arrive in your downstream environment.
-
-### (3) Deploy the Package
-
-Once your package has arrived, you will need to:
-
-1. Install the binary onto the system.
-2. Run the zarf init package.
-3. Deploy the package to your cluster.
-
-## Cluster Configuration Options
-
-Zarf allows the package to either deploy to an existing K8s cluster or a local K3s cluster. This is a configuration that is available on deployment in the init package.
-
-### Appliance Cluster Mode
-
-
-
-In the simplest usage scenario, your package consists of a single application (plus dependencies) and you configure the Zarf cluster to serve your application directly to end users. This mode of operation is called "Appliance Mode" and it is intended for use in environments where you want to run K8s-native tooling but need to keep a small footprint (i.e. single-purpose/constrained/"Edge" environments).
-
-### Utility Cluster Mode
-
-
-
-In the more complex use case, your package consists of updates for many apps/systems and you configure the Zarf cluster to propagate updates to downstream systems rather than to serve users directly. This mode of operation is called "Utility Mode" and it is intended for use in places where you want to run independent, full-service production environments (ex. your own Big Bang cluster) but you need help tracking, caching and disseminating system/dependency updates.
-
-## Why Use Zarf?
-
-- 💸 **Free and Open-Source.** Zarf will always be free to use and maintained by the open-source community.
-- ⭐️ **Zero Dependencies.** As a statically compiled binary, the Zarf CLI has zero dependencies to run on any machine.
-- 🔓 **No Vendor Lock.** There is no proprietary software that locks you into using Zarf. If you want to remove it, you still can use your helm charts to deploy your software manually.
-- 💻 **OS Agnostic.** Zarf supports numerous operating systems. A full matrix of supported OSes, architectures and featuresets is coming soon.
-- 📦 **Highly Distributable.** Integrate and deploy software from multiple secure development environments including edge, embedded systems, secure cloud, data centers, and even local environments.
-- 🚀 **Develop Connected, Deploy Disconnected.** Teams can build and configure individual applications or entire DevSecOps environments while connected to the internet. Once created, they can be packaged and shipped to a disconnected environment to be deployed.
-- 💿 **Single File Deployments.** Zarf allows you to package the parts of the internet your app needs into a single compressed file to be installed without connectivity.
-- ♻️ **Declarative Deployments.** Zarf packages define the precise state for your application enabling it to be deployed the same way every time.
-- 🦖 **Inherit Legacy Code.** Zarf packages can wrap legacy code and projects - allowing them to be deployed to modern DevSecOps environments.
-
-## Features
-
-
-
-### 📦 Out of the Box Features
-
-- Automate Kubernetes deployments in disconnected environments
-- Automate [Software Bill of Materials (SBOM)](./3-create-a-zarf-package/6-package-sboms.md) generation
-- Build and [publish packages as OCI image artifacts](./5-zarf-tutorials/7-publish-and-deploy.md)
-- Provide a [web dashboard](./4-deploy-a-zarf-package/4-view-sboms.md) for viewing SBOM output
-- Create and verify package signatures with [cosign](https://github.com/sigstore/cosign)
-- [Publish](./2-the-zarf-cli/100-cli-commands/zarf_package_publish.md), [pull](./2-the-zarf-cli/100-cli-commands/zarf_package_pull.md), and [deploy](./2-the-zarf-cli/100-cli-commands/zarf_package_deploy.md) packages from an [OCI registry](https://opencontainers.org/)
-- Powerful component lifecycle [actions](./3-create-a-zarf-package/7-component-actions.md)
-- Deploy a new cluster while fully disconnected with [K3s](https://k3s.io/) or into any existing cluster using a [kube config](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/)
-- Builtin logging stack with [Loki](https://grafana.com/oss/loki/)
-- Builtin Git server with [Gitea](https://gitea.com/)
-- Builtin Docker registry
-- Builtin [K9s Dashboard](https://k9scli.io/) for managing a cluster from the terminal
-- [Mutating Webhook](adr/0005-mutating-webhook.md) to automatically update Kubernetes pod's image path and pull secrets as well as [Flux Git Repository](https://fluxcd.io/docs/components/source/gitrepositories/) URLs and secret references
-- Builtin [command to find images](./2-the-zarf-cli/100-cli-commands/zarf_prepare_find-images.md) and resources from a Helm chart
-- Tunneling capability to [connect to Kuberenetes resources](./2-the-zarf-cli/100-cli-commands/zarf_connect.md) without network routing, DNS, TLS or Ingress configuration required
-
-### 🛠️ Configurable Features
-
-- Customizable [variables and package templates](examples/variables/README.md) with defaults and user prompting
-- [Composable packages](./3-create-a-zarf-package/2-zarf-components.md#composing-package-components) to include multiple sub-packages/components
-- Component-level OS/architecture filtering
-
-## Quick Start
-
-1. 💻 Select your system's OS below.
-2. ❗ Ensure you have the pre-requisite applications running.
-3. `$` Enter the commands into your terminal.
-
-
-
-
-:::info
-
-This quick start requires you to already have:
-
-- [Homebrew](https://brew.sh/) package manager installed on your machine.
-- [Docker](https://www.docker.com/) installed and running on your machine.
-
-For more install options please visit our [Getting Started page](./1-getting-started/index.md).
-
-:::
-
-## Linux Commands
-
-```bash
-# To install Zarf
-brew tap defenseunicorns/tap && brew install zarf
-
-# Next, you will need a Kubernetes cluster. This example uses KIND.
-brew install kind && kind delete cluster && kind create cluster
-
-
-# Then, you will need to deploy the Zarf Init Package
-zarf init
-
-
-# You are ready to deploy any Zarf Package, try out our Retro Arcade!!
-zarf package deploy sget://defenseunicorns/zarf-hello-world:$(uname -m)
-```
-
-:::note
-
-Zarf has no prerequisites on Linux. However, for this example, we will use Docker and Kind.
-
-:::
-
-
-
-
-:::info
-
-This quick start requires you to already have:
-
-- [Homebrew](https://brew.sh/) package manager installed on your machine.
-- [Docker](https://www.docker.com/) installed and running on your machine.
-
-For more install options please visit our [Getting Started page](./1-getting-started/index.md).
-
-:::
-
-## MacOS Commands
-
-```bash
-# To install Zarf
-brew tap defenseunicorns/tap && brew install zarf
-
-# Next, you will need a Kubernetes cluster. This example uses KIND.
-brew install kind && kind delete cluster && kind create cluster
-
-
-# Then, you will need to deploy the Zarf Init Package
-zarf init
-
-
-# You are ready to deploy any Zarf Package, try out our Retro Arcade!!
-zarf package deploy sget://defenseunicorns/zarf-hello-world:$(uname -m)
-```
-
-
-
-
-## Windows Commands
-
-```text
-Coming soon!
-```
-
-
-
-
-Zarf is being actively developed by the community. For more information, see our [release notes](https://github.com/defenseunicorns/zarf/releases).
diff --git a/docs/1-getting-started/1-core-concepts.md b/docs/1-getting-started/1-core-concepts.md
deleted file mode 100644
index 9278dc0210..0000000000
--- a/docs/1-getting-started/1-core-concepts.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# Core Concepts
-
-Now, assuming you're familiar with Kubernetes, AirGap, and GitOps from [Understanding the Basics](../1-getting-started/0-understand-the-basics.md), we can get started on the core concepts of Zarf.
-
-## Zarf Concepts
-
-- [**Zarf Package**](../3-create-a-zarf-package/1-zarf-packages.md) - A binary file that contains the instructions and dependencies necessary to install an application on a system.
-- [**Zarf Component**](../3-create-a-zarf-package/2-zarf-components.md) - A set of defined functionality and resources that build up a package.
-- [**Zarf Init Package**](../3-create-a-zarf-package/3-zarf-init-package.md) - The initial package that lays the groundwork for other packages.
diff --git a/docs/1-getting-started/_category_.json b/docs/1-getting-started/_category_.json
deleted file mode 100644
index 534b41fbcd..0000000000
--- a/docs/1-getting-started/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "position": 1,
- "label": "Getting Started"
-}
diff --git a/docs/1-getting-started/index.md b/docs/1-getting-started/index.md
deleted file mode 100644
index 7bba3bfc9b..0000000000
--- a/docs/1-getting-started/index.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# Getting Started
-
-Welcome to the Zarf documentation! This section will list the various ways to install Zarf onto your machine. It will also demonstrate how to verify the installation. Choose the installation type that best suits your needs in accordance with your operating system. Let's get started!
-
-## Installing Zarf
-
-There are multiple ways to get the Zarf CLI onto your machine:
-
-- Install from [Homebrew](#installing-from-the-defense-unicorns-homebrew-tap).
-- [Download a prebuilt binary](#downloading-a-prebuilt-binary-from-our-github-releases).
-- [Build the CLI](#building-the-cli-from-scratch) from scratch.
-
-### Installing from the Defense Unicorns Homebrew Tap
-
-[Homebrew](https://brew.sh/) is an open-source software package manager that simplifies the installation of software on macOS and Linux. With Homebrew, installing Zarf is simple:
-
-```bash
-brew tap defenseunicorns/tap
-brew install zarf
-```
-
-The above command detects your OS and system architecture and installs the correct Zarf CLI binary for your machine. Once the above command is entered, the CLI should be installed on your `$PATH` and is ready for immediate use.
-
-### Downloading a Prebuilt Binary from our GitHub Releases
-
-All [Zarf releases](https://github.com/defenseunicorns/zarf/releases) on GitHub include prebuilt binaries that you can download and use. We offer a small range of combinations of OS and architecture for you to choose from.
-
-On most Linux distributions, you can install the binary onto your `$PATH` by simply moving the downloaded binary to the `/usr/local/bin` directory:
-
-```bash
-chmod +x ./path/to/downloaded/{ZARF_FILE}
-mv ./path/to/downloaded/{ZARF_FILE} /usr/local/bin/zarf
-```
-
-On Windows or macOS, you can install the binary onto your `$PATH` by moving the downloaded binary to the desired directory and modifying the `$PATH` environment variable to include that directory.
-
-### Building the CLI from Scratch
-
-If you want to build the CLI from scratch, you can do that too. Our local builds depend on [Go 1.19.x](https://golang.org/doc/install) and [Node 18.x](https://nodejs.org/en) and are built using [make](https://www.gnu.org/software/make/).
-
-:::note
-
-The `make build-cli` command builds a binary for each combination of OS and architecture. If you want to shorten the build time, you can use an alternative command to only build the binary you need:
-
-- `make build-cli-mac-intel`
-- `make build-cli-mac-apple`
-- `make build-cli-linux-amd`
-- `make build-cli-linux-arm`
-- `make build-cli-windows-amd`
-- `make build-cli-windows-arm`
-
-For additional information, see the [Building Your Own Zarf CLI](../2-the-zarf-cli/0-building-your-own-cli.md) page.
-
-:::
-
----
-
-## Verifying the Zarf Install
-
-Now that you have installed Zarf, let's verify that it is working. First, we'll check the version of Zarf that has been installed:
-
-```bash
-$ zarf version
-
-vX.X.X # X.X.X is replaced with the version number of your specific installation
-```
-
-If you are not seeing this then Zarf was not installed onto your `$PATH` correctly. [This $PATH guide](https://zwbetz.com/how-to-add-a-binary-to-your-path-on-macos-linux-windows/) should help with that.
-
----
-
-## Downloading the ['Init' Package](../3-create-a-zarf-package/3-zarf-init-package.md)
-
-The ['init' package](../3-create-a-zarf-package/3-zarf-init-package.md) is a special Zarf package that initializes a cluster with services that are used to store resources while in the air gap and is required for most ([but not all](../../examples/yolo/README.md)) Zarf deployments.
-
-You can get it for your version of Zarf by visiting the [Zarf releases](https://github.com/defenseunicorns/zarf/releases) page and downloading it into your working directory or into `~/.zarf-cache/zarf-init--vX.X.X.tar.zst`)
-
-If you are online on the machine with cluster access you can also run `zarf init` without the `--confirm` flag to be given the option to download the version of the init package for your Zarf version.
-
-:::note
-
-You can build your own custom 'init' package too if you'd like. For this you should check out the [Creating a Custom 'init' Package Tutorial](../5-zarf-tutorials/8-custom-init-packages.md).
-
-:::
-
----
-
-## Where to Next?
-
-Depending on how familiar you are with Kubernetes, DevOps, and Zarf, let's find what set of information would be most useful to you.
-
-- If you want to become more familiar with Zarf and it's features, see the [Tutorials](../5-zarf-tutorials/index.md) page.
-
-- More information about the Zarf CLI is available on the [Zarf CLI](../2-the-zarf-cli/index.md) page, or by browsing through the help descriptions of all the commands available through `zarf --help`.
-
-- More information about the packages that Zarf creates and deploys is available in the [Understanding Zarf Packages](../3-create-a-zarf-package/1-zarf-packages.md) page.
-
-- If you want to take a step back and better understand the problem Zarf is trying to solve, you can find more context on the [Understand the Basics](./0-understand-the-basics.md) and [Core Concepts](./1-core-concepts.md) pages.
diff --git a/docs/10-community.md b/docs/10-community.md
deleted file mode 100644
index 2f1e041891..0000000000
--- a/docs/10-community.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-sidebar_position: 10
----
-
-# Community
-
-:::caution Hard Hat Area
-This page is still being developed. More content will be added soon!
-:::
-
-- You can find us in the [Kubernetes Slack](https://kubernetes.slack.com) in the [#zarf](https://kubernetes.slack.com/archives/C03B6BJAUJ3) channel or the [#zarf-dev](https://kubernetes.slack.com/archives/C03BP9Z3CMA) channel.
-- The Zarf repository is hosted on [GitHub](https://github.com/defenseunicorns/zarf)
diff --git a/docs/11-support.md b/docs/11-support.md
deleted file mode 100644
index 972571814b..0000000000
--- a/docs/11-support.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-sidebar_position: 11
----
-
-# Support
-
-1. Make sure you've read the guides in:
- - [Zarf Overview](./0-zarf-overview.md)
- - [Understanding the Basics](1-getting-started/0-understand-the-basics.md)
- - [Getting Started](./1-getting-started/index.md)
-2. Look for an answer in the [Frequently Asked Questions](./8-faq.md).
-3. Ask a question in [the Zarf Slack Channel](https://kubernetes.slack.com/archives/C03B6BJAUJ3)
-4. [Read issues, report a bug, or request a new feature](https://github.com/defenseunicorns/zarf/issues)
diff --git a/docs/12-contribute-to-zarf/1-contributor-guide.md b/docs/12-contribute-to-zarf/1-contributor-guide.md
deleted file mode 100644
index 6698f739d6..0000000000
--- a/docs/12-contribute-to-zarf/1-contributor-guide.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Contributor Guide
-
-import Contributing from '../../CONTRIBUTING.md';
-
-
diff --git a/docs/12-contribute-to-zarf/_category_.json b/docs/12-contribute-to-zarf/_category_.json
deleted file mode 100644
index bcc0792616..0000000000
--- a/docs/12-contribute-to-zarf/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "position": 12,
- "label": "Contribute to Zarf"
-}
diff --git a/docs/2-the-zarf-cli/0-building-your-own-cli.md b/docs/2-the-zarf-cli/0-building-your-own-cli.md
deleted file mode 100644
index 84a978cc13..0000000000
--- a/docs/2-the-zarf-cli/0-building-your-own-cli.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# Building Your Own Zarf CLI
-
-To build the Zarf CLI from scratch, you'll need to have the following dependencies configured:
-
-1. The Zarf repository cloned down:
- - `git clone git@github.com:defenseunicorns/zarf.git`.
-2. Have Go 1.19.x installed on your PATH (instructions to [install Go](https://go.dev/doc/install)).
-3. Have NPM/Node 18.x installed on your PATH (instructions to [install NPM/Node](https://nodejs.org/en)).
-4. `make` utility installed on your PATH.
- - Instructions to install on macOS with [Homebrew](https://formulae.brew.sh/formula/make).
- - Instructions to install on Windows with [Chocolatey](https://community.chocolatey.org/packages/make), [Scoop](https://scoop.sh/#/apps?q=make&s=0&d=1&o=true&id=c43ff861c0f1713336e5304d85334a29ffb86317), or [MSYS2](https://packages.msys2.org/package/make).
-
-:::note
-
-If you are running `make` targets other than the `build-cli-*` targets described below, you may need more software installed. Inspect the `Makefile` at the root of the project to view the commands each target runs.
-
-:::
-
-
-If you don't want to build the CLI yourself, you can download a pre-compiled binary from the 'Assets' tab of our latest [releases](https://github.com/defenseunicorns/zarf/releases) on GitHub. The pre-compiled binary is available for both arm64 and amd64 machines.
-
-## Building the CLI
-
-Once you have the dependencies configured, you can build the Zarf CLI by running the following commands:
-
-```bash
-cd zarf # go into the root level of the zarf repository
-
-make build-cli # This will build binaries for linux, M1 Mac, and Intel Mac machines
- # This puts the built binaries in the ./build directory
-```
-
-:::note Optimization Note
-The `make build-cli` command builds a binary for each combination of OS and architecture, which may take some time. If you only need a binary for a specific configuration, you can use one of the following commands:
-
-- `make build-cli-mac-intel`
-- `make build-cli-mac-apple`
-- `make build-cli-linux-amd`
-- `make build-cli-linux-arm`
-- `make build-cli-windows-amd`
-- `make build-cli-windows-arm`
-:::
-
-#### The Technical Process
-
-[Under the hood](https://github.com/defenseunicorns/zarf/blob/473cbd5be203bd38254556cf3d55561e5be247dd/Makefile#L44), the `make` command executes a `go build .....` command with specific `CGO_ENABLED`, `GOOS`, and `GOARCH` flags depending on the distro and architecture of the system it is building for. The `CLI_VERSION` is passed in as a `ldflag` and is set the latest tag is in the repository as defined by `git describe --tags`.
diff --git a/docs/2-the-zarf-cli/1-cli-common-uses.md b/docs/2-the-zarf-cli/1-cli-common-uses.md
deleted file mode 100644
index 3d345a7cb0..0000000000
--- a/docs/2-the-zarf-cli/1-cli-common-uses.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# Common CLI Uses
-
-Zarf is a tool that optimizes the delivery of applications and capabilities into various environments, starting with air-gapped systems. This is achieved by using Zarf Packages, which are declarative files that the Zarf CLI uses to create, deploy, inspect, and remove applications and capabilities.
-
-## Building Packages: `zarf package create`
-
-To create a Zarf Package, you must execute the [`zarf package create`](./100-cli-commands/zarf_package_create.md) command, which generates a tarball archive that includes all the required dependencies and instructions to deploy the capabilities onto another machine. The `zarf package create` command uses a [`zarf.yaml` configuration file](../3-create-a-zarf-package/4-zarf-schema.md) that describes the package's components and performs all necessary actions, such as downloading container images and git repositories, to build the final package.
-
-Additional information on Zarf Packages can be found on the [Understanding Zarf Packages](../3-create-a-zarf-package/1-zarf-packages.md) page along with the [Creating a Zarf Package Tutorial](../5-zarf-tutorials/0-creating-a-zarf-package.md).
-
-## Initializing a Cluster: `zarf init`
-
-
-
-
-Before deploying a package to a cluster, you must initialize the cluster using the [`zarf init`](./100-cli-commands/zarf_init.md) command. This command creates and bootstraps an in-cluster container registry and provides the option to install optional tools and services necessary for future packages.
-
-For Windows and macOS environments, a cluster must already exist before initializing it using Zarf. You can use [Kind](https://kind.sigs.k8s.io/), [K3d](https://k3d.io/), [Docker Desktop](https://docs.docker.com/desktop/kubernetes/), or any other local or remote Kubernetes cluster.
-
-For Linux environments, Zarf itself can create and update a local K3s cluster, in addition to using any other local or remote Kubernetes cluster. The init package used by `zarf init` contains all the resources necessary to create a local [K3s](https://k3s.io/) cluster on your machine. This package may be located in your current working directory, the directory where the Zarf CLI binary is located, or downloaded from GitHub releases during command execution.
-
-Further details on the initialization process can be found on the [init package](../3-create-a-zarf-package/3-zarf-init-package.md) page along with the [Initializing a K8s Cluster Tutorial](../5-zarf-tutorials/1-initializing-a-k8s-cluster.md).
-
-:::note
-Depending on the permissions of your user, if you are installing K3s with `zarf init`, you may need to run it as a privileged user. This can be done by either:
-
-- Becoming a privileged user via the command `sudo su` and then running all the Zarf commands as you normally would.
-- Manually running all the Zarf commands as a privileged user via the command `sudo `.
-- Running the init command as a privileged user via `sudo zarf init` and then changing the permissions of the `~/.kube/config` file to be readable by the current user.
-:::
-
-## Deploying Packages: `zarf package deploy`
-
-
-
-The [`zarf package deploy`](./100-cli-commands/zarf_package_deploy.md) command deploys the packaged capabilities into the target environment. The package can be deployed on any cluster, even those without an external internet connection, since it includes all of its external resources. The external resources are pushed into the cluster to services Zarf either deployed itself or that it was told about on `init`, such as the init package's Gitea Git server or a pre-existing Harbor image registry. Then, the application is deployed according to the instructions in the zarf.yaml file, such as deploying a helm chart, deploying raw K8s manifests, or executing a series of shell commands. Generally, it is presumed that the `zarf init` command has already been executed on the target machine. However, there are a few exceptional cases where this assumption does not apply, such as [YOLO Mode](../8-faq.md#what-is-yolo-mode-and-why-would-i-use-it).
-
-Additional information about Zarf Packages can found on the [Understanding Zarf Packages](../3-create-a-zarf-package/1-zarf-packages.md) page along with the [Deploying a Local Zarf Package Tutorial](../5-zarf-tutorials//2-deploying-zarf-packages.md).
diff --git a/docs/2-the-zarf-cli/100-cli-commands/_category_.json b/docs/2-the-zarf-cli/100-cli-commands/_category_.json
deleted file mode 100644
index 9bdb104732..0000000000
--- a/docs/2-the-zarf-cli/100-cli-commands/_category_.json
+++ /dev/null
@@ -1 +0,0 @@
-{"label": "CLI Commands"}
diff --git a/docs/2-the-zarf-cli/100-cli-commands/zarf_package.md b/docs/2-the-zarf-cli/100-cli-commands/zarf_package.md
deleted file mode 100644
index d1d1d8367c..0000000000
--- a/docs/2-the-zarf-cli/100-cli-commands/zarf_package.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# zarf package
-
-
-Zarf package commands for creating, deploying, and inspecting packages
-
-## Options
-
-```
- -h, --help help for package
- --oci-concurrency int Number of concurrent layer operations to perform when interacting with a remote package. (default 3)
-```
-
-## Options inherited from parent commands
-
-```
- -a, --architecture string Architecture for OCI images and Zarf packages
- --insecure Allow access to insecure registries and disable other recommended security enforcements such as package checksum and signature validation. This flag should only be used if you have a specific reason and accept the reduced security posture.
- -l, --log-level string Log level when running Zarf. Valid options are: warn, info, debug, trace (default "info")
- --no-color Disable colors in output
- --no-log-file Disable log file creation
- --no-progress Disable fancy UI progress bars, spinners, logos, etc
- --tmpdir string Specify the temporary directory to use for intermediate files
- --zarf-cache string Specify the location of the Zarf cache directory (default "~/.zarf-cache")
-```
-
-## SEE ALSO
-
-* [zarf](zarf.md) - DevSecOps for Airgap
-* [zarf package create](zarf_package_create.md) - Creates a Zarf package from a given directory or the current directory
-* [zarf package deploy](zarf_package_deploy.md) - Deploys a Zarf package from a local file or URL (runs offline)
-* [zarf package inspect](zarf_package_inspect.md) - Displays the definition of a Zarf package (runs offline)
-* [zarf package list](zarf_package_list.md) - Lists out all of the packages that have been deployed to the cluster (runs offline)
-* [zarf package publish](zarf_package_publish.md) - Publishes a Zarf package to a remote registry
-* [zarf package pull](zarf_package_pull.md) - Pulls a Zarf package from a remote registry and save to the local file system
-* [zarf package remove](zarf_package_remove.md) - Removes a Zarf package that has been deployed already (runs offline)
diff --git a/docs/2-the-zarf-cli/100-cli-commands/zarf_prepare_find-images.md b/docs/2-the-zarf-cli/100-cli-commands/zarf_prepare_find-images.md
deleted file mode 100644
index 6e2a1d84e4..0000000000
--- a/docs/2-the-zarf-cli/100-cli-commands/zarf_prepare_find-images.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# zarf prepare find-images
-
-
-Evaluates components in a zarf file to identify images specified in their helm charts and manifests
-
-## Synopsis
-
-Evaluates components in a zarf file to identify images specified in their helm charts and manifests.
-
-Components that have repos that host helm charts can be processed by providing the --repo-chart-path.
-
-```
-zarf prepare find-images [ PACKAGE ] [flags]
-```
-
-## Options
-
-```
- -h, --help help for find-images
- --kube-version string Override the default helm template KubeVersion when performing a package chart template
- -p, --repo-chart-path string If git repos hold helm charts, often found with gitops tools, specify the chart path, e.g. "/" or "/chart"
- --set stringToString Specify package variables to set on the command line (KEY=value). Note, if using a config file, this will be set by [package.create.set]. (default [])
-```
-
-## Options inherited from parent commands
-
-```
- -a, --architecture string Architecture for OCI images and Zarf packages
- --insecure Allow access to insecure registries and disable other recommended security enforcements such as package checksum and signature validation. This flag should only be used if you have a specific reason and accept the reduced security posture.
- -l, --log-level string Log level when running Zarf. Valid options are: warn, info, debug, trace (default "info")
- --no-color Disable colors in output
- --no-log-file Disable log file creation
- --no-progress Disable fancy UI progress bars, spinners, logos, etc
- --tmpdir string Specify the temporary directory to use for intermediate files
- --zarf-cache string Specify the location of the Zarf cache directory (default "~/.zarf-cache")
-```
-
-## SEE ALSO
-
-* [zarf prepare](zarf_prepare.md) - Tools to help prepare assets for packaging
diff --git a/docs/2-the-zarf-cli/100-cli-commands/zarf_tools.md b/docs/2-the-zarf-cli/100-cli-commands/zarf_tools.md
deleted file mode 100644
index fb8193952c..0000000000
--- a/docs/2-the-zarf-cli/100-cli-commands/zarf_tools.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# zarf tools
-
-
-Collection of additional tools to make airgap easier
-
-## Options
-
-```
- -h, --help help for tools
-```
-
-## Options inherited from parent commands
-
-```
- -a, --architecture string Architecture for OCI images and Zarf packages
- --insecure Allow access to insecure registries and disable other recommended security enforcements such as package checksum and signature validation. This flag should only be used if you have a specific reason and accept the reduced security posture.
- -l, --log-level string Log level when running Zarf. Valid options are: warn, info, debug, trace (default "info")
- --no-color Disable colors in output
- --no-log-file Disable log file creation
- --no-progress Disable fancy UI progress bars, spinners, logos, etc
- --tmpdir string Specify the temporary directory to use for intermediate files
- --zarf-cache string Specify the location of the Zarf cache directory (default "~/.zarf-cache")
-```
-
-## SEE ALSO
-
-* [zarf](zarf.md) - DevSecOps for Airgap
-* [zarf tools archiver](zarf_tools_archiver.md) - Compresses/Decompresses generic archives, including Zarf packages
-* [zarf tools clear-cache](zarf_tools_clear-cache.md) - Clears the configured git and image cache directory
-* [zarf tools download-init](zarf_tools_download-init.md) - Downloads the init package for the current Zarf version into the specified directory
-* [zarf tools gen-key](zarf_tools_gen-key.md) - Generates a cosign public/private keypair that can be used to sign packages
-* [zarf tools gen-pki](zarf_tools_gen-pki.md) - Generates a Certificate Authority and PKI chain of trust for the given host
-* [zarf tools get-creds](zarf_tools_get-creds.md) - Displays a table of credentials for deployed Zarf services. Pass a service key to get a single credential
-* [zarf tools helm](zarf_tools_helm.md) - Subset of the Helm CLI included with Zarf to help manage helm charts.
-* [zarf tools kubectl](zarf_tools_kubectl.md) - Kubectl command. See https://kubernetes.io/docs/reference/kubectl/overview/ for more information.
-* [zarf tools monitor](zarf_tools_monitor.md) - Launches a terminal UI to monitor the connected cluster using K9s.
-* [zarf tools registry](zarf_tools_registry.md) - Tools for working with container registries using go-containertools
-* [zarf tools sbom](zarf_tools_sbom.md) - Generates a Software Bill of Materials (SBOM) for the given package
-* [zarf tools update-creds](zarf_tools_update-creds.md) - Updates the credentials for deployed Zarf services. Pass a service key to update credentials for a single service
-* [zarf tools wait-for](zarf_tools_wait-for.md) - Waits for a given Kubernetes resource to be ready
diff --git a/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_kubectl.md b/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_kubectl.md
deleted file mode 100644
index 72d2966e9e..0000000000
--- a/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_kubectl.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# zarf tools kubectl
-
-
-Kubectl command. See https://kubernetes.io/docs/reference/kubectl/overview/ for more information.
-
-```
-zarf tools kubectl [flags]
-```
-
-## Options
-
-```
- -h, --help help for kubectl
-```
-
-## SEE ALSO
-
-* [zarf tools](zarf_tools.md) - Collection of additional tools to make airgap easier
diff --git a/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_monitor.md b/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_monitor.md
deleted file mode 100644
index de97f8bae6..0000000000
--- a/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_monitor.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# zarf tools monitor
-
-
-Launches a terminal UI to monitor the connected cluster using K9s.
-
-```
-zarf tools monitor [flags]
-```
-
-## Options
-
-```
- -h, --help help for monitor
-```
-
-## SEE ALSO
-
-* [zarf tools](zarf_tools.md) - Collection of additional tools to make airgap easier
diff --git a/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_registry.md b/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_registry.md
deleted file mode 100644
index 9233af1a26..0000000000
--- a/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_registry.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# zarf tools registry
-
-
-Tools for working with container registries using go-containertools
-
-## Options
-
-```
- --allow-nondistributable-artifacts Allow pushing non-distributable (foreign) layers
- -h, --help help for registry
- --insecure Allow image references to be fetched without TLS
- --platform string Specifies the platform in the form os/arch[/variant][:osversion] (e.g. linux/amd64). (default "all")
- -v, --verbose Enable debug logs
-```
-
-## SEE ALSO
-
-* [zarf tools](zarf_tools.md) - Collection of additional tools to make airgap easier
-* [zarf tools registry catalog](zarf_tools_registry_catalog.md) - List the repos in a registry
-* [zarf tools registry copy](zarf_tools_registry_copy.md) - Efficiently copy a remote image from src to dst while retaining the digest value
-* [zarf tools registry delete](zarf_tools_registry_delete.md) - Delete an image reference from its registry
-* [zarf tools registry digest](zarf_tools_registry_digest.md) - Get the digest of an image
-* [zarf tools registry login](zarf_tools_registry_login.md) - Log in to a registry
-* [zarf tools registry ls](zarf_tools_registry_ls.md) - List the tags in a repo
-* [zarf tools registry prune](zarf_tools_registry_prune.md) - Prunes images from the registry that are not currently being used by any Zarf packages.
-* [zarf tools registry pull](zarf_tools_registry_pull.md) - Pull remote images by reference and store their contents locally
-* [zarf tools registry push](zarf_tools_registry_push.md) - Push local image contents to a remote registry
diff --git a/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_sbom.md b/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_sbom.md
deleted file mode 100644
index 53bac6587d..0000000000
--- a/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_sbom.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# zarf tools sbom
-
-
-Generates a Software Bill of Materials (SBOM) for the given package
-
-## Synopsis
-
-Generate a packaged-based Software Bill Of Materials (SBOM) from container images and filesystems
-
-```
-zarf tools sbom [flags]
-```
-
-## Options
-
-```
- --catalogers stringArray enable one or more package catalogers
- -c, --config string application config file
- --exclude stringArray exclude paths from being scanned using a glob expression
- --file string file to write the default report output to (default is STDOUT)
- -h, --help help for sbom
- --name string set the name of the target being analyzed (DEPRECATED: use: source-name)
- -o, --output stringArray report output format, options=[syft-json cyclonedx-xml cyclonedx-json github-json spdx-tag-value spdx-json syft-table syft-text template] (default [syft-table])
- --platform string an optional platform specifier for container image sources (e.g. 'linux/arm64', 'linux/arm64/v8', 'arm64', 'linux')
- -q, --quiet suppress all logging output
- -s, --scope string selection of layers to catalog, options=[Squashed AllLayers] (default "Squashed")
- --source-name string set the name of the target being analyzed
- --source-version string set the name of the target being analyzed
- -t, --template string specify the path to a Go template file
- -v, --verbose count increase verbosity (-v = info, -vv = debug)
-```
-
-## SEE ALSO
-
-* [zarf tools](zarf_tools.md) - Collection of additional tools to make airgap easier
-* [zarf tools sbom attest](zarf_tools_sbom_attest.md) - Generate an SBOM as an attestation for the given [SOURCE] container image
-* [zarf tools sbom convert](zarf_tools_sbom_convert.md) - Convert between SBOM formats
-* [zarf tools sbom login](zarf_tools_sbom_login.md) - Log in to a registry
-* [zarf tools sbom packages](zarf_tools_sbom_packages.md) - Generate a package SBOM
-* [zarf tools sbom version](zarf_tools_sbom_version.md) - show the version
diff --git a/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_sbom_convert.md b/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_sbom_convert.md
deleted file mode 100644
index 22a900d07f..0000000000
--- a/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_sbom_convert.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# zarf tools sbom convert
-
-
-Convert between SBOM formats
-
-## Synopsis
-
-[Experimental] Convert SBOM files to, and from, SPDX, CycloneDX and Syft's format. For more info about data loss between formats see https://github.com/anchore/syft#format-conversion-experimental
-
-```
-zarf tools sbom convert [SOURCE-SBOM] -o [FORMAT] [flags]
-```
-
-## Options
-
-```
- --catalogers stringArray enable one or more package catalogers
- --exclude stringArray exclude paths from being scanned using a glob expression
- --file string file to write the default report output to (default is STDOUT)
- -h, --help help for convert
- --name string set the name of the target being analyzed (DEPRECATED: use: source-name)
- -o, --output stringArray report output format, options=[syft-json cyclonedx-xml cyclonedx-json github-json spdx-tag-value spdx-json syft-table syft-text template] (default [syft-table])
- --platform string an optional platform specifier for container image sources (e.g. 'linux/arm64', 'linux/arm64/v8', 'arm64', 'linux')
- -s, --scope string selection of layers to catalog, options=[Squashed AllLayers] (default "Squashed")
- --source-name string set the name of the target being analyzed
- --source-version string set the name of the target being analyzed
- -t, --template string specify the path to a Go template file
-```
-
-## Options inherited from parent commands
-
-```
- -c, --config string application config file
- -q, --quiet suppress all logging output
- -v, --verbose count increase verbosity (-v = info, -vv = debug)
-```
-
-## SEE ALSO
-
-* [zarf tools sbom](zarf_tools_sbom.md) - Generates a Software Bill of Materials (SBOM) for the given package
diff --git a/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_sbom_login.md b/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_sbom_login.md
deleted file mode 100644
index 6be3b8a115..0000000000
--- a/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_sbom_login.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# zarf tools sbom login
-
-
-Log in to a registry
-
-```
-zarf tools sbom login [OPTIONS] [SERVER] [flags]
-```
-
-## Options
-
-```
- -h, --help help for login
- -p, --password string Password
- --password-stdin Take the password from stdin
- -u, --username string Username
-```
-
-## Options inherited from parent commands
-
-```
- -c, --config string application config file
- -q, --quiet suppress all logging output
- -v, --verbose count increase verbosity (-v = info, -vv = debug)
-```
-
-## SEE ALSO
-
-* [zarf tools sbom](zarf_tools_sbom.md) - Generates a Software Bill of Materials (SBOM) for the given package
diff --git a/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_sbom_packages.md b/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_sbom_packages.md
deleted file mode 100644
index 8f1b71a6f1..0000000000
--- a/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_sbom_packages.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# zarf tools sbom packages
-
-
-Generate a package SBOM
-
-## Synopsis
-
-Generate a packaged-based Software Bill Of Materials (SBOM) from container images and filesystems
-
-```
-zarf tools sbom packages [SOURCE] [flags]
-```
-
-## Options
-
-```
- --catalogers stringArray enable one or more package catalogers
- --exclude stringArray exclude paths from being scanned using a glob expression
- --file string file to write the default report output to (default is STDOUT)
- -h, --help help for packages
- --name string set the name of the target being analyzed (DEPRECATED: use: source-name)
- -o, --output stringArray report output format, options=[syft-json cyclonedx-xml cyclonedx-json github-json spdx-tag-value spdx-json syft-table syft-text template] (default [syft-table])
- --platform string an optional platform specifier for container image sources (e.g. 'linux/arm64', 'linux/arm64/v8', 'arm64', 'linux')
- -s, --scope string selection of layers to catalog, options=[Squashed AllLayers] (default "Squashed")
- --source-name string set the name of the target being analyzed
- --source-version string set the name of the target being analyzed
- -t, --template string specify the path to a Go template file
-```
-
-## Options inherited from parent commands
-
-```
- -c, --config string application config file
- -q, --quiet suppress all logging output
- -v, --verbose count increase verbosity (-v = info, -vv = debug)
-```
-
-## SEE ALSO
-
-* [zarf tools sbom](zarf_tools_sbom.md) - Generates a Software Bill of Materials (SBOM) for the given package
diff --git a/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_sbom_version.md b/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_sbom_version.md
deleted file mode 100644
index af134ce401..0000000000
--- a/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_sbom_version.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# zarf tools sbom version
-
-
-show the version
-
-```
-zarf tools sbom version [flags]
-```
-
-## Options
-
-```
- -h, --help help for version
- -o, --output string format to show version information (available=[text, json]) (default "text")
-```
-
-## Options inherited from parent commands
-
-```
- -c, --config string application config file
- -q, --quiet suppress all logging output
- -v, --verbose count increase verbosity (-v = info, -vv = debug)
-```
-
-## SEE ALSO
-
-* [zarf tools sbom](zarf_tools_sbom.md) - Generates a Software Bill of Materials (SBOM) for the given package
diff --git a/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_wait-for.md b/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_wait-for.md
deleted file mode 100644
index 717a0a9441..0000000000
--- a/docs/2-the-zarf-cli/100-cli-commands/zarf_tools_wait-for.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# zarf tools wait-for
-
-
-Waits for a given Kubernetes resource to be ready
-
-## Synopsis
-
-By default Zarf will wait for all Kubernetes resources to be ready before completion of a component during a deployment.
-This command can be used to wait for a Kubernetes resources to exist and be ready that may be created by a Gitops tool or a Kubernetes operator.
-You can also wait for arbitrary network endpoints using REST or TCP checks.
-
-
-
-```
-zarf tools wait-for { KIND | PROTOCOL } { NAME | SELECTOR | URI } { CONDITION | HTTP_CODE } [flags]
-```
-
-## Examples
-
-```
-
- # Wait for Kubernetes resources:
- zarf tools wait-for pod my-pod-name ready -n default # wait for pod my-pod-name in namespace default to be ready
- zarf tools wait-for p cool-pod-name ready -n cool # wait for pod (using p alias) cool-pod-name in namespace cool to be ready
- zarf tools wait-for deployment podinfo available -n podinfo # wait for deployment podinfo in namespace podinfo to be available
- zarf tools wait-for pod app=podinfo ready -n podinfo # wait for pod with label app=podinfo in namespace podinfo to be ready
- zarf tools wait-for svc zarf-docker-registry exists -n zarf # wait for service zarf-docker-registry in namespace zarf to exist
- zarf tools wait-for svc zarf-docker-registry -n zarf # same as above, except exists is the default condition
- zarf tools wait-for crd addons.k3s.cattle.io # wait for crd addons.k3s.cattle.io to exist
- zarf tools wait-for sts test-sts '{.status.availableReplicas}'=23 # wait for statefulset test-sts to have 23 available replicas
-
- # Wait for network endpoints:
- zarf tools wait-for http localhost:8080 200 # wait for a 200 response from http://localhost:8080
- zarf tools wait-for tcp localhost:8080 # wait for a connection to be established on localhost:8080
- zarf tools wait-for https 1.1.1.1 200 # wait for a 200 response from https://1.1.1.1
- zarf tools wait-for http google.com # wait for any 2xx response from http://google.com
- zarf tools wait-for http google.com success # wait for any 2xx response from http://google.com
-
-```
-
-## Options
-
-```
- -h, --help help for wait-for
- -n, --namespace string Specify the namespace of the resources to wait for.
- --timeout string Specify the timeout duration for the wait command. (default "5m")
-```
-
-## SEE ALSO
-
-* [zarf tools](zarf_tools.md) - Collection of additional tools to make airgap easier
diff --git a/docs/2-the-zarf-cli/_category_.json b/docs/2-the-zarf-cli/_category_.json
deleted file mode 100644
index ddc868463c..0000000000
--- a/docs/2-the-zarf-cli/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "position": 2,
- "label": "The Zarf CLI"
-}
diff --git a/docs/2-the-zarf-cli/index.md b/docs/2-the-zarf-cli/index.md
deleted file mode 100644
index f14c049c87..0000000000
--- a/docs/2-the-zarf-cli/index.md
+++ /dev/null
@@ -1,137 +0,0 @@
-import TabItem from "@theme/TabItem";
-import Tabs from "@theme/Tabs";
-
-# The Zarf CLI
-
-
-
-
-
-Zarf is a command line interface (CLI) tool that enables secure software delivery, with a particular focus on delivery to disconnected or complex environments. Zarf is a statically compiled Go binary, which means it can be utilized in any environment without requiring additional dependencies. The Zarf CLI project is an always free, open-source project available on [GitHub](https://github.com/defenseunicorns/zarf).
-
-## Getting the CLI
-
-
-
-
-You can get the Zarf CLI on your machine in a few different ways. You can use the Defense Unicorns Homebrew Tap, download a prebuilt binary from our GitHub releases, or build the CLI from scratch on your own. We provide instructions for all of these methods in the [Installing Zarf](../1-getting-started/index.md#installing-zarf) section of the Getting Started guide. If you're eager to start using Zarf and you already have Homebrew installed, you can quickly install it by copying and pasting the relevant commands for your operating system into your terminal:
-
-
-
-
-
-```bash
-brew tap defenseunicorns/tap
-brew install zarf
-```
-
-
-
-
-
-```bash
-brew tap defenseunicorns/tap
-brew install zarf
-```
-
-
-
-
-## Verify the CLI
-
-
-
-To begin, we'll test whether the CLI you have is functioning correctly. Running the CLI will generate a help message output, which will verify its functionality. Depending on the method you used to install the CLI, the tabs below will provide guidance on how to initiate it for the first time. Upon successful installation, you should see a comprehensive list of all command options, along with concise descriptions of their functions.
-
-Expected Help Output
-
-The output of the help command should look something like this (CLI flags will also appear at the end of the output):
-
-```text
-Zarf eliminates the complexity of air gap software delivery for Kubernetes clusters and cloud native workloads
-using a declarative packaging strategy to support DevSecOps in offline and semi-connected environments.
-
-Usage:
- zarf [COMMAND]|[ZARF-PACKAGE]|[ZARF-YAML] [flags]
- zarf [command]
-
-Available Commands:
- completion Generate the autocompletion script for the specified shell
- connect Access services or pods deployed in the cluster
- destroy Tear it all down, we'll miss you Zarf...
- help Help about any command
- init Prepares a k8s cluster for the deployment of Zarf packages
- package Zarf package commands for creating, deploying, and inspecting packages
- prepare Tools to help prepare assets for packaging
- tools Collection of additional tools to make airgap easier
- version Displays the version of the Zarf binary
-```
-
-
-
-
-
-
-
-```bash
-zarf --help
-```
-
-
-
-
-
-- If you're not sure where the file was downloaded, a good default place to look is `~/Downloads`.
-- While we only say `zarf` for this example command, the name of the binary is the name of the file you downloaded, which will likely have a different name.
-
-```bash
-chmod +x ~/Downloads/zarf # Make the binary executable
-~/Downloaded/zarf --help
-```
-
-
-
-
-
-- While we only say `zarf` for this example command, depending on your system, you might have to use a different name for the binary like `zarf-mac-intel` or `zarf-mac-apple`.
-
-```bash
-cd ./path/to/zarf/repo
-cd build
-./zarf --help
-```
-
-
-
-
-
-### Adding The CLI To Your Path
-
-:::note
-If you installed Zarf through Homebrew, Zarf will already be on your $PATH and you can skip this section.
-:::
-
-To simplify the usage of the Zarf CLI, you may add it to your $PATH. This configuration will allow you to use `zarf` without having to specify the binary's precise location and your computer will automatically find the binary for you to execute. The directories listed in your $PATH can be viewed by executing the command `echo $PATH` in your terminal. If you move your CLI to any of these directories, you will be able to execute it without the need to specify its full path. A typical $PATH you can use is: `mv ./path/to/cli/file/zarf /usr/local/bin/zarf`
-
-:::note
-Throughout the rest of the documentation, we will often be describing commands as `zarf {command}`. This assumes that the CLI is on your $PATH.
-:::
-
-## Introduction to Zarf Commands
-
-Zarf provides a suite of commands that streamline the creation, deployment, and maintenance of packages. Some of these commands contain additional sub-commands to further assist with package management. When executed with the "--help" flag, each command and sub-command provides a concise summary of its functionality. As you navigate deeper into the command hierarchy, the provided descriptions become increasingly detailed. We encourage you to explore the various commands available to gain a comprehensive understanding of Zarf's capabilities.
-
-As previously mentioned, Zarf was specifically designed to facilitate the deployment of applications in disconnected environments with ease. As a result, the most commonly utilized commands are `zarf init`, `zarf package create`, and `zarf package deploy`. Detailed information on all commands can be found in the [CLI Commands](./100-cli-commands/zarf.md) section. However, brief descriptions of the most frequently used commands are provided below. It's worth noting that these three commands are closely linked to what we refer to as a "Zarf Package". Additional information on Zarf Packages can be found in the following section: [Zarf Packages](../3-create-a-zarf-package/1-zarf-packages.md).
-
-### zarf init
-
-
-
-The `zarf init` command is utilized to configure a K8s cluster in preparation for the deployment of future Zarf Packages. The init command uses a specialized 'init-package' to operate. This package may be located in your current working directory, the directory where the Zarf CLI binary is located, or downloaded from GitHub releases during command execution. For further details regarding the init-package, please refer to the [init-package](../3-create-a-zarf-package/3-zarf-init-package.md) page.
-
-### zarf package deploy
-
-
-
-
-The `zarf package deploy` command is used to deploy an already built tar.zst package onto a machine, typically within a K8s cluster. Generally, it is presumed that the `zarf init` command has already been executed on the target machine. However, there are a few exceptional cases where this assumption does not apply.
diff --git a/docs/3-create-a-zarf-package/1-zarf-packages.md b/docs/3-create-a-zarf-package/1-zarf-packages.md
deleted file mode 100644
index 6595ac1bef..0000000000
--- a/docs/3-create-a-zarf-package/1-zarf-packages.md
+++ /dev/null
@@ -1,75 +0,0 @@
-# Understanding Zarf Packages
-
-Zarf offers a comprehensive solution for deploying system software or capabilities while fully disconnected. This is accomplished through the use of a single tarball archive, which includes all necessary components and is defined by a `zarf.yaml` file.
-
-Zarf Packages are created while you are connected to internet or intranet resources defined in a Zarf package configuration. This allows these resources to be pulled and stored within a package archive and be deployed on disconnected systems without requiring a connection to the outside world.
-
-The `zarf.yaml` file also defines declarative instructions for the deployment of package capabilities, which are automatically executed on package deployment and are represented in code. This ensures reproducibility across different systems without the need for manual configuration.
-
-Zarf Packages consist of functional blocks, known as components. Components can be optional, providing greater flexibility in package usage. Further details on components can be found on the [Zarf Components](./2-zarf-components.md) page.
-
-## Deploying onto Air-gapped Systems
-
-Zarf Packages are built to include all necessary dependencies within the package itself, making it particularly useful for deploying to air-gapped systems. This eliminates the need for outbound internet connectivity, making the packages easily distributable and executable on a variety of systems, including edge, embedded systems, secure cloud, data centers, or local environments.
-
-When deploying a package onto a cluster, the dependencies contained in each component are automatically pushed into a Docker registry and/or Git server created by or known to Zarf on the air-gapped system. This enables any later steps to utilize these dependencies as needed.
-
-## Types of Zarf Packages
-
-There are two types of Zarf Packages, the `ZarfInitConfig` and the `ZarfPackageConfig`, which are distinguished by the `kind:` field and specified in the `zarf.yaml` file.
-
-Throughout the rest of the documentation, we will refer to the `ZarfInitConfig` as an `init config` package or `init` package, and to the `ZarfPackageConfig` as simply a "package".
-
-### ZarfInitConfig
-
-The init package is used to initialize a cluster, making it ready for deployment of other Zarf Packages. It must be executed once on each cluster that you want to deploy another package onto, even if multiple clusters share the same host. For additional information on the init package, we provide detailed documentation on the Zarf ['init' package page](./3-zarf-init-package.md).
-
-If there is no running cluster, the init package can be used to create one. It has a deployable K3s cluster component that can be optionally deployed on your machine. Usually, an init package is the first Zarf Package to be deployed on a cluster as other packages often depend on the services installed or configured by the init package. If you want to install a K8s cluster with Zarf, but you don't want to use K3s as your cluster, you will need to create or find another Zarf Package that will stand up your cluster before you run the zarf init command.
-
-:::note
-
-To clarify, in most cases, the first Zarf Package you deploy onto a cluster should be the init package since other packages often depend on the services it installs onto your cluster. However, if you don't want to use the K3s distribution included in the init package or if you already have a preferred K8s distribution, you can deploy the distribution package first, followed by the init package, and then any other packages you want. This only applies if you don't have a K8s cluster yet.
-
-:::
-
-During the initialization process, Zarf will seed your cluster with a container registry to store images that other packages may require. Additionally, the init package has the option to deploy other features to your cluster, such as a Git server to manage your repositories or a PLG logging stack that allows you to monitor the applications running on your cluster.
-
-#### Using the init-package
-
-To initialize your cluster, you need to run the command `zarf init`. This command will search for a file with the specific naming convention: `zarf-init-{ARCHITECTURE}-{VERSION}.tar.zst`. The architecture must match that of the cluster you are deploying to. If you are deploying to a cluster with a different architecture, you will need to specify the name of the architecture you are deploying on with the `-a` flag. For example, if you are on an arm64 machine but are deploying on an amd64 machine, you will run `zarf init -a amd64`.
-
-Init packages can also be run with `zarf package deploy zarf-init-{ARCHITECTURE}-{VERSION}.tar.zst`.
-
-You do not need to create init configs by yourself unless you want to customize how your cluster is installed/configured. For example, if you want to use the init process to install a specifically configured K3s cluster onto your host machine, you can create a specific package to do that before running the init package.
-
-### ZarfPackageConfig
-
-`ZarfPackageConfig` refers to any package that is not an init package and is used to define specific capabilities that you want to deploy onto your initialized cluster.
-
-To deploy a Zarf Package, you can use the command `zarf package deploy`. This will prompt you to select from all of the files in your current directory that match the name `zarf-package-*.tar.zst`. Alternatively, if you already know which package you want to deploy, you can simply use the command `zarf package deploy {PACKAGE_NAME}`.
-
-During the deployment process, Zarf will leverage the infrastructure created during the 'init' process (such as the Docker registry and Git server) to push all the necessary images and repositories required for the package to operate.
-
-## Package Components
-
-Zarf Packages consist of smaller units known as 'components'. These components are further defined on the [Zarf Components page](./2-zarf-components.md), but to summarize, they represent the named capabilities that packages offer. For additional information regarding the `zarf.yaml` package structure, please refer to the [Zarf Package Schema](./4-zarf-schema.md) documentation.
-
-## Creating a Zarf Package
-
-The following list outlines the dependencies for creating a Zarf Package:
-
-- A copy of the Zarf CLI ([downloaded](https://github.com/defenseunicorns/zarf/releases) or [manually built](../2-the-zarf-cli/0-building-your-own-cli.md)).
-- A `zarf.yaml` file defined to build a package from.
-- (for testing) A local K8s cluster to work with ([K3s](https://k3s.io/)/[k3d](https://k3d.io/v5.4.1/)/[Kind](https://kind.sigs.k8s.io/docs/user/quick-start#installation)).
-- (for testing) A Zarf init package ([downloaded](https://github.com/defenseunicorns/zarf/releases) or [manually built](../2-the-zarf-cli/0-building-your-own-cli.md)).
-
-When executed, the `zarf package create` command locates the `zarf.yaml` file in the current directory and constructs the package from that file. The command utilizes internet or intranet resources to retrieve all the required assets and stores them in a temporary directory. After the required resources have been obtained, Zarf generates a tarball of the temporary directory and performs necessary cleanup actions. You can learn more about this flow on the [package create lifecycle](./5-package-create-lifecycle.md) page.
-
-The process of defining and creating a package is also elaborated on in detail in the [Creating a Zarf Package Tutorial](../5-zarf-tutorials/0-creating-a-zarf-package.md).
-
-### Creating Differential Packages
-If you already have a Zarf package and you want to create an updated package you would normally have to re-create the entire package from scratch, including things that might not have changed. Depending on your workflow, you may want to create a package that only contains the artifacts that have changed since the last time you built your package. This can be achieved by using the `--differential` flag while running the `zarf package create` command. You can use this flag to point to an already built package you have locally or to a package that has been previously [published](../5-zarf-tutorials/7-publish-and-deploy.md#publish-package) to a registry.
-
-## Inspecting a Created Package
-
-To inspect the contents of a Zarf Package, you can use the command `zarf package inspect` followed by the path to the package file. This will print out the contents of the `zarf.yaml` file that defines the package. For example, if your package is located at `./path/to/package.tar.zst`, you can run `zarf package inspect ./path/to/package.tar.zst` to view the contents of the `zarf.yaml` file.
diff --git a/docs/3-create-a-zarf-package/2-zarf-components.md b/docs/3-create-a-zarf-package/2-zarf-components.md
deleted file mode 100644
index bcc37a5b50..0000000000
--- a/docs/3-create-a-zarf-package/2-zarf-components.md
+++ /dev/null
@@ -1,209 +0,0 @@
-import Properties from '@site/src/components/SchemaItemProperties';
-import ExampleYAML from '@site/src/components/ExampleYAML';
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Package Components
-
-:::note
-
-The following examples are not all-inclusive and are only meant to showcase the different types of resources that can be defined in a component. For a full list of fields and their options, please see the [component schema documentation](4-zarf-schema.md#components).
-
-:::
-
-## Overview
-
-The actual capabilities that Zarf Packages provided are defined within named components.
-
-These components define what dependencies they have along with a declarative definition of how they should be deployed.
-
-Each package can have as many components as the package creator wants but a package isn't anything without at least one component.
-
-Fully defined examples of components can be found in the [examples section](/examples/) of the documentation.
-
-## Common Component Fields
-
-There are certain fields that will be common across all component definitions. These fields are:
-
-
-
-### Actions
-
-
-
-Component actions are explored in the [component actions documentation](7-component-actions.md).
-
-### Files
-
-
-
-Can be:
-
-- Relative paths to either a file or directory (from the `zarf.yaml` file)
-- A remote URL (http/https)
-- Verified using the `shasum` field for data integrity (optional and only available for files)
-
-#### File Examples
-
-
-
-
-
-
-
-
-
-
-### Helm Charts
-
-
-
-Can be when using the `localPath` key:
-
-- Relative paths to either a file or directory (from the `zarf.yaml` file)
-
-Can be when using the `url` key:
-
-- A remote URL (http/https) to a Git repository
-- A remote URL (oci://) to an OCI registry
-
-#### Chart Examples
-
-
-
-
-
-
-
-
-
-
-
-
-
-### Kubernetes Manifests
-
-
-
-Can be when using the `files` key:
-
-- Relative paths to a Kubernetes manifest file (from the `zarf.yaml` file)
-- Verified using the `url@shasum` syntax for data integrity (optional and only for remote URLs)
-
-Can be when using the `kustomizations` key:
-
-- Any valid Kustomize reference both local and [remote](https://github.com/kubernetes-sigs/kustomize/blob/master/examples/remoteBuild.md) (ie. anything you could do a `kustomize build` on)
-
-#### Manifest Examples
-
-
-
-
-
-
-
-
-
-
-:::info
-
-Kustomizations are handled a bit differently than normal manifests in that Zarf will automatically run `kustomize build` on them during `zarf package create`, thus rendering the Kustomization into a single manifest file. This prevents needing to grab any remote Kustomization resources during `zarf package deploy` but also means that any Zarf [`variables`](../../examples/variables/README.md#deploy-time-variables-and-constants) will only apply to the rendered manifest not the `kustomize build` process.
-
-:::
-
-
-
-
-
-### Container Images
-
-
-
-Images can either be discovered manually, or automatically by using [`zarf prepare find-images`](../2-the-zarf-cli/100-cli-commands/zarf_prepare_find-images.md).
-
-:::note
-
-`zarf prepare find-images` will find images for most standard manifests, kustomizations, and helm charts, however some images cannot be discovered this way as some upstream resources (like operators) may bury image definitions inside. For these images, `zarf prepare find-images` also offers support for the draft [Helm Improvement Proposal 15](https://github.com/helm/community/blob/main/hips/hip-0015.md) which allows chart creators to annotate any hidden images in their charts along with the [values conditions](https://github.com/helm/community/issues/277) that will cause those images to be used.
-
-:::
-
-#### Image Examples
-
-
-
-### Git Repositories
-
-The [`git-data`](/examples/git-data/) example provides an in-depth explanation of how to include Git repositories in your Zarf package to be pushed to the internal/external Git server.
-
-The [`podinfo-flux`](/examples/podinfo-flux/) example showcases a simple GitOps workflow using Flux and Zarf.
-
-
-
-#### Repository Examples
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-### Data Injections
-
-
-
-
-
-### Component Imports
-
-
-
-
-
-
-
-
-
-
-
-
-:::note
-
-During composition, Zarf will merge the imported component with the component that is importing it. This means that if the importing component defines a field that the imported component also defines, the value from the importing component will be used and override.
-
-This process will also merge `variables` and `constants` defined in the imported component's `zarf.yaml` with the importing component. The same override rules apply here as well.
-
-:::
-
-### Extensions
-
-
-
-
-
-## Deploying Components
-
-When deploying a Zarf package, components are deployed in the order they are defined in the `zarf.yaml`.
-
-The `zarf.yaml` configuration for each component also defines whether the component is 'required' or not. 'Required' components are always deployed without any additional user interaction while optional components are printed out in an interactive prompt asking the user if they wish to the deploy the component.
-
-If you already know which components you want to deploy, you can do so without getting prompted by passing the components as a comma-separated list to the `--components` flag during the deploy command.
-
-```bash
-# deploy all required components, prompting for optional components and variables
-$ zarf package deploy ./path/to/package.tar.zst
-
-# deploy all required components, ignoring optional components and variable prompts
-$ zarf package deploy ./path/to/package.tar.zst --confirm
-
-# deploy optional-component-1 and optional-component-2 components whether they are required or not
-$ zarf package deploy ./path/to/package.tar.zst --components=optional-component-1,optional-component-2
-```
diff --git a/docs/3-create-a-zarf-package/3-zarf-init-package.md b/docs/3-create-a-zarf-package/3-zarf-init-package.md
deleted file mode 100644
index fddcf2b412..0000000000
--- a/docs/3-create-a-zarf-package/3-zarf-init-package.md
+++ /dev/null
@@ -1,149 +0,0 @@
-# The Zarf 'init' Package
-
-The 'init' package is a special Zarf Package (denoted by `kind: ZarfInitConfig` in its `zarf.yaml`) that initializes a cluster with the requisite air gap services when running `zarf init`. This allows future Zarf Packages to store any required resources (i.e. container images and git repositories) so that they can be retrieved later.
-
-The default 'init' package that Zarf ships is defined in the `zarf.yaml` that lives at the [root of the Zarf repository](https://github.com/defenseunicorns/zarf/blob/main/zarf.yaml), and is constructed from composed components that provide a foundation for customization. If you would like to change the behavior of the 'init' package you can do so by modifying this `zarf.yaml` or any of the composed components that it references and running `zarf package create` at the root of the repository. You can learn more about creating a custom init package in the [Creating a Custom 'init' Package Tutorial](../5-zarf-tutorials/8-custom-init-packages.md).
-
-Upon deployment, the init package creates a `zarf` namespace within your K8s cluster and deploys pods, services, and secrets to that namespace based on the components selected for deployment.
-
-## Required Component
-
-Zarf's mutation capabilities require that the [`zarf-agent`](../8-faq.md#what-is-the-zarf-agent) component of the init package is deployed and active within the cluster, meaning that it cannot be disabled and is always running. This component intercepts requests to create resources and uses the `zarf-state` secret to mutate them to point to their air gap equivalents. It is automatically deployed whenever a `zarf init` command is executed.
-
-| Component | Description |
-| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
-| zarf-agent | A Kubernetes mutating webhook installed during `zarf init` that converts Pod specs and Flux GitRepository objects to match their air gap equivalents. |
-
-:::note
-
-The `zarf-agent` will mutate any resources it sees that have not already been patched and don't have the `zarf.dev/agent: ignore` label applied. This label is automatically applied to all namespaces that exist prior to `zarf init`, and will prevent the `zarf-agent` from mutating system resources. You can manually apply this label to any additional namespaces or resources after the fact to prevent the `zarf-agent` from acting upon them. See the FAQ entry to learn more about [what happens to resources that were deployed prior to `zarf init`](../8-faq.md#what-happens-to-resources-that-exist-in-the-cluster-before-zarf-init).
-
-:::
-
-## Core Components
-
-In addition to the required `zarf-agent` component, Zarf also offers components that provide additional functionality and can be enabled as needed based on your desired end-state.
-
-In most scenarios, Zarf will also deploy an internal registry using the three components described below. However, Zarf can be configured to use an already existing registry with the `--registry-*` flags when running `zarf init` (detailed information on all `zarf init` command flags can be found in the [zarf init CLI](../2-the-zarf-cli/100-cli-commands/zarf_init.md) section). This option skips the injector and seed process, and will not deploy a registry inside of the cluster. Instead, it uploads any images to the externally configured registry.
-
-| Components | Description |
-| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
-| zarf-injector | Adds a Rust binary to the working directory to be injected into the cluster during registry bootstrapping. |
-| zarf-seed-registry | Adds a temporary container registry so Zarf can bootstrap itself into the cluster. |
-| zarf-registry | Adds a long-lived container registry service—[docker registry](https://docs.docker.com/registry/)—into the cluster. |
-
-:::note
-
-Given the registry is a core part of any Kubernetes deployment you MUST either specify an external registry with the `--registry-*` flags or use the injected registry which is why it cannot be selected with `--components` like the components below.
-
-:::
-
-:::tip
-
-You can further customize how the registry behaves by setting variables such as `REGISTRY_PVC_SIZE` with a [config file](../2-the-zarf-cli/index.md#using-a-config-file-to-make-cli-command-flags-declarative) or `--set` on `zarf init`.
-
-To see a full list of `variables` you can view the [zarf.yaml that defines the registry](https://github.com/defenseunicorns/zarf/blob/main/packages/zarf-registry/zarf.yaml).
-
-:::
-
-Beyond the registry, their are also fully-optional components available for the init package. Many of these also have external configurations you can set with `zarf init` (such as `--git-*`), but these components provide an easy way to get started in environments where these core services are needed and may not already exist.
-
-| Components | Description |
-| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| k3s | REQUIRES ROOT (not sudo). Installs a lightweight Kubernetes Cluster on the local host—[K3s](https://k3s.io/)—and configures it to start up on boot. |
-| logging | Adds a log monitoring stack—[promtail/loki/grafana (aka PLG)](https://github.com/grafana/loki)—into the cluster. |
-| git-server | Adds a [GitOps](https://about.gitlab.com/topics/gitops/)-compatible source control service—[Gitea](https://gitea.io/en-us/)—into the cluster. |
-
-There are two ways to deploy these optional components. First, you can provide a comma-separated list of components to the `--components` flag, such as `zarf init --components k3s,git-server --confirm`, or, you can choose to exclude the `--components` and `--confirm` flags and respond with a yes (`y`) or no (`n`) for each optional component when interactively prompted.
-
-:::caution
-
-(Linux only) Deploying the 'k3s' component will require `root` access (not just `sudo`), as it modifies your host machine to install the cluster and by default only provides access to the cluster to the `root` user.
-
-:::
-
-:::tip
-
-The `k3s` component included in Zarf differs from the default `k3s` install in that it disables the installation of `traefik` out of the box. This was done so that people could more intentionally choose if they wanted `traefik` or another ingress provider (or no ingress at all) depending on their needs. If you would like to return `k3s` to its defaults, you can set the `K3S_ARGS` zarf variable to an empty string:
-
-```
-root@machine ~ # zarf init --components k3s --set K3S_ARGS="" --confirm
-```
-
-:::
-
-:::tip
-
-You can further customize how the git-server behaves by setting variables such as `GIT_SERVER_PVC_SIZE` with a [config file](../2-the-zarf-cli/index.md#using-a-config-file-to-make-cli-command-flags-declarative) or `--set` on `zarf init`.
-
-To see a full list of `variables` you can view the [zarf.yaml that defines the git-server](https://github.com/defenseunicorns/zarf/blob/main/packages/gitea/zarf.yaml).
-
-:::
-
-## What Makes the Init Package Special
-
-Deploying into air gapped environments is a [hard problem](../1-getting-started/0-understand-the-basics.md#what-is-the-air-gap), particularly when the K8s environment doesn't have a container registry for you to store images in already. This results in a dilemma where the container registry image must be introduced to the cluster, but there is no container registry to push it to as the image is not yet in the cluster - chicken, meet egg. To ensure that our approach is distro-agnostic, we developed a unique solution to seed the container registry into the cluster.
-
-This is done with the `zarf-injector` [component](https://github.com/defenseunicorns/zarf/blob/main/packages/zarf-injector/zarf.yaml) which injects a single rust binary (statically compiled) and a series of configmap chunks of a `registry:2` image into an ephemeral pod that is based on an existing image in the cluster. This gives us a running registry to bootstrap from and deploy the rest of the 'init' package and any other packages down the line.
-
-:::note
-
-The `registry:2` image and the Zarf Agent image can be configured with a custom init package using the `registry_image_*` and `agent_image_*` templates defined in the Zarf repo's [zarf-config.toml](https://github.com/defenseunicorns/zarf/blob/main/zarf-config.toml). This allows you to swap them for enterprise provided / hardened versions if desired such as those provided by [Iron Bank](https://repo1.dso.mil/dsop/opensource/defenseunicorns/zarf/zarf-agent).
-
-:::
-
-## The `zarf init` Lifecycle
-
-The `zarf init` lifecycle is _very similar_ to the [`zarf package deploy` lifecycle](./5-package-create-lifecycle.md#zarf-package-deploy) except that it sets up resources specific to Zarf such as the `zarf-state` and performs special actions such as the injection procedure.
-
-```mermaid
-graph TD
- B1(load package archive)-->B2
- B2(handle multipart package)-->B3
- B3(extract archive to temp dir)-->B4
- B4(validate package checksums and signature)-->B5
- B5(filter components by architecture & OS)-->B6
- B6(save SBOM files to current dir)-->B7
- B7(handle deprecations and breaking changes)-->B9
- B9(confirm package deploy):::prompt-->B10
- B10(process deploy-time variables)-->B11
- B11(prompt for missing variables)-->B12
- B12(prompt to confirm components)-->B13
- B13(prompt to choose components in '.group')-->B14
-
- subgraph
- B52 --> |Yes|B14(deploy each component)-->B14
- B14 --> B15{Component is \n zarf-seed-registry}
- B15 --> |Yes|B51(initialize zarf-state secret):::action
- B51 --> B52{External \n registry configured}
- B52 --> |No|B53(run injection process):::action-->B16
- B15 --> |No|B16(run each '.actions.onDeploy.before'):::action-->B16
- B16 --> B17(copy '.files')-->B18
- B18(load Zarf State)-->B19
- B19(push '.images')-->B20
- B20(push '.repos')-->B21
- B21(process '.dataInjections')-->B22
- B22(install '.charts')-->B23
- B23(apply '.manifests')-->B24
- B24(run each '.actions.onDeploy.after'):::action-->B24
- B24-->B25{Success?}
- B25-->|Yes|B26(run each\n'.actions.onDeploy.success'):::action-->B26
- B25-->|No|B27(run each\n'.actions.onDeploy.failure'):::action-->B27-->B999
-
- B999[Abort]:::fail
- end
-
- B26-->B28(print Zarf connect table)
- B28-->B29(save package data to cluster)
-
-
- classDef prompt fill:#4adede,color:#000000
- classDef action fill:#bd93f9,color:#000000
- classDef fail fill:#aa0000
-```
-
-:::tip
-
-Given that these flows are so similar you actually can `zarf package deploy` the init package. This is similar to accepting the defaults for any init-specific command flags and is useful when trying to deploy packages in a more generic way.
-
-:::
diff --git a/docs/3-create-a-zarf-package/4-zarf-schema.md b/docs/3-create-a-zarf-package/4-zarf-schema.md
deleted file mode 100644
index 9a15a1ae25..0000000000
--- a/docs/3-create-a-zarf-package/4-zarf-schema.md
+++ /dev/null
@@ -1,2871 +0,0 @@
-# Zarf Package Schema
-
-| | |
-| ------------------------- | -------------------------------------------------------------------------------------------------------- |
-| **Type** | `object` |
-| **Additional properties** | [](# "Additional Properties not allowed.") |
-| **Defined in** | #/definitions/ZarfPackage |
-
-
-
-kind *
-
-
-
-
-**Description:** Additional information about this package
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-version
-
-
-
-
-**Description:** Generic string set by a package author to track the package version (Note: ZarfInitConfigs will always be versioned to the CLIVersion they were created with)
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-url
-
-
-
-
-**Description:** Link to package information when online
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-image
-
-
-
-
-**Description:** An image URL to embed in this package (Reserved for future use in Zarf UI)
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-**Description:** Yaml OnLy Online (YOLO): True enables deploying a Zarf package without first running zarf init against the cluster. This is ideal for connected environments where you want to use existing VCS and container registries.
-
-| | |
-| -------- | --------- |
-| **Type** | `boolean` |
-
-
-
-**Description:** Link to package documentation when online
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-source
-
-
-
-
-**Description:** Link to package source code when online
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-vendor
-
-
-
-
-**Description:** Name of the distributing entity, organization or individual.
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-aggregateChecksum
-
-
-
-
-**Description:** Checksum of a checksums.txt file that contains checksums all the layers within the package.
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-**Description:** The machine name that created this package
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-user *
-
-
-
-
-
-
-**Description:** The username who created this package
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-architecture *
-
-
-
-
-
-
-**Description:** The architecture this package was created on
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-timestamp *
-
-
-
-
-
-
-**Description:** The timestamp when this package was created
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-version *
-
-
-
-
-
-
-**Description:** The version of Zarf used to build this package
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-migrations
-
-
-
-
-**Description:** Any migrations that have been run on this package
-
-| | |
-| -------- | ----------------- |
-| **Type** | `array of string` |
-
-
-
-
-
-
- ### migrations items
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-differential
-
-
-
-
-**Description:** Whether this package was created with differential components
-
-| | |
-| -------- | --------- |
-| **Type** | `boolean` |
-
-
-
-
-
-
-registryOverrides
-
-
-
-
- ## build > registryOverrides
-
-**Description:** Any registry domains that were overridden on package create when pulling images
-
-| | |
-| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
-| **Type** | `object` |
-| **Additional properties** | [](# "Additional Properties of any type are allowed.") |
-
-
-
-Pattern Property .*
-
-
-
-
-:::note
-All properties whose name matches the regular expression
-```.*``` ([Test](https://regex101.com/?regex=.%2A))
-must respect the following conditions
-:::
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-
-
-
-differentialMissing
-
-
-
-
-**Description:** List of components that were not included in this package due to differential packaging
-
-| | |
-| -------- | ----------------- |
-| **Type** | `array of string` |
-
-
-
-
-
-
- ### differentialMissing items
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-OCIImportedComponents
-
-
-
-
- ## build > OCIImportedComponents
-
-**Description:** Map of components that were imported via OCI. The keys are OCI Package URLs and values are the component names
-
-| | |
-| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
-| **Type** | `object` |
-| **Additional properties** | [](# "Additional Properties of any type are allowed.") |
-
-
-
-Pattern Property .*
-
-
-
-
-:::note
-All properties whose name matches the regular expression
-```.*``` ([Test](https://regex101.com/?regex=.%2A))
-must respect the following conditions
-:::
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-
-
-
-lastNonBreakingVersion
-
-
-
-
-**Description:** The minimum version of Zarf that does not have breaking package structure changes
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-**Description:** The name of the component
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-| Restrictions | |
-| --------------------------------- | --------------------------------------------------------------------------------- |
-| **Must match regular expression** | ```^[a-z0-9\-]+$``` [Test](https://regex101.com/?regex=%5E%5Ba-z0-9%5C-%5D%2B%24) |
-
-
-
-
-
-
-description
-
-
-
-
-**Description:** Message to include during package deploy describing the purpose of this component
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-default
-
-
-
-
-**Description:** Determines the default Y/N state for installing this component on package deploy
-
-| | |
-| -------- | --------- |
-| **Type** | `boolean` |
-
-
-
-
-
-
-required
-
-
-
-
-**Description:** Do not prompt user to install this component
-
-| | |
-| -------- | --------- |
-| **Type** | `boolean` |
-
-
-
-
-
-
-only
-
-
-
-
- ## components > only
-
-**Description:** Filter when this component is included in package creation or deployment
-
-| | |
-| ------------------------- | -------------------------------------------------------------------------------------------------------- |
-| **Type** | `object` |
-| **Additional properties** | [](# "Additional Properties not allowed.") |
-| **Defined in** | #/definitions/ZarfComponentOnlyTarget |
-
-
-
-localOS
-
-
-
-
-**Description:** Only deploy component to specified OS
-
-| | |
-| -------- | ------------------ |
-| **Type** | `enum (of string)` |
-
-:::note
-Must be one of:
-* "linux"
-* "darwin"
-* "windows"
-:::
-
-
-
-**Description:** Only create and deploy to clusters of the given architecture
-
-| | |
-| -------- | ------------------ |
-| **Type** | `enum (of string)` |
-
-:::note
-Must be one of:
-* "amd64"
-* "arm64"
-:::
-
-
-
-
-
-
-distros
-
-
-
-
-**Description:** A list of kubernetes distros this package works with (Reserved for future use)
-
-| | |
-| -------- | ----------------- |
-| **Type** | `array of string` |
-
-
-
-
-
-
- ### distros items
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-
-
-
-
-
-
-group
-
-
-
-
-**Description:** Create a user selector field based on all components in the same group
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-**Description:** The absolute or relative path where the file or folder should be copied to during package deploy
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-executable
-
-
-
-
-**Description:** (files only) Determines if the file should be made executable during package deploy
-
-| | |
-| -------- | --------- |
-| **Type** | `boolean` |
-
-
-
-### Property `url`
-
-**Title:** url
-
-| | |
-| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
-| **Type** | `object` |
-| **Additional properties** | [](# "Additional Properties of any type are allowed.") |
-
-#### The following properties are required
-* url
-
-
-
-
-### Property `localPath`
-
-**Title:** localPath
-
-| | |
-| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
-| **Type** | `object` |
-| **Additional properties** | [](# "Additional Properties of any type are allowed.") |
-
-#### The following properties are required
-* localPath
-
-
-
-
-
-
-
-name *
-
-
-
-
-
-
-**Description:** The name of the chart to deploy; this should be the name of the chart as it is installed in the helm repo
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-releaseName
-
-
-
-
-**Description:** The name of the release to create; defaults to the name of the chart
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-url
-
-
-
-
-**Description:** The URL of the OCI registry, chart repository, or git repo where the helm chart is stored
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-**Examples:**
-
-
-"OCI registry: oci://ghcr.io/stefanprodan/charts/podinfo", "helm chart repo: https://stefanprodan.github.io/podinfo", "git repo: https://github.com/stefanprodan/podinfo"
-
-
-
-
-
-
-version
-
-
-
-
-**Description:** The version of the chart to deploy; for git-based charts this is also the tag of the git repo
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-namespace *
-
-
-
-
-
-
-**Description:** The namespace to deploy the chart to
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-valuesFiles
-
-
-
-
-**Description:** List of local values file paths or remote URLs to include in the package; these will be merged together
-
-| | |
-| -------- | ----------------- |
-| **Type** | `array of string` |
-
-
-
-
-
-
- ### valuesFiles items
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-gitPath
-
-
-
-
-**Description:** The path to the chart in the repo if using a git repo instead of a helm repo
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-**Example:**
-
-
-"charts/your-chart"
-
-
-
-
-
-
-localPath
-
-
-
-
-**Description:** The path to the chart folder
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-noWait
-
-
-
-
-**Description:** Whether to not wait for chart resources to be ready before continuing
-
-| | |
-| -------- | --------- |
-| **Type** | `boolean` |
-
-
-
-
-
-**Description:** A name to give this collection of manifests; this will become the name of the dynamically-created helm chart
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-namespace
-
-
-
-
-**Description:** The namespace to deploy the manifests to
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-files
-
-
-
-
-**Description:** List of local K8s YAML files or remote URLs to deploy (in order)
-
-| | |
-| -------- | ----------------- |
-| **Type** | `array of string` |
-
-
-
-
-
-
- ### files items
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-kustomizeAllowAnyDirectory
-
-
-
-
-**Description:** Allow traversing directory above the current directory if needed for kustomization
-
-| | |
-| -------- | --------- |
-| **Type** | `boolean` |
-
-
-
-
-
-
-kustomizations
-
-
-
-
-**Description:** List of local kustomization paths or remote URLs to include in the package
-
-| | |
-| -------- | ----------------- |
-| **Type** | `array of string` |
-
-
-
-
-
-
- ### kustomizations items
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-noWait
-
-
-
-
-**Description:** Whether to not wait for manifest resources to be ready before continuing
-
-| | |
-| -------- | --------- |
-| **Type** | `boolean` |
-
-
-
-
-
-
-
-
-
-images
-
-
-
-
-**Description:** List of OCI images to include in the package
-
-| | |
-| -------- | ----------------- |
-| **Type** | `array of string` |
-
-
-
-
-
-
- ### images items
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-repos
-
-
-
-
-**Description:** List of git repos to include in the package
-
-| | |
-| -------- | ----------------- |
-| **Type** | `array of string` |
-
-
-
-
-
-
- ### repos items
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-**Description:** Either a path to a local folder/file or a remote URL of a file to inject into the given target pod + container
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-target *
-
-
-
-
- ## components > dataInjections > target
-
-
-**Description:** The target pod + container to inject the data into
-
-| | |
-| ------------------------- | -------------------------------------------------------------------------------------------------------- |
-| **Type** | `object` |
-| **Additional properties** | [](# "Additional Properties not allowed.") |
-| **Defined in** | #/definitions/ZarfContainerTarget |
-
-
-
-namespace *
-
-
-
-
-
-
-**Description:** The namespace to target for data injection
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-selector *
-
-
-
-
-
-
-**Description:** The K8s selector to target for data injection
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-**Example:**
-
-
-"app=data-injection"
-
-
-
-
-
-
-container *
-
-
-
-
-
-
-**Description:** The container name to target for data injection
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-path *
-
-
-
-
-
-
-**Description:** The path within the container to copy the data into
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-
-
-
-compress
-
-
-
-
-**Description:** Compress the data before transmitting using gzip. Note: this requires support for tar/gzip locally and in the target image.
-
-| | |
-| -------- | --------- |
-| **Type** | `boolean` |
-
-
-
- ## components > extensions > bigbang
-
-**Description:** Configurations for installing Big Bang and Flux in the cluster
-
-| | |
-| ------------------------- | -------------------------------------------------------------------------------------------------------- |
-| **Type** | `object` |
-| **Additional properties** | [](# "Additional Properties not allowed.") |
-| **Defined in** | #/definitions/BigBang |
-
-
-
-version *
-
-
-
-
-
-
-**Description:** The version of Big Bang to use
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-repo
-
-
-
-
-**Description:** Override repo to pull Big Bang from instead of Repo One
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-valuesFiles
-
-
-
-
-**Description:** The list of values files to pass to Big Bang; these will be merged together
-
-| | |
-| -------- | ----------------- |
-| **Type** | `array of string` |
-
-
-
-
-
-
- ### valuesFiles items
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
- ## components > actions > onCreate > defaults > shell
-
-**Description:** (cmd only) Indicates a preference for a shell for the provided cmd to be executed in on supported operating systems
-
-| | |
-| ------------------------- | -------------------------------------------------------------------------------------------------------- |
-| **Type** | `object` |
-| **Additional properties** | [](# "Additional Properties not allowed.") |
-| **Defined in** | #/definitions/ZarfComponentActionShell |
-
-
-
-windows
-
-
-
-
-**Description:** (default 'powershell') Indicates a preference for the shell to use on Windows systems (note that choosing 'cmd' will turn off migrations like touch -> New-Item)
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-**Examples:**
-
-
-"powershell", "cmd", "pwsh", "sh", "bash", "gsh"
-
-
-
-
-
-
-linux
-
-
-
-
-**Description:** (default 'sh') Indicates a preference for the shell to use on Linux systems
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-**Examples:**
-
-
-"sh", "bash", "fish", "zsh", "pwsh"
-
-
-
-
-
-
-darwin
-
-
-
-
-**Description:** (default 'sh') Indicates a preference for the shell to use on macOS systems
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-**Examples:**
-
-
-"sh", "bash", "fish", "zsh", "pwsh"
-
-
-
-**Description:** Hide the output of the command during package deployment (default false)
-
-| | |
-| -------- | --------- |
-| **Type** | `boolean` |
-
-
-
-
-
-
-maxTotalSeconds
-
-
-
-
-**Description:** Timeout in seconds for the command (default to 0
-
-| | |
-| -------- | --------- |
-| **Type** | `integer` |
-
-
-
-
-
-
-maxRetries
-
-
-
-
-**Description:** Retry the command if it fails up to given number of times (default 0)
-
-| | |
-| -------- | --------- |
-| **Type** | `integer` |
-
-
-
-
-
-
-dir
-
-
-
-
-**Description:** The working directory to run the command in (default is CWD)
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-**Description:** The command to run. Must specify either cmd or wait for the action to do anything.
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-shell
-
-
-
-
- ## components > actions > onCreate > before > shell
-
-**Description:** (cmd only) Indicates a preference for a shell for the provided cmd to be executed in on supported operating systems
-
-| | |
-| ------------------------- | -------------------------------------------------------------------------------------------------------- |
-| **Type** | `object` |
-| **Additional properties** | [](# "Additional Properties not allowed.") |
-| **Same definition as** | [shell](#components_items_actions_onCreate_defaults_shell) |
-
-
-
-
-
-
-setVariables
-
-
-
-
- ## components > actions > onCreate > before > setVariables
-
-**Description:** (onDeploy/cmd only) An array of variables to update with the output of the command. These variables will be available to all remaining actions and components in the package.
-
-| | |
-| -------- | ------- |
-| **Type** | `array` |
-
-
-
-
-
-
- ### ZarfComponentActionSetVariable
-
-| | |
-| ------------------------- | -------------------------------------------------------------------------------------------------------- |
-| **Type** | `object` |
-| **Additional properties** | [](# "Additional Properties not allowed.") |
-| **Defined in** | #/definitions/ZarfComponentActionSetVariable |
-
-
-
-name *
-
-
-
-
-
-
-**Description:** The name to be used for the variable
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-| Restrictions | |
-| --------------------------------- | ----------------------------------------------------------------------------- |
-| **Must match regular expression** | ```^[A-Z0-9_]+$``` [Test](https://regex101.com/?regex=%5E%5BA-Z0-9_%5D%2B%24) |
-
-
-
-
-
-
-sensitive
-
-
-
-
-**Description:** Whether to mark this variable as sensitive to not print it in the Zarf log
-
-| | |
-| -------- | --------- |
-| **Type** | `boolean` |
-
-
-
-
-
-
-autoIndent
-
-
-
-
-**Description:** Whether to automatically indent the variable's value (if multiline) when templating. Based on the number of chars before the start of ###ZARF_VAR_.
-
-| | |
-| -------- | --------- |
-| **Type** | `boolean` |
-
-
-
-
-
-
-type
-
-
-
-
-**Description:** Changes the handling of a variable to load contents differently (i.e. from a file rather than as a raw variable - templated files should be kept below 1 MiB)
-
-| | |
-| -------- | ------------------ |
-| **Type** | `enum (of string)` |
-
-:::note
-Must be one of:
-* "raw"
-* "file"
-:::
-
-
-
-
-
-
-
-
-
-description
-
-
-
-
-**Description:** Description of the action to be displayed during package execution instead of the command
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-wait
-
-
-
-
- ## components > actions > onCreate > before > wait
-
-**Description:** Wait for a condition to be met before continuing. Must specify either cmd or wait for the action. See the 'zarf tools wait-for' command for more info.
-
-| | |
-| ------------------------- | -------------------------------------------------------------------------------------------------------- |
-| **Type** | `object` |
-| **Additional properties** | [](# "Additional Properties not allowed.") |
-| **Defined in** | #/definitions/ZarfComponentActionWait |
-
-
-
-cluster
-
-
-
-
- ## components > actions > onCreate > before > wait > cluster
-
-**Description:** Wait for a condition to be met in the cluster before continuing. Only one of cluster or network can be specified.
-
-| | |
-| ------------------------- | -------------------------------------------------------------------------------------------------------- |
-| **Type** | `object` |
-| **Additional properties** | [](# "Additional Properties not allowed.") |
-| **Defined in** | #/definitions/ZarfComponentActionWaitCluster |
-
-
-
-kind *
-
-
-
-
-
-
-**Description:** The kind of resource to wait for
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-**Examples:**
-
-
-"Pod", "Deployment)"
-
-
-
-
-
-
-name *
-
-
-
-
-
-
-**Description:** The name of the resource or selector to wait for
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-**Examples:**
-
-
-"podinfo", "app=podinfo"
-
-
-
-
-
-
-namespace
-
-
-
-
-**Description:** The namespace of the resource to wait for
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-condition
-
-
-
-
-**Description:** The condition or jsonpath state to wait for; defaults to exist
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-**Examples:**
-
-
-"Ready", "Available"
-
-
-
-
-
-
-
-
-
-network
-
-
-
-
- ## components > actions > onCreate > before > wait > network
-
-**Description:** Wait for a condition to be met on the network before continuing. Only one of cluster or network can be specified.
-
-| | |
-| ------------------------- | -------------------------------------------------------------------------------------------------------- |
-| **Type** | `object` |
-| **Additional properties** | [](# "Additional Properties not allowed.") |
-| **Defined in** | #/definitions/ZarfComponentActionWaitNetwork |
-
-
-
-protocol *
-
-
-
-
-
-
-**Description:** The protocol to wait for
-
-| | |
-| -------- | ------------------ |
-| **Type** | `enum (of string)` |
-
-:::note
-Must be one of:
-* "tcp"
-* "http"
-* "https"
-:::
-
-
-
-
-
-**Description:** The name to be used for the constant
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-| Restrictions | |
-| --------------------------------- | ----------------------------------------------------------------------------- |
-| **Must match regular expression** | ```^[A-Z0-9_]+$``` [Test](https://regex101.com/?regex=%5E%5BA-Z0-9_%5D%2B%24) |
-
-
-
-
-
-
-value *
-
-
-
-
-
-
-**Description:** The value to set for the constant during deploy
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-description
-
-
-
-
-**Description:** A description of the constant to explain its purpose on package create or deploy confirmation prompts
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-autoIndent
-
-
-
-
-**Description:** Whether to automatically indent the variable's value (if multiline) when templating. Based on the number of chars before the start of ###ZARF_CONST_.
-
-| | |
-| -------- | --------- |
-| **Type** | `boolean` |
-
-
-
-
-
-**Description:** The name to be used for the variable
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-| Restrictions | |
-| --------------------------------- | ----------------------------------------------------------------------------- |
-| **Must match regular expression** | ```^[A-Z0-9_]+$``` [Test](https://regex101.com/?regex=%5E%5BA-Z0-9_%5D%2B%24) |
-
-
-
-
-
-
-description
-
-
-
-
-**Description:** A description of the variable to be used when prompting the user a value
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-default
-
-
-
-
-**Description:** The default value to use for the variable
-
-| | |
-| -------- | -------- |
-| **Type** | `string` |
-
-
-
-
-
-
-prompt
-
-
-
-
-**Description:** Whether to prompt the user for input for this variable
-
-| | |
-| -------- | --------- |
-| **Type** | `boolean` |
-
-
-
-
-
-
-sensitive
-
-
-
-
-**Description:** Whether to mark this variable as sensitive to not print it in the Zarf log
-
-| | |
-| -------- | --------- |
-| **Type** | `boolean` |
-
-
-
-
-
-
-autoIndent
-
-
-
-
-**Description:** Whether to automatically indent the variable's value (if multiline) when templating. Based on the number of chars before the start of ###ZARF_VAR_.
-
-| | |
-| -------- | --------- |
-| **Type** | `boolean` |
-
-
-
-
-
-
-type
-
-
-
-
-**Description:** Changes the handling of a variable to load contents differently (i.e. from a file rather than as a raw variable - templated files should be kept below 1 MiB)
-
-| | |
-| -------- | ------------------ |
-| **Type** | `enum (of string)` |
-
-:::note
-Must be one of:
-* "raw"
-* "file"
-:::
-
-
-
-
-
-
-
-----------------------------------------------------------------------------------------------------------------------------
-Generated from [zarf.schema.json](https://github.com/defenseunicorns/zarf/blob/main/zarf.schema.json)
diff --git a/docs/3-create-a-zarf-package/5-package-create-lifecycle.md b/docs/3-create-a-zarf-package/5-package-create-lifecycle.md
deleted file mode 100644
index 58da969df8..0000000000
--- a/docs/3-create-a-zarf-package/5-package-create-lifecycle.md
+++ /dev/null
@@ -1,55 +0,0 @@
-# Package Create Lifecycle
-
-The following diagram shows the order of operations for the `zarf package create` command and the hook locations for [actions](../../examples/component-actions/README.md).
-
-## `zarf package create`
-
-```mermaid
-graph TD
- A1(set working directory)-->A2
- A2(parse zarf.yaml)-->A3
- A3(filter components by architecture)-->A4
- A4(detect init package)-->A5
- A5(handle deprecations)-->A6
- A6(parse component imports)-->A7
- A7(process create-time variables)-->A8
- A8(write build data and zarf.yaml)-->A9
-
- A9(run validations)-->A10
- A10(confirm package create):::prompt-->A11
- A11{Init package?}
- A11 -->|Yes| A12(add seed image)-->A13
- A11 -->|No| A13
-
- subgraph
- A13(add each component)-->A13
- A13 --> A14(run each '.actions.onCreate.before'):::action-->A14
- A14 --> A15(load '.charts')-->A16
- A16(load '.files')-->A17
- A17(load '.dataInjections')-->A18
- A18(load '.manifests')-->A19
- A19(load '.repos')-->A20
- A20(run each '.actions.onCreate.after'):::action-->A20
- A20-->A21{Success?}
- A21-->|Yes|A22(run each\n'.actions.onCreate.success'):::action-->A22
- A21-->|No|A23(run each\n'.actions.onCreate.failure'):::action-->A23-->A999
- end
-
- A22-->A24(load all '.images')
- A24-->A25{Skip SBOM?}
- A25-->|Yes|A27
- A25-->|No|A26
- A26(generate SBOM)-->A27
- A27(reset working directory)-->A28
- A28(create package archive)-->A29
- A29{Is multipart?}
- A29-->|Yes|A30(split package archive)-->A31
- A29-->|No|A31
- A31(handle sbom view/out flags)
-
- A999[Abort]:::fail
-
- classDef prompt fill:#4adede,color:#000000
- classDef action fill:#bd93f9,color:#000000
- classDef fail fill:#aa0000
-```
diff --git a/docs/3-create-a-zarf-package/6-package-sboms.md b/docs/3-create-a-zarf-package/6-package-sboms.md
deleted file mode 100644
index cc84e4244a..0000000000
--- a/docs/3-create-a-zarf-package/6-package-sboms.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# Package SBOMs
-
-Zarf builds [Software Bill of Materials (SBOM)](https://www.linuxfoundation.org/tools/the-state-of-software-bill-of-materials-sbom-and-cybersecurity-readiness/) into packages to help with the management of software being brought into the air gap. This page goes into detail of how these SBOMs are created and what within a package will get an associated SBOM. If you would like to see how to interact with SBOMs after they are built into a package, see the [View SBOMs page](../4-deploy-a-zarf-package/4-view-sboms.md) under Deploy a Zarf Package.
-
-## How SBOMs are Generated
-
-Zarf uses [Syft](https://github.com/anchore/syft) under the hood to provide SBOMs for container `images`, as well as `files` and `dataInjections` included in components. This is run during the final step of package creation with the SBOM information for a package being placed within an `sboms` directory at the root of the Zarf Package tarball. Additionally, the SBOMs are created in the Syft `.json` format which is a superset of all of the information that Syft can discover and is used so that we can provide the most information possible even when performing [lossy conversions to formats like `spdx-json` or `cyclonedx-json`](../4-deploy-a-zarf-package/4-view-sboms.md#sboms-built-into-packages).
-
-If you were using the Syft CLI to create these SBOM files manually this would be equivalent to the following commands:
-
-```bash
-# For `images` contained within the package
-$ syft packages oci-dir:path/to/yourimage -o json > my-sbom.json
-```
-
-```bash
-# For `files` or `dataInjections` contained within the package
-$ syft packages file:path/to/yourproject/file -o json > my-sbom.json
-```
-
-:::note
-
-Zarf uses the `file:` Syft SBOM scheme even if given a directory as the `files` or `dataInjection` source since this generally provides more information (at the cost of execution speed).
-
-:::
-
-:::tip
-
-Given the Syft CLI is vendored into Zarf you can run these commands with the Zarf binary as well:
-
-```bash
-$ zarf tools sbom packages file:path/to/yourproject/file -o json > my-sbom.json
-```
-
-:::
diff --git a/docs/3-create-a-zarf-package/8-vscode.md b/docs/3-create-a-zarf-package/8-vscode.md
deleted file mode 100644
index 79e10ce663..0000000000
--- a/docs/3-create-a-zarf-package/8-vscode.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# Getting Started - VS Code
-
-Zarf uses the [Zarf package schema](https://github.com/defenseunicorns/zarf/blob/main/zarf.schema.json) to define its configuration files. This schema is used to describe package configuration options and enable the validation of configuration files prior to their use in building a Zarf Package.
-
-## Adding Schema Validation
-
-1. Open VS Code.
-2. Install the [YAML extension](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml) by RedHat.
-3. Open the VS Code command pallete by typing `CTRL/CMD + SHIFT + P`.
-4. Type `Preferences: Open User Settings (JSON)`into the search bar to open the `settings.json` file.
-5. Add the below code to the settings.json config, or modify the existing `yaml.schemas` object to include the Zarf schema.
-
-```json
- "yaml.schemas": {
- "https://raw.githubusercontent.com/defenseunicorns/zarf/main/zarf.schema.json": "zarf.yaml"
- }
-```
-:::note
-
-When successfully installed, the `yaml.schema` line will match the color of the other lines within the settings.
-
-:::
-
-## Specifying Zarf's Schema Version
-
-To ensure consistent validation of the Zarf schema version in a `zarf.yaml` file, it can be beneficial to lock it to a specific version. This can be achieved by appending the following statement to the **first line** of any given `zarf.yaml` file:
-
-```yaml
-# yaml-language-server: $schema=https://raw.githubusercontent.com/defenseunicorns/zarf//zarf.schema.json
-```
-
-In the above example, `` should be replaced with the specific [Zarf release](https://github.com/defenseunicorns/zarf/releases).
-
-### Code Example
-
-
diff --git a/docs/3-create-a-zarf-package/_category_.json b/docs/3-create-a-zarf-package/_category_.json
deleted file mode 100644
index d5ace4d347..0000000000
--- a/docs/3-create-a-zarf-package/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "position": 3,
- "label": "Create a Zarf Package"
-}
diff --git a/docs/3-create-a-zarf-package/index.md b/docs/3-create-a-zarf-package/index.md
deleted file mode 100644
index 21bc292bef..0000000000
--- a/docs/3-create-a-zarf-package/index.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# Create a Zarf Package
-
-Zarf enables you to consolidate portions of the internet into a single package that can be conveniently installed at a later time. A Zarf Package is a single tarball file that includes all of the resources and instructions required for efficiently managing a system or capability, even when entirely disconnected from the internet. In this context, a disconnected system refers to a system that either consistently operates in an offline mode or occasionally disconnects from the network.
-
-Once defined, a Zarf Package contains comprehensive instructions on assembling various software components that are to be [deployed onto the targeted system](../4-deploy-a-zarf-package/index.md). The instructions are fully "declarative", meaning that all components are represented by code and automated, eliminating the need for manual intervention.
-
-## Additional Resources
-
-To learn more about creating a Zarf package, you can check out the following resources:
-
-- [Getting Started with Zarf](../1-getting-started/index.md): A step-by-step guide to installing Zarf and a description of the problems it seeks to solve.
-- [Zarf CLI Documentation](../2-the-zarf-cli/index.md): A comprehensive guide to using the Zarf command-line interface.
-- [Understanding Zarf Packages](./1-zarf-packages.md): A breakdown of the kinds of Zarf packages, their uses and how they work.
-- [Understanding Zarf Components](./2-zarf-components.md): A breakdown of the primary structure that makes up a Zarf Package.
-- [Zarf Schema Documentation](./4-zarf-schema.md): Documentation that covers the configuration available in a Zarf Package definition.
-- [The Package Create Lifecycle](./5-package-create-lifecycle.md): An overview of the lifecycle of `zarf package create`.
-- [Creating a Zarf Package Tutorial](../5-zarf-tutorials/0-creating-a-zarf-package.md): A tutorial covering how to take an application and create a package for it.
-
-## Typical Creation Workflow:
-
-The general flow of a Zarf package deployment on an existing initialized cluster is as follows:
-
-```shell
-# To create a package run the following:
-$ zarf package create
-# - Enter any package templates that have not yet been defined
-# - Type "y" to confirm package creation or "N" to cancel
-
-# Once the creation finishes you can interact with the built package
-$ zarf inspect .tar.zst
-# - You should see the specified package's zarf.yaml
-# - You can also see the sbom information with `zarf inspect .tar.zst --sbom`
-```
diff --git a/docs/4-deploy-a-zarf-package/1-package-deploy-lifecycle.md b/docs/4-deploy-a-zarf-package/1-package-deploy-lifecycle.md
deleted file mode 100644
index 10f7205fdf..0000000000
--- a/docs/4-deploy-a-zarf-package/1-package-deploy-lifecycle.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# Package Deploy Lifecycle
-
-The following diagram shows the order of operations for the `zarf package deploy` command and the hook locations for [actions](../../examples/component-actions/README.md).
-
-## `zarf package deploy`
-
-```mermaid
-graph TD
- B1(load package archive)-->B2
- B2(handle multipart package)-->B3
- B3(extract archive to temp dir)-->B4
- B4(validate package checksums and signature)-->B5
- B5(filter components by architecture & OS)-->B6
- B6(save SBOM files to current dir)-->B7
- B7(handle deprecations and breaking changes)-->B9
- B9(confirm package deploy):::prompt-->B10
- B10(process deploy-time variables)-->B11
- B11(prompt for missing variables)-->B12
- B12(prompt to confirm components)-->B13
- B13(prompt to choose components in '.group')-->B14
-
- subgraph
- B14(deploy each component)-->B14
- B14 --> B15(run each '.actions.onDeploy.before'):::action-->B15
- B15 --> B16(copy '.files')-->B17
- B17(load Zarf State)-->B18
- B18(push '.images')-->B19
- B19(push '.repos')-->B20
- B20(process '.dataInjections')-->B21
- B21(install '.charts')-->B22
- B22(apply '.manifests')-->B23
- B23(run each '.actions.onDeploy.after'):::action-->B23
- B23-->B24{Success?}
- B24-->|Yes|B25(run each\n'.actions.onDeploy.success'):::action-->B25
- B24-->|No|B26(run each\n'.actions.onDeploy.failure'):::action-->B26-->B999
-
- B999[Abort]:::fail
- end
-
- B25-->B27(print Zarf connect table)
- B27-->B28(save package data to cluster)
-
-
- classDef prompt fill:#4adede,color:#000000
- classDef action fill:#bd93f9,color:#000000
- classDef fail fill:#aa0000
-```
diff --git a/docs/4-deploy-a-zarf-package/2-supported-packages.md b/docs/4-deploy-a-zarf-package/2-supported-packages.md
deleted file mode 100644
index 37bcccd943..0000000000
--- a/docs/4-deploy-a-zarf-package/2-supported-packages.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Supported Packages
-
-:::caution Hard Hat Area
-This page is still being developed. More content will be added soon!
-:::
-
-
-
-There are a lot of `zarf.yaml` packages listed within the GitHub repository. A lot of the examples are just that, examples. We actually support and maintain the packages in the 'packages' directory.
-
-Here, we will talk about and briefly describe the packages that we support.
diff --git a/docs/4-deploy-a-zarf-package/4-view-sboms.md b/docs/4-deploy-a-zarf-package/4-view-sboms.md
deleted file mode 100644
index b8489f1d5b..0000000000
--- a/docs/4-deploy-a-zarf-package/4-view-sboms.md
+++ /dev/null
@@ -1,61 +0,0 @@
-# View SBOMs
-
-A [Software Bill of Materials (SBOM)](https://www.linuxfoundation.org/tools/the-state-of-software-bill-of-materials-sbom-and-cybersecurity-readiness/) is a document that contains a detailed list of all the things a software application is using. SBOMs are important from a security standpoint because they allow you to better track what dependencies you have, and with that information, you can quickly check if any of your dependencies are out of date or have a known vulnerability that should be patched. Zarf makes SBOMs easier, if not painless, to deal with!
-
-## SBOMs Built Into Packages
-
-Zarf treats security as a first-class concern and builds SBOM documents into packages by default! Unless explicitly skipped with the `--skip-sbom` flag, whenever a package is created, Zarf generates an SBOM for it and adds it to the package itself. This means that wherever you end up moving your package, you will always be able to take a peek inside to see what it contains. You can learn more about how Zarf does this on the [Package SBOMs page](../3-create-a-zarf-package/6-package-sboms.md).
-
-You can quickly view these files in your browser by running `zarf package inspect` with the `-s` or `--sbom` flag. If there are any SBOMs included in the package, Zarf will open the SBOM viewer to the first SBOM in the list.
-
-``` bash
-$ zarf package inspect zarf-package-example-amd64.tar.zst -s
-```
-
-:::tip
-
-If you would like to get to the raw SBOM files inside of a package you can use the `--sbom-out` flag as shown below:
-
-``` bash
-$ zarf package inspect zarf-package-example-amd64.tar.zst --sbom-out ./temp-sbom-dir
-$ cd ./temp-sbom-dir/example
-$ ls
-```
-
-This will output the raw SBOM viewer `.html` files as well as the Syft `.json` files contained in the package. Both of these files contain the same information, but the `.html` files are a lightweight representation of the `.json` SBOM files to be more human-readable. The `.json` files exist to be injected into other tools, such as [Grype](https://github.com/anchore/grype) for vulnerability checking.
-
-The Syft `.json` files can also be converted to other formats with the Syft CLI (which is vendored into Zarf) including `spdx-json` and `cyclonedx-json`.
-
-```
-zarf tools sbom convert nginx_1.23.0.json -o cyclonedx-json > nginx_1.23.0.cyclonedx.json
-```
-
-To learn more about the formats Syft supports see `zarf tools sbom convert -h`
-
-:::
-
-## Viewing SBOMs When Deploying
-
-
-
-When deploying a package, Zarf will output the yaml definition of the package, i.e. the `zarf.yaml` that defined the package that was created. If there are any artifacts included in the package, Zarf will also output a note saying how many artifacts are going to be deployed with a link to a lightweight [SBOM viewer](#the-sbom-viewer) that you can copy into your browser to get a visual overview of the artifacts and what they contain.
-
-
-
-:::note
-
-Zarf does not prompt you to view the SBOM if you are deploying a package with the `--confirm` flag
-
-:::
-
-## The SBOM Viewer
-
-**Example SBOM Dashboard**
-
-
-In each package that contains SBOM information, Zarf includes a simple dashboard that allows you to see the contents of each container image or set of component files within your package. You can toggle through the different images or components in the dropdown at the top right of the dashboard as well as export the table contents to a CSV.
-
-**Example SBOM Comparer**
-
-
-The SBOM viewer also has an SBOM comparison tool built in that you can access by clicking the "Compare Tool" button next to the image selector. This view allows you to take the SBOM `.json` data (extracted alongside the `.html` files with `--sbom-out`) and compare that across images or packages (if you extract multiple Zarf packages at a time). This is useful for seeing what has changed between different image or component versions.
diff --git a/docs/4-deploy-a-zarf-package/5-k9s-dashboard.md b/docs/4-deploy-a-zarf-package/5-k9s-dashboard.md
deleted file mode 100644
index 1df1bbfeb7..0000000000
--- a/docs/4-deploy-a-zarf-package/5-k9s-dashboard.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# K9s Dashboard
-
-Zarf vendors in [K9s, a terminal-based UI to interact with your Kubernetes cluster. K9s is not necessary to deploy, manage, or operate Zarf or its deployed packages, but it is a great tool to use when you want to interact with your cluster. Since Zarf vendors in this tool, you don't have to worry about additional dependencies or trying to install it yourself!
-
-## Using the k9s Dashboard
-
-All you need to use the k9s dashboard is to:
-
-1. Have access to a running cluster kubecontext
-1. Have a zarf binary installed
-
-Using the k9s Dashboard is as simple as using a single command!
-
-```bash
-zarf tools k9s
-```
-
-**Example k9s Dashboard**
-
-
-More instructions on how to use k9s can be found on their [documentation site](https://k9scli.io/topics/commands/).
diff --git a/docs/4-deploy-a-zarf-package/_category_.json b/docs/4-deploy-a-zarf-package/_category_.json
deleted file mode 100644
index 8b608f4691..0000000000
--- a/docs/4-deploy-a-zarf-package/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "position": 4,
- "label": "Deploy a Zarf Package"
-}
diff --git a/docs/4-deploy-a-zarf-package/index.md b/docs/4-deploy-a-zarf-package/index.md
deleted file mode 100644
index f67fe2375c..0000000000
--- a/docs/4-deploy-a-zarf-package/index.md
+++ /dev/null
@@ -1,64 +0,0 @@
-# Deploy a Zarf Package
-
-Zarf Packages are designed to be easily deployable on a variety of systems, including air-gapped systems. All of the necessary dependencies are included within the package, eliminating the need for outbound internet connectivity. When deploying the package onto a cluster, the dependencies contained in each component are automatically pushed into a Docker registry and/or Git server created by or known to Zarf on the air-gapped system.
-
-Once the Zarf package has arrived in your target environment, run the `zarf package deploy` command to deploy the package onto your [Zarf initialized](../3-create-a-zarf-package/3-zarf-init-package.md) cluster. This command deploys the package's capabilities into the target environment, including all external resources required for the package. The `zarf.yaml` file included in the package will be used to orchestrate the deployment of the application according to the instructions provided.
-
-:::tip
-
-For a comprehensive tutorial of deploying a Zarf Package, see the [Deploying Zarf Packages tutorial](../5-zarf-tutorials/2-deploying-zarf-packages.md).
-
-:::
-
-## Deployment Options
-
-Zarf provides a few options that can provide control over how a deployment of a Zarf Package proceeds in a given environment. These are baked into a Zarf Package by a package creator and include:
-
-- **Package Variables** - Templates resources with environment specific values such as domain names or secrets.
-- **Optional Components** - Allows for components to be optionally chosen when they are needed for a subset of environments.
-- **Components Groups** - Provides a choice of one component from a defined set of components in the same component group.
-
-## Additional Deployment-modes
-
-Zarf normally expects to operate against a Kubernetes cluster that has been [Zarf initialized](../3-create-a-zarf-package/3-zarf-init-package.md), but there are additional modes that can be configured by package creators including:
-
-- **YOLO Mode** - Yaml-OnLy Online mode allows for a faster deployment without requiring the `zarf init` command to be run beforehand. It can be useful for testing or for environments that manage their own registries and Git servers completely outside of Zarf. Given this mode does not use the [Zarf Agent](../8-faq.md#what-is-the-zarf-agent) any resources specified will need to be manually modified for the environment.
-
-- **Cluster-less** - Zarf normally interacts with clusters and kubernetes resources, but it is possible to have Zarf perform actions before a cluster exists (including [deploying the cluster itself](../5-zarf-tutorials/5-creating-a-k8s-cluster-with-zarf.md)). These packages generally have more dependencies on the host or environment that they run within.
-
-## Additional Resources
-
-To learn more about deploying a Zarf package, you can check out the following resources:
-
-- [Getting Started with Zarf](../1-getting-started/index.md): A step-by-step guide to installing Zarf and a description of the problems it seeks to solve.
-- [Zarf CLI Documentation](../2-the-zarf-cli/index.md): A comprehensive guide to using the Zarf command-line interface.
-- [The Package Deploy Lifecycle](./1-package-deploy-lifecycle.md): An overview of the lifecycle of `zarf package deploy`.
-- [Deploying a Zarf Package Tutorial](../5-zarf-tutorials/3-deploy-a-retro-arcade.md): A tutorial covering how to deploy a package onto an initialized cluster.
-- [The Zarf Init Package](../3-create-a-zarf-package/3-zarf-init-package.md): Learn about the 'init' package that is used to store resources for zarf packages.
-
-## Typical Deployment Workflow:
-
-The general flow of a Zarf package deployment on an existing initialized cluster is as follows:
-
-```shell
-# To deploy a package run the following:
-$ zarf package deploy
-# - Find and select the package using tab (shows packages from the local system)
-# - Review Supply Chain and other pre-deploy information (clicking on the link to view SBOMs)
-# - Type "y" to confirm package deployment or "N" to cancel
-# - Enter any variables that have not yet been defined
-# - Select any optional components that you want to add to the deployment
-# - Select any component groups for this deployment
-
-# Once the deployment finishes you can interact with the package
-$ zarf connect [service name]
-# - Your browser window should open to the service you selected
-# - Not all packages define `zarf connect` services
-# - You can list those that are available with `zarf connect list`
-```
-
-:::note
-
-You can also specify a package locally, or via oci or sget such as `zarf package deploy sget://defenseunicorns/zarf-hello-world:$(uname -m)`
-
-:::
diff --git a/docs/5-zarf-tutorials/1-initializing-a-k8s-cluster.md b/docs/5-zarf-tutorials/1-initializing-a-k8s-cluster.md
deleted file mode 100644
index f7afc43f72..0000000000
--- a/docs/5-zarf-tutorials/1-initializing-a-k8s-cluster.md
+++ /dev/null
@@ -1,56 +0,0 @@
-# Initializing a K8s Cluster
-
-## Introduction
-
-In this tutorial, we will demonstrate how to initialize Zarf onto a K8s cluster. This is done by running the [`zarf init`](../2-the-zarf-cli/100-cli-commands/zarf_init.md) command, which uses a specialized package called an 'init-package'. More information about this specific package can be found [here](../3-create-a-zarf-package/3-zarf-init-package.md).
-
-## Prerequisites
-
-Before beginning this tutorial you will need the following:
-
-- The [Zarf](https://github.com/defenseunicorns/zarf) repository cloned: ([`git clone` Instructions](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository))
-- Zarf binary installed on your $PATH: ([Installing Zarf](../1-getting-started/index.md#installing-zarf))
-- An init-package downloaded: ([init-package Build Instructions](./0-creating-a-zarf-package.md)) or ([Download Location](https://github.com/defenseunicorns/zarf/releases))
-- A Kubernetes cluster to work with: ([Local k8s Cluster Instructions](./#setting-up-a-local-kubernetes-cluster))
-
-## Initializing the Cluster
-
-1. Run the `zarf init` command on your cluster.
-
-```sh
-$ zarf init
-```
-
-2. When prompted to deploy the package select `y` for Yes, then hit the `enter` key.
-
-3. Decline Optional Components
-
-:::info
-
-More information about the init-package and its components can be found [here](../3-create-a-zarf-package/3-zarf-init-package.md)
-
-:::
-
-
-
-:::note
-You will only be prompted to deploy the k3s component if you are on a Linux machine
-:::
-
-### Validating the Deployment
-After the `zarf init` command is done running, you should see a few new `zarf` pods in the Kubernetes cluster.
-
-```bash
-zarf tools monitor
-
-# Note you can press `0` if you want to see all namespaces and CTRL-C to exit
-```
-
-
-## Cleaning Up
-
-The [`zarf destroy`](../2-the-zarf-cli/100-cli-commands/zarf_destroy.md) command will remove all of the resources that were created by the initialization command. This command will leave you with a clean cluster that you can either destroy or use for another tutorial.
-
-```sh
-zarf destroy --confirm
-```
diff --git a/docs/5-zarf-tutorials/2-deploying-zarf-packages.md b/docs/5-zarf-tutorials/2-deploying-zarf-packages.md
deleted file mode 100644
index d328bcfb79..0000000000
--- a/docs/5-zarf-tutorials/2-deploying-zarf-packages.md
+++ /dev/null
@@ -1,100 +0,0 @@
-# Deploying Local Zarf Packages
-
-## Introduction
-
-In this tutorial, we are going to deploy the WordPress package onto your cluster using the package we created in the earlier [create a package](./0-creating-a-zarf-package.md) tutorial and the cluster we initialized in the [initialize a k8s cluster](./1-initializing-a-k8s-cluster.md) tutorial. We will be leveraging that past work to go the extra step of deploying an application we packaged onto our cluster with the `zarf package deploy` command.
-
-## System Requirements
-
-- You'll need a machine that has access to a built-package and an initialized cluster.
-
-## Prerequisites
-
-Prior to this tutorial you'll want to have a built package and a working cluster with Zarf initialized.
-
-- Zarf binary installed on your $PATH: ([Installing Zarf](../1-getting-started/index.md#installing-zarf))
-- [An initialized cluster](./1-initializing-a-k8s-cluster.md)
-- The [WordPress package created](./0-creating-a-zarf-package.md)
-
-## Deploying the WordPress package
-
-1. Use the `zarf package deploy` command to deploy the package you built in a the previous tutorial (see [prerequisites](#prerequisites)).
-
-
-
-:::note
-
-If you do not provide the path to the package as an argument to the `zarf package deploy` command, Zarf will prompt you asking for you to choose which package you want to deploy. You can use the `tab` key, to be prompted for available packages in the current working directory.
-
-
-
-By hitting 'tab', you can use the arrow keys to select which package you want to deploy. Since we are deploying the WordPress package in this tutorial, we will select that package and hit 'enter'.
-
-
-
-:::
-
-2. You will be presented with a chance to review the SBOMs for the package along with its definition followed by a series of prompts for each variable we setup in the [previous tutorial](./0-creating-a-zarf-package.md#setting-up-variables). To confirm package deployment press `y` then `enter` and input a value for each variable when prompted followed by `enter` for them as well.
-
-:::tip
-
-To accept a default value for a given variable, simply press the `enter` key. You can also set variables from the CLI with the `--set` flag, an environment variable, or a [config file](../2-the-zarf-cli/index.md#using-a-config-file-to-make-cli-command-flags-declarative).
-
-:::
-
-
-
-3. Because we included the connect services in the [previous tutorial](./0-creating-a-zarf-package.md#setting-up-a-zarf-connect-service) we can quickly test our package in a browser with `zarf connect wordpress-blog`.
-
-
-
-4. We can also explore the resources deployed by our package by running the `zarf tools monitor` command to start [`K9s`](../4-deploy-a-zarf-package/5-k9s-dashboard.md). Once you are done, hit `ctrl/control c` to exit.
-
-
-
-## Removal
-
-1. Use the `zarf package list` command to get a list of the installed packages. This will give you the name of the WordPress package to remove it.
-
-
-
-2. Use the `zarf package remove` command to remove the `wordpress` package. Don't forget the `--confirm` flag. Otherwise you'll receive an error.
-
-
-
-3. You can also use the `zarf package remove` command with the zarf package file, to remove the package. Again, don't forget the `--confirm` flag.
-
-
-
-The `wordpress` package has now been removed from your cluster.
-
-## Troubleshooting
-
-### Unable to connect to the Kubernetes cluster
-
-
-
-:::info Remediation
-
-If you receive this error, either you don't have a Kubernetes cluster, your cluster is down, or your cluster is unreachable.
-
-1. Check your kubectl configuration, then try again. For more information about kubectl configuration see [Configure Access to Multiple Clusters](https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) from the Kubernetes documentation.
-
-If you need to setup a cluster, you can perform the following.
-
-1. Deploy a Kubernetes cluster with the [Creating a K8s Cluster with Zarf](./5-creating-a-k8s-cluster-with-zarf.md) tutorial.
-2. Perform the [Initialize a cluster](./1-initializing-a-k8s-cluster.md) tutorial.
-
-After that you can try deploying the package again.
-
-:::
-
-### Secrets "zarf-state" not found
-
-
-
-:::info Remediation
-
-If you receive this error when zarf is attempting to deploy a package, this means you have not initialized the kubernetes cluster. This is one of the prerequisites for this tutorial. Perform the [Initialize a cluster](./1-initializing-a-k8s-cluster.md) tutorial, then try again.
-
-:::
diff --git a/docs/5-zarf-tutorials/4-add-logging.md b/docs/5-zarf-tutorials/4-add-logging.md
deleted file mode 100644
index dffb35ea89..0000000000
--- a/docs/5-zarf-tutorials/4-add-logging.md
+++ /dev/null
@@ -1,114 +0,0 @@
-# Add Logging to a Cluster
-
-## Introduction
-
-In this tutorial, we are going to show how you can use a Zarf component to inject zero-config, centralized logging into your Zarf cluster.
-
-More specifically, you'll be adding a [Promtail / Loki / Grafana (PLG)](https://github.com/grafana/loki) stack to the [Retro Arcade Tutorial](./3-deploy-a-retro-arcade.md) by installing Zarf's "logging" component.
-
-## System Requirements
-
-- You'll need an internet connection to grab the Zarf Init Package if it's not already on your machine.
-
-## Prerequisites
-
-Prior to this tutorial you'll want to have a working cluster with Zarf initialized.
-
-- Zarf binary installed on your $PATH: ([Installing Zarf](../1-getting-started/index.md#installing-zarf))
-- [Initialize a cluster](./1-initializing-a-k8s-cluster.md).
-- Perform the [Retro Arcade Tutorial](./3-deploy-a-retro-arcade.md).
-
-## Youtube Tutorial
-[](https://youtu.be/FYkafs1idlQ "Add Logging to an existing Zarf Cluster with Zarf Init")
-
-## Installing the Logging Component
-
-1. Run the `zarf init` command on your cluster.
-
-```sh
-$ zarf init
-```
-
-2. When prompted to deploy the package select `y` for Yes, then hit the `enter`
-key. When prompted to deploy the logging component select `y` for Yes, then hit the `enter` key.
-
-
-
-4. You can automatically accept the logging component, and confirm the package using the `--confirm` and `--components` flags.
-
-
-
-### Connecting to the Logging Component
-
-#### Note the Credentials
-
-1. Review the `zarf init` command output for the following:
-
-
-
-You should see a section for `Logging`. You will need these credentials later on.
-
-## Deploy the Retro Arcade Tutorial
-
-1. If you haven't already in the prerequisites, deploy the [Retro Arcade Tutorial](./3-deploy-a-retro-arcade.md).
-
-## Check the logs
-
-:::note
-
-Because Doom may be freshly installed it is recommended to refresh the page a few times to generate more log traffic to view in Grafana
-
-:::
-
-
-### Log into Grafana
-
-To open Grafana you can use the `zarf connect logging` command.
-
-You'll be redirected the `/login` page where you have to sign in with the Grafana credentials you saved [in a previous step](#note-the-credentials).
-
-
-
-Once you've successfully logged in go to:
-
-1. The "Explore" page (Button on the left that looks like a compass)
-2. Select `Loki` in the dropdown, and then
-3. Enter `{app="game"}` into the Log Browser query input field
-
-
-
-Submit that query and you'll get back a dump of all the game pod logs that Loki has collected.
-
-
-
-## Removal
-
-1. Use the `zarf package list` command to get a list of the installed packages and their components. This will give you the name of the init package and the logging component to remove it.
-
-
-
-2. Use the `zarf package remove` command to remove the `logging` component from the init package. Don't forget the `--confirm` flag. Otherwise you'll receive an error.
-
-
-
-
-## Troubleshooting
-
-### Unable to connect to the Kubernetes cluster.
-
-
-
-:::info Remediation
-
-If you receive this error, either you don't have a Kubernetes cluster, your cluster is down, or your cluster is unreachable.
-
-1. Check your kubectl configuration, then try again. For more information about kubectl configuration see [Configure Access to Multiple Clusters](https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) from the Kubernetes documentation.
-
-If you need to setup a cluster, you can perform the following.
-
-1. Deploy a Kubernetes cluster with the [Creating a K8s Cluster with Zarf](./5-creating-a-k8s-cluster-with-zarf.md) tutorial.
-2. Perform the [Initialize a cluster](./1-initializing-a-k8s-cluster.md) tutorial.
-
-After that you can try deploying the package again.
-
-:::
diff --git a/docs/5-zarf-tutorials/_category_.json b/docs/5-zarf-tutorials/_category_.json
deleted file mode 100644
index 78e8d1dd09..0000000000
--- a/docs/5-zarf-tutorials/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "position": 6,
- "label": "Zarf Tutorials"
-}
diff --git a/docs/9-roadmap.md b/docs/9-roadmap.md
deleted file mode 100644
index 8e97e9690a..0000000000
--- a/docs/9-roadmap.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-sidebar_position: 9
----
-
-# Roadmap
-
-The project roadmap for Zarf is hosted on a [GitHub Project Board](https://github.com/orgs/defenseunicorns/projects/1) that tracks the issues the Zarf team is working along with future work we are prioritizing.
-
-If you would like to add bug reports or feature requests, please [add an issue](https://github.com/defenseunicorns/zarf/issues) to the GitHub repository under the appropriate template. If you have a more general question about a feature, feel free to ask the team in the [Zarf Kubernetes Slack Channel](https://kubernetes.slack.com/archives/C03B6BJAUJ3).
-
-We also accept contributions from the community (regardless of where a particular bug or feature is on the roadmap), so feel free to read our [contributing guidelines](./12-contribute-to-zarf/1-contributor-guide.md) and [submit a PR](https://github.com/defenseunicorns/zarf/pulls)! You can also ask any development related questions in the [Zarf Dev Kubernetes Slack Channel](https://kubernetes.slack.com/archives/C03BP9Z3CMA).
-
-## Feature Stability
-
-Zarf has three levels of feature stability that are defined below but generally follow existing Kubernetes conventions. These communicate how a feature may change in the future as well as expectations for [*ilities](https://en.wiktionary.org/wiki/ility) like documentation.
-
-### `alpha`
-
-Alpha features act as early previews for things that are being considered for inclusion into Zarf and:
-
- - they are very likely to have breaking changes (or be removed entirely) in future versions of Zarf
- - they will have limited documentation beyond autogenerated CLI and schema documentation (questions should be directed to the [Zarf team](https://kubernetes.slack.com/archives/C03B6BJAUJ3))
- - they will have limited testing and are only recommended for use cases where the risk of instability is acceptable
-
-### `beta`
-
-Beta features are newer features that are being prepared to eventually become stable features and:
-
- - they may introduce breaking changes before release, but will include any applicable workarounds
- - they will have documentation beyond autogenerated docs, but it won't be fully complete
- - they will have tests that cover their core features, but not covering every flavor of environment
-
-### `stable`
-
-Stable features are features that the Zarf team has committed to maintaining stability for and:
-
- - they will have backwards compatibility shims introduced in lieu of breaking changes
- - they will have autogenerated docs, tutorials/tutorial mentions, examples, and core docs
- - they will have tests that cover the feature which will run across all tested environments
-
-:::note
-
-While Zarf is pre-General Availability (see below) the above feature stability guidelines should be considered notionally what our expectations are for different Zarf features. There may be individual cases where *ilities are not met as we work to shore things up for GA.
-
-:::
-
-## General Availability (GA) Release
-
-Right now, Zarf itself is still in its 'beta' phase. We are working on some final things before we release the official 1.0 General Availability (GA) release. The work still needed for the GA release can be found in our issues with [this filter](https://github.com/defenseunicorns/zarf/issues?q=is%3Aopen+is%3Aissue+label%3Aga).
-
-We are currently targeting Q4 2023 to have Zarf be generally available and will be pushing weekly releases until then to add necessary features and fix bugs as well as improve docs, architecture and test coverage behind the scenes.
diff --git a/examples/.gitignore b/examples/.gitignore
deleted file mode 100644
index b7beff54c5..0000000000
--- a/examples/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-sync/
diff --git a/examples/README.md b/examples/README.md
deleted file mode 100644
index edd2688618..0000000000
--- a/examples/README.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-sidebar_position: 7
----
-
-import DocCardList from '@theme/DocCardList';
-import {useCurrentSidebarCategory} from '@docusaurus/theme-common';
-
-# Package Examples
-
-The Zarf examples demonstrate different ways to utilize Zarf in your environment. All of these examples follow the same general release pattern and assume an offline / air-gapped deployment target.
-
-To build and deploy a demo, change directories to the example you want to try and run:
-
-```bash
-cd # This should be whatever example you want to try (i.e. game)
-zarf package create # This will create the zarf package
-zarf package deploy # This will prompt you to deploy the created zarf package
-```
-
-:::caution
-
-Examples are for demo purposes only and are not meant for production use, they exist to demo various ways to use Zarf. Modifying examples to fit production use is possible but requires additional configuration, time, and Kubernetes knowledge.
-
-Examples also utilize software pulled from multiple sources and _some_ of them require authenticated access. Check the examples themselves for the specific accounts / logins required.
-
-:::
-
-
diff --git a/examples/argocd/README.md b/examples/argocd/README.md
deleted file mode 100644
index 0cb4c13e8d..0000000000
--- a/examples/argocd/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-import ExampleYAML from "@site/src/components/ExampleYAML";
-
-# ArgoCD (with Podinfo)
-
-This example demonstrates how to use ArgoCD with Zarf to deploy the `stefanprodan/podinfo` app using GitOps.
-
-It uses a vanilla configuration of ArgoCD with upstream containers.
-
-If you want to learn more about how Zarf handles `git` repositories, see the [git-data](../git-data/) example.
-
-## `zarf.yaml` {#zarf.yaml}
-
-:::info
-
-To view the example in its entirety, select the `Edit this page` link below the article and select the parent folder.
-
-:::
-
-
diff --git a/examples/argocd/baseline/values.yaml b/examples/argocd/baseline/values.yaml
index 8cb7ef682f..94f552e314 100644
--- a/examples/argocd/baseline/values.yaml
+++ b/examples/argocd/baseline/values.yaml
@@ -14,3 +14,7 @@ configs:
url: https://github.com/stefanprodan/podinfo.git
username: ""
password: ""
+
+redis:
+ image:
+ repository: docker.io/library/redis
diff --git a/examples/argocd/zarf.yaml b/examples/argocd/zarf.yaml
index b136147826..8c54846582 100644
--- a/examples/argocd/zarf.yaml
+++ b/examples/argocd/zarf.yaml
@@ -8,20 +8,23 @@ components:
required: true
charts:
- name: argo-cd
- version: 5.38.1
+ version: 5.54.0
namespace: argocd
url: https://argoproj.github.io/argo-helm
releaseName: argocd-baseline
valuesFiles:
- baseline/values.yaml
images:
- - quay.io/argoproj/argocd:v2.7.7
- - public.ecr.aws/docker/library/redis:7.0.11-alpine
+ - docker.io/library/redis:7.0.15-alpine
+ - quay.io/argoproj/argocd:v2.9.6
+ # Cosign artifacts for images - argocd - argocd-helm-chart
+ - quay.io/argoproj/argocd:sha256-2dafd800fb617ba5b16ae429e388ca140f66f88171463d23d158b372bb2fae08.sig
+ - quay.io/argoproj/argocd:sha256-2dafd800fb617ba5b16ae429e388ca140f66f88171463d23d158b372bb2fae08.att
- name: argocd-apps
required: true
charts:
- name: argocd-apps
- version: 1.3.0
+ version: 1.6.1
namespace: podinfo
url: https://argoproj.github.io/argo-helm
releaseName: argocd-apps
@@ -42,3 +45,12 @@ components:
name: app.kubernetes.io/name=apps-podinfo
namespace: podinfo
condition: ready
+
+# YAML keys starting with `x-` are custom keys that are ignored by the Zarf CLI
+# The `x-mdx` key is used to render the markdown content for https://docs.zarf.dev/ref/examples
+x-mdx: |
+ This example demonstrates how to use ArgoCD with Zarf to deploy the `stefanprodan/podinfo` app using GitOps.
+
+ It uses a vanilla configuration of ArgoCD with upstream containers.
+
+ To learn more about how Zarf handles `git` repositories, see the [Git Repositories section](/ref/components/#git-repositories) of the package components documentation.
diff --git a/examples/big-bang/README.md b/examples/big-bang/README.md
deleted file mode 100644
index dfd371fd80..0000000000
--- a/examples/big-bang/README.md
+++ /dev/null
@@ -1,42 +0,0 @@
-import Properties from '@site/src/components/SchemaItemProperties';
-import ExampleYAML from '@site/src/components/ExampleYAML';
-
-# Big Bang
-
-This package deploys [Big Bang](https://repo1.dso.mil/platform-one/big-bang/bigbang) using the Zarf `bigbang` extension.
-
-The `bigbang` noun sits within the `extensions` specification of Zarf and provides the following configuration:
-
-
-
-To see a tutorial for the creation and deployment of this package see the [Big Bang Tutorial](../../docs/5-zarf-tutorials/6-big-bang.md).
-
-## `zarf.yaml` {#zarf.yaml}
-
-:::info
-
-To view the example in its entirety, select the `Edit this page` link below the article and select the parent folder.
-
-:::
-
-
-
-:::caution
-
-`valuesFiles` are processed in the order provided with Zarf adding an initial values file to populate registry and git server credentials as the first file. Including credential `values` (even empty ones) will override these values. This can be used to our advantage however for things like YOLO mode as described below.
-
-:::
-
-## Big Bang YOLO Mode Support
-
-The Big Bang extension also supports YOLO mode, provided that you add your own credentials for the image registry. This is accomplished below with the `provision-flux-credentials` component and the `credentials.yaml` values file which allows images to be pulled from [registry1.dso.mil](https://registry1.dso.mil). We demonstrate providing account credentials via Zarf Variables, but there are other ways to populate the data in `private-registry.yaml`.
-
-You can learn about YOLO mode in the [FAQ](../../docs/8-faq.md#what-is-yolo-mode-and-why-would-i-use-it) or the [YOLO mode example](../yolo/README.md).
-
-:::info
-
-To view the example in its entirety, select the `Edit this page` link below the article and select the parent folder, then select the `yolo` folder.
-
-:::
-
-
diff --git a/examples/big-bang/config/neuvector.yaml b/examples/big-bang/config/neuvector.yaml
index e7ea4f7707..d804274901 100644
--- a/examples/big-bang/config/neuvector.yaml
+++ b/examples/big-bang/config/neuvector.yaml
@@ -1,4 +1,4 @@
-# If running in k3s, this is needed for Neuvector to start properly
+# If running in k3s, this is needed for Neuvector to start properly
neuvector:
values:
k3s:
diff --git a/examples/big-bang/yolo/zarf.yaml b/examples/big-bang/yolo/zarf.yaml
index d19c8a1d7d..80caf3bfd1 100644
--- a/examples/big-bang/yolo/zarf.yaml
+++ b/examples/big-bang/yolo/zarf.yaml
@@ -4,7 +4,7 @@ metadata:
name: yolo-big-bang
description: Deploy Big Bang Core in YOLO mode
# renovate: datasource=gitlab-releases depName=big-bang/bigbang versioning=semver registryUrl=https://repo1.dso.mil/
- version: 2.5.0
+ version: 2.19.2
url: https://p1.dso.mil/products/big-bang
architecture: amd64
yolo: true
@@ -33,7 +33,7 @@ components:
extensions:
bigbang:
# renovate: datasource=gitlab-releases depName=big-bang/bigbang versioning=semver registryUrl=https://repo1.dso.mil/
- version: 2.5.0
+ version: 2.19.2
valuesFiles:
- credentials.yaml
- ../config/ingress.yaml
diff --git a/examples/big-bang/zarf.yaml b/examples/big-bang/zarf.yaml
index 48755965cd..534ebd0ea4 100644
--- a/examples/big-bang/zarf.yaml
+++ b/examples/big-bang/zarf.yaml
@@ -3,7 +3,7 @@ metadata:
name: big-bang-example
description: Deploy Big Bang Core
# renovate: datasource=gitlab-releases depName=big-bang/bigbang versioning=semver registryUrl=https://repo1.dso.mil/
- version: 2.5.0
+ version: 2.19.2
url: https://p1.dso.mil/products/big-bang
# Big Bang / Iron Bank are only amd64
architecture: amd64
@@ -44,7 +44,7 @@ components:
extensions:
bigbang:
# renovate: datasource=gitlab-releases depName=big-bang/bigbang versioning=semver registryUrl=https://repo1.dso.mil/
- version: 2.5.0
+ version: 2.19.2
valuesFiles:
# Istio configs
- config/ingress.yaml
@@ -65,3 +65,35 @@ components:
namespace: zarf
files:
- virtualservices/gitea.yaml
+
+# YAML keys starting with `x-` are custom keys that are ignored by the Zarf CLI
+# The `x-mdx` key is used to render the markdown content for https://docs.zarf.dev/ref/examples
+x-mdx: |
+ import Properties from "@components/SchemaItemProperties.astro";
+
+ This package deploys [Big Bang](https://repo1.dso.mil/platform-one/big-bang/bigbang) using the Zarf `bigbang` extension.
+
+ The `bigbang` noun sits within the `extensions` specification of Zarf and provides the following configuration:
+
+
+
+ To see a tutorial for the creation and deployment of this package see the [Big Bang Tutorial](/tutorials/5-big-bang/).
+
+ :::caution
+
+ `valuesFiles` are processed in the order provided with Zarf adding an initial values file to populate registry
+ and git server credentials as the first file. Including credential `values` (even empty ones) will override
+ these values. This can be used to our advantage however for things like YOLO mode as described below.
+
+ :::
+
+ ## Big Bang YOLO Mode Support
+
+ The Big Bang extension also supports YOLO mode, provided that you add your own credentials for the image registry.
+ This is accomplished below with the `provision-flux-credentials` component and the `credentials.yaml` values file
+ which allows images to be pulled from [registry1.dso.mil](https://registry1.dso.mil). We demonstrate providing account
+ credentials via Zarf Variables, but there are other ways to populate the data in `private-registry.yaml`.
+
+ You can learn about YOLO mode in the [FAQ](/faq#what-is-yolo-mode-and-why-would-i-use-it) or the [YOLO mode example](/ref/examples/yolo/).
+
+ [Big Bang YOLO Mode Example](https://github.com/defenseunicorns/zarf/tree/main/examples/big-bang/yolo).
diff --git a/examples/component-actions/README.md b/examples/component-actions/README.md
deleted file mode 100644
index d746c05ffe..0000000000
--- a/examples/component-actions/README.md
+++ /dev/null
@@ -1,23 +0,0 @@
-import ExampleYAML from '@site/src/components/ExampleYAML';
-
-# Component Actions
-
-:::note
-
-Component Actions have replaced Component Scripts. Zarf will still read `scripts` entries, but will convert them to `actions`. Component Scripts will be removed in a future release. Please update your package configurations to use Component Actions instead.
-
-:::
-
-This example demonstrates how to define actions within your package that can run either on `zarf package create`, `zarf package deploy` or `zarf package remove`. These actions will be executed with the context that the Zarf binary is executed with.
-
-For more details on component actions, see the [component actions](../../docs/3-create-a-zarf-package/7-component-actions.md) documentation.
-
-## `zarf.yaml` {#zarf.yaml}
-
-:::info
-
-To view the example in its entirety, select the `Edit this page` link below the article and select the parent folder.
-
-:::
-
-
diff --git a/examples/component-actions/zarf.yaml b/examples/component-actions/zarf.yaml
index 357c37a184..df897d0d99 100644
--- a/examples/component-actions/zarf.yaml
+++ b/examples/component-actions/zarf.yaml
@@ -37,7 +37,7 @@ components:
- thing=stuff
# maxRetries is the number of times to retry the action if it fails
maxRetries: 0
- # maxTotalSeconds is the maximum amount of times the action can run before it is killed, including retries
+ # maxTotalSeconds is the maximum amount of times the action can run before it is killed, over all retries
maxTotalSeconds: 30
# mute determine if actions output should be printed to the console
mute: false
@@ -117,7 +117,7 @@ components:
- name: SNAKE_SOUND
# marks this variable as sensitive to prevent it from being output in the Zarf log
sensitive: true
- # autoIndent tells Zarf to maintain spacing for any newlines when templating into a yaml file
+ # autoIndent tells Zarf to maintain spacing for any newlines when templating into a yaml file
autoIndent: true
# onSuccess will only run if steps in this component are successful
onSuccess:
@@ -145,12 +145,10 @@ components:
actions:
# runs during "zarf package deploy"
onDeploy:
- # defaults allow you to specify default values for the actions in that acitonSet
+ # defaults allow you to specify default values for the actions in that actionSet
defaults:
- # maxTotalSeconds is the maximum amount of time the action can run before it is killed, including retries
+ # maxTotalSeconds is the maximum amount of time the action can run before it is killed, over all retries
maxTotalSeconds: 1
- # maxRetries is the maximum number of times the action will be retried on failure
- maxRetries: 3
before:
# this action will fail after 1 second
- cmd: sleep 10
@@ -187,13 +185,13 @@ components:
actions:
onCreate:
after:
- - description: Cloudflare 1.1.1.1 site to be available
+ - description: Github.com to be available
maxTotalSeconds: 15
wait:
# wait for a network address to return a 200 OK response
network:
protocol: https
- address: 1.1.1.1
+ address: github.com
code: 200
- name: on-deploy-with-wait-action
@@ -213,3 +211,26 @@ components:
kind: configmap
name: simple-configmap
namespace: zarf
+
+ - name: on-deploy-immediate-failure
+ description: This component will fail on the first error instead of continuing execution
+ # the default for multi-line commands is set -e
+ actions:
+ onDeploy:
+ after:
+ - cmd: |
+ bad_cmd
+ echo "this text shouldn't be printed"
+
+# YAML keys starting with `x-` are custom keys that are ignored by the Zarf CLI
+# The `x-mdx` key is used to render the markdown content for https://docs.zarf.dev/ref/examples
+x-mdx: |
+ :::caution
+
+ Component Actions have replaced Component Scripts. Zarf will still read `scripts` entries, but will convert them to `actions`. Component Scripts will be removed in a future release. Please update your package configurations to use Component Actions instead.
+
+ :::
+
+ This example demonstrates how to define actions within your package that can run either on `zarf package create`, `zarf package deploy` or `zarf package remove`. These actions will be executed with the context that the Zarf binary is executed with.
+
+ For more details on component actions, see the [component actions](/ref/actions/) documentation.
diff --git a/examples/component-choice/README.md b/examples/component-choice/README.md
deleted file mode 100644
index 21adba10ba..0000000000
--- a/examples/component-choice/README.md
+++ /dev/null
@@ -1,25 +0,0 @@
-import ExampleYAML from "@site/src/components/ExampleYAML";
-
-# Component Choice
-
-This example demonstrates how to define packages that can be chosen by the user on `zarf package deploy`. This is done through the `group` key inside of the component specification that defines a group of components a user can select from.
-
-A package creator can also use the `default` key to specify which component will be chosen if a user uses the `--confirm` flag.
-
-:::note
-
-A user can only select a single component in a component group and a package creator can specify only a single default
-
-A component in a component `group` cannot be marked as being `required`
-
-:::
-
-## `zarf.yaml` {#zarf.yaml}
-
-:::info
-
-To view the example in its entirety, select the `Edit this page` link below the article and select the parent folder.
-
-:::
-
-
diff --git a/examples/component-choice/blank-file.txt b/examples/component-choice/blank-file.txt
index 7fd28ffa23..f2d7a38937 100644
--- a/examples/component-choice/blank-file.txt
+++ b/examples/component-choice/blank-file.txt
@@ -1 +1 @@
-Just some simple file....
\ No newline at end of file
+Just some simple file....
diff --git a/examples/component-choice/zarf.yaml b/examples/component-choice/zarf.yaml
index 9c263ca7ba..ed8d4b1c76 100644
--- a/examples/component-choice/zarf.yaml
+++ b/examples/component-choice/zarf.yaml
@@ -16,3 +16,12 @@ components:
files:
- source: blank-file.txt
target: second-choice-file.txt
+
+# YAML keys starting with `x-` are custom keys that are ignored by the Zarf CLI
+# The `x-mdx` key is used to render the markdown content for https://docs.zarf.dev/ref/examples
+x-mdx: |
+ :::caution
+
+ Component Choice is currently a [Deprecated Feature](/roadmap#deprecated). This feature will be removed in Zarf v1.0.0. Please migrate any existing packages you may have that utilize it. In doing so you may want to consider [Package Flavors](/ref/examples/package-flavors/) as an alternative.
+
+ :::
diff --git a/examples/component-webhooks/.eslintrc.json b/examples/component-webhooks/.eslintrc.json
new file mode 100644
index 0000000000..0a2ea6e8a7
--- /dev/null
+++ b/examples/component-webhooks/.eslintrc.json
@@ -0,0 +1,24 @@
+{
+ "env": {
+ "browser": false,
+ "es2021": true
+ },
+ "extends": [
+ "eslint:recommended",
+ "plugin:@typescript-eslint/recommended"
+ ],
+ "parser": "@typescript-eslint/parser",
+ "parserOptions": {
+ "ecmaVersion": 2022
+ },
+ "plugins": [
+ "@typescript-eslint"
+ ],
+ "ignorePatterns": [
+ "node_modules",
+ "dist",
+ "hack",
+ "capabilities/zarf-types.ts"
+ ],
+ "root": true
+}
diff --git a/examples/component-webhooks/.gitignore b/examples/component-webhooks/.gitignore
new file mode 100644
index 0000000000..f06235c460
--- /dev/null
+++ b/examples/component-webhooks/.gitignore
@@ -0,0 +1,2 @@
+node_modules
+dist
diff --git a/examples/component-webhooks/.prettierrc b/examples/component-webhooks/.prettierrc
new file mode 100644
index 0000000000..7c4c51324c
--- /dev/null
+++ b/examples/component-webhooks/.prettierrc
@@ -0,0 +1,13 @@
+{
+ "arrowParens": "avoid",
+ "bracketSameLine": false,
+ "bracketSpacing": true,
+ "embeddedLanguageFormatting": "auto",
+ "insertPragma": false,
+ "printWidth": 80,
+ "quoteProps": "as-needed",
+ "requirePragma": false,
+ "semi": true,
+ "tabWidth": 2,
+ "useTabs": false
+}
diff --git a/examples/component-webhooks/capabilities/hook.ts b/examples/component-webhooks/capabilities/hook.ts
new file mode 100644
index 0000000000..03ea35856f
--- /dev/null
+++ b/examples/component-webhooks/capabilities/hook.ts
@@ -0,0 +1,149 @@
+import { Capability, a, Log, K8s, kind } from "pepr";
+import { DeployedPackage } from "./zarf-types";
+
+/**
+ * The Webhook Capability is an example capability to demonstrate using webhooks to interact with Zarf package deployments.
+ * To test this capability you run `pepr dev`and then deploy a zarf package!
+ */
+export const Webhook = new Capability({
+ name: "example-webhook",
+ description:
+ "A simple example capability to show how webhooks work with Zarf package deployments.",
+ namespaces: ["zarf"],
+});
+
+const webhookName = "test-webhook";
+
+const { When } = Webhook;
+
+When(a.Secret)
+ .IsCreatedOrUpdated()
+ .InNamespace("zarf")
+ .WithLabel("package-deploy-info")
+ .Mutate(request => {
+ const secret = request.Raw;
+ let secretData: DeployedPackage;
+ let secretString: string;
+ let manuallyDecoded = false;
+
+ // Pepr does not decode/encode non-ASCII characters in secret data: https://github.com/defenseunicorns/pepr/issues/219
+ try {
+ secretString = atob(secret.data.data);
+ manuallyDecoded = true;
+ } catch (err) {
+ secretString = secret.data.data;
+ }
+
+ // Parse the secret object
+ try {
+ secretData = JSON.parse(secretString);
+ } catch (err) {
+ throw new Error(`Failed to parse the secret.data.data: ${err}`);
+ }
+
+ for (const deployedComponent of secretData?.deployedComponents ?? []) {
+ if (deployedComponent.status === "Deploying") {
+ Log.info(
+ `The component ${deployedComponent.name} is currently deploying`,
+ );
+
+ const componentWebhook =
+ secretData.componentWebhooks?.[deployedComponent?.name]?.[
+ webhookName
+ ];
+
+ // Check if the component has a webhook running for the current package generation
+ if (componentWebhook?.observedGeneration === secretData.generation) {
+ Log.debug(
+ `The component ${deployedComponent.name} has already had a webhook executed for it. Not executing another.`,
+ );
+ } else {
+ // Seed the componentWebhooks map/object
+ if (!secretData.componentWebhooks) {
+ secretData.componentWebhooks = {};
+ }
+
+ // Update the secret noting that the webhook is running for this component
+ secretData.componentWebhooks[deployedComponent.name] = {
+ "test-webhook": {
+ name: webhookName,
+ status: "Running",
+ observedGeneration: secretData.generation,
+ },
+ };
+
+ // Call an async function that simulates background processing and then updates the secret with the new status when it's complete
+ sleepAndChangeStatus(secret.metadata.name, deployedComponent.name);
+ }
+ }
+ }
+
+ if (manuallyDecoded === true) {
+ secret.data.data = btoa(JSON.stringify(secretData));
+ } else {
+ secret.data.data = JSON.stringify(secretData);
+ }
+ });
+
+// sleepAndChangeStatus sleeps for the specified duration and changes the status of the 'test-webhook' to 'Succeeded'.
+async function sleepAndChangeStatus(secretName: string, componentName: string) {
+ await sleep(10);
+
+ const ns = "zarf";
+
+ let secret: a.Secret;
+
+ // Fetch the package secret
+ try {
+ secret = await K8s(kind.Secret).InNamespace(ns).Get(secretName);
+ } catch (err) {
+ Log.error(
+ `Error: Failed to get package secret '${secretName}' in namespace '${ns}': ${JSON.stringify(
+ err,
+ )}`,
+ );
+ }
+
+ const secretString = atob(secret.data.data);
+ const secretData: DeployedPackage = JSON.parse(secretString);
+
+ // Update the webhook status if the observedGeneration matches
+ const componentWebhook =
+ secretData.componentWebhooks[componentName]?.[webhookName];
+
+ if (componentWebhook?.observedGeneration === secretData.generation) {
+ componentWebhook.status = "Succeeded";
+
+ secretData.componentWebhooks[componentName][webhookName] = componentWebhook;
+ }
+
+ secret.data.data = btoa(JSON.stringify(secretData));
+
+ // Update the status in the package secret
+ // Use Server-Side force apply to forcefully take ownership of the package secret data.data field
+ // Doing a Server-Side apply without the force option will result in a FieldManagerConflict error due to Zarf owning the object.
+ try {
+ await K8s(kind.Secret).Apply(
+ {
+ metadata: {
+ name: secretName,
+ namespace: ns,
+ },
+ data: {
+ data: secret.data.data,
+ },
+ },
+ { force: true },
+ );
+ } catch (err) {
+ Log.error(
+ `Error: Failed to update package secret '${secretName}' in namespace '${ns}': ${JSON.stringify(
+ err,
+ )}`,
+ );
+ }
+}
+
+function sleep(seconds: number) {
+ return new Promise(resolve => setTimeout(resolve, seconds * 1000));
+}
diff --git a/src/ui/lib/api-types.ts b/examples/component-webhooks/capabilities/zarf-types.ts
similarity index 61%
rename from src/ui/lib/api-types.ts
rename to examples/component-webhooks/capabilities/zarf-types.ts
index cbe6e373da..4ead23ab96 100644
--- a/src/ui/lib/api-types.ts
+++ b/examples/component-webhooks/capabilities/zarf-types.ts
@@ -1,215 +1,59 @@
// To parse this data:
//
-// import { Convert, APITypes } from "./file";
+// import { Convert, ZarfTypes } from "./file";
//
-// const aPITypes = Convert.toAPITypes(json);
+// const zarfTypes = Convert.toZarfTypes(json);
//
// These functions will throw an error if the JSON doesn't
// match the expected interface, even if the JSON is valid.
-export interface APITypes {
- apiConnections: { [key: string]: APIDeployedPackageConnection[] };
- apiPackageSBOM: APIPackageSBOM;
- apiZarfDeployPayload: APIZarfDeployPayload;
- apiZarfPackage: APIZarfPackage;
- apiZarfPackageConnection: APIDeployedPackageConnection;
- apiZarfPackageConnections: APIDeployedPackageConnection[];
- clusterSummary: ClusterSummary;
- connectStrings: { [key: string]: ConnectString };
- deployedPackage: DeployedPackage;
- zarfCommonOptions: ZarfCommonOptions;
- zarfCreateOptions: ZarfCreateOptions;
- zarfInitOptions: ZarfInitOptions;
- zarfPackage: ZarfPackage;
- zarfPackageOptions: ZarfPackageOptions;
- zarfState: ZarfState;
+export interface ZarfTypes {
+ DeployedPackage: DeployedPackage;
+ ZarfPackage: Data;
+ ZarfState: ZarfState;
}
-export interface APIDeployedPackageConnection {
- name: string;
- url?: string;
-}
-
-export interface APIPackageSBOM {
- path: string;
- sboms: string[];
-}
-
-export interface APIZarfDeployPayload {
- initOpts?: ZarfInitOptions;
- packageOpts: ZarfPackageOptions;
-}
-
-export interface ZarfInitOptions {
- /**
- * Indicates if Zarf was initialized while deploying its own k8s cluster
- */
- applianceMode: boolean;
- /**
- * Information about the artifact registry Zarf is going to be using
- */
- artifactServer: ArtifactServerInfo;
- /**
- * Information about the repository Zarf is going to be using
- */
- gitServer: GitServerInfo;
- /**
- * Information about the container registry Zarf is going to be using
- */
- registryInfo: RegistryInfo;
- /**
- * StorageClass of the k8s cluster Zarf is initializing
- */
- storageClass: string;
-}
-
-/**
- * Information about the artifact registry Zarf is going to be using
- *
- * Information about the artifact registry Zarf is configured to use
- */
-export interface ArtifactServerInfo {
- /**
- * URL address of the artifact registry
- */
- address: string;
- /**
- * Indicates if we are using a artifact registry that Zarf is directly managing
- */
- internalServer: boolean;
- /**
- * Password of a user with push access to the artifact registry
- */
- pushPassword: string;
- /**
- * Username of a user with push access to the artifact registry
- */
- pushUsername: string;
+export interface DeployedPackage {
+ cliVersion: string;
+ componentWebhooks?: { [key: string]: { [key: string]: ComponentWebhookValue } };
+ connectStrings?: { [key: string]: ConnectStringValue };
+ data: Data;
+ deployedComponents: DeployedComponentElement[];
+ generation: number;
+ name: string;
}
-/**
- * Information about the repository Zarf is going to be using
- *
- * Information about the repository Zarf is configured to use
- */
-export interface GitServerInfo {
- /**
- * URL address of the git server
- */
- address: string;
- /**
- * Indicates if we are using a git server that Zarf is directly managing
- */
- internalServer: boolean;
- /**
- * Password of a user with pull-only access to the git repository. If not provided for an
- * external repository then the push-user is used
- */
- pullPassword: string;
- /**
- * Username of a user with pull-only access to the git repository. If not provided for an
- * external repository then the push-user is used
- */
- pullUsername: string;
- /**
- * Password of a user with push access to the git repository
- */
- pushPassword: string;
- /**
- * Username of a user with push access to the git repository
- */
- pushUsername: string;
+export interface ComponentWebhookValue {
+ name: string;
+ observedGeneration: number;
+ status: string;
+ waitDurationSeconds?: number;
}
-/**
- * Information about the container registry Zarf is going to be using
- *
- * Information about the container registry Zarf is configured to use
- */
-export interface RegistryInfo {
+export interface ConnectStringValue {
/**
- * URL address of the registry
- */
- address: string;
- /**
- * Indicates if we are using a registry that Zarf is directly managing
- */
- internalRegistry: boolean;
- /**
- * Nodeport of the registry. Only needed if the registry is running inside the kubernetes
- * cluster
- */
- nodePort: number;
- /**
- * Password of a user with pull-only access to the registry. If not provided for an external
- * registry than the push-user is used
- */
- pullPassword: string;
- /**
- * Username of a user with pull-only access to the registry. If not provided for an external
- * registry than the push-user is used
- */
- pullUsername: string;
- /**
- * Password of a user with push access to the registry
- */
- pushPassword: string;
- /**
- * Username of a user with push access to the registry
- */
- pushUsername: string;
- /**
- * Secret value that the registry was seeded with
- */
- secret: string;
-}
-
-export interface ZarfPackageOptions {
- /**
- * Comma separated list of optional components
- */
- optionalComponents: string;
- /**
- * Location where a Zarf package can be found
- */
- packagePath: string;
- /**
- * Location where the public key component of a cosign key-pair can be found
- */
- publicKeyPath: string;
- /**
- * Key-Value map of variable names and their corresponding values that will be used to
- * template manifests and files in the Zarf package
- */
- setVariables: { [key: string]: string };
- /**
- * Location where the public key component of a cosign key-pair can be found
+ * Descriptive text that explains what the resource you would be connecting to is used for
*/
- sGetKeyPath: string;
+ description: string;
/**
- * The SHA256 checksum of the package
+ * URL path that gets appended to the k8s port-forward result
*/
- shasum: string;
-}
-
-export interface APIZarfPackage {
- path: string;
- zarfPackage: ZarfPackage;
+ url: string;
}
-export interface ZarfPackage {
+export interface Data {
/**
* Zarf-generated package build data
*/
- build?: ZarfBuildData;
+ build?: Build;
/**
* List of components to deploy in this package
*/
- components: ZarfComponent[];
+ components: ComponentElement[];
/**
* Constant template values applied on deploy for K8s resources
*/
- constants?: ZarfPackageConstant[];
+ constants?: ConstantElement[];
/**
* The kind of Zarf package
*/
@@ -217,7 +61,7 @@ export interface ZarfPackage {
/**
* Package metadata
*/
- metadata?: ZarfMetadata;
+ metadata?: Metadata;
/**
* Variable template values applied on deploy for K8s resources
*/
@@ -227,7 +71,7 @@ export interface ZarfPackage {
/**
* Zarf-generated package build data
*/
-export interface ZarfBuildData {
+export interface Build {
/**
* The architecture this package was created on
*/
@@ -240,6 +84,15 @@ export interface ZarfBuildData {
* List of components that were not included in this package due to differential packaging
*/
differentialMissing?: string[];
+ /**
+ * Version of a previously built package used as the basis for creating this differential
+ * package
+ */
+ differentialPackageVersion?: string;
+ /**
+ * The flavor of Zarf used to build this package
+ */
+ flavor?: string;
/**
* The minimum version of Zarf that does not have breaking package structure changes
*/
@@ -248,11 +101,6 @@ export interface ZarfBuildData {
* Any migrations that have been run on this package
*/
migrations?: string[];
- /**
- * Map of components that were imported via OCI. The keys are OCI Package URLs and values
- * are the component names
- */
- OCIImportedComponents?: { [key: string]: string };
/**
* Any registry domains that were overridden on package create when pulling images
*/
@@ -275,15 +123,15 @@ export interface ZarfBuildData {
version: string;
}
-export interface ZarfComponent {
+export interface ComponentElement {
/**
* Custom commands to run at various stages of a package lifecycle
*/
- actions?: ZarfComponentActions;
+ actions?: Actions;
/**
* Helm charts to install during package deploy
*/
- charts?: ZarfChart[];
+ charts?: ChartElement[];
/**
* [Deprecated] Specify a path to a public key to validate signed online resources. This
* will be removed in Zarf v1.0.0.
@@ -292,7 +140,7 @@ export interface ZarfComponent {
/**
* Datasets to inject into a container in the target cluster
*/
- dataInjections?: ZarfDataInjection[];
+ dataInjections?: DataInjectionElement[];
/**
* Determines the default Y/N state for installing this component on package deploy
*/
@@ -304,13 +152,14 @@ export interface ZarfComponent {
/**
* Extend component functionality with additional features
*/
- extensions?: ZarfComponentExtensions;
+ extensions?: Extensions;
/**
* Files or folders to place on disk during package deployment
*/
- files?: ZarfFile[];
+ files?: FileElement[];
/**
- * Create a user selector field based on all components in the same group
+ * [Deprecated] Create a user selector field based on all components in the same group. This
+ * will be removed in Zarf v1.0.0. Consider using 'only.flavor' instead.
*/
group?: string;
/**
@@ -320,11 +169,11 @@ export interface ZarfComponent {
/**
* Import a component from another Zarf package
*/
- import?: ZarfComponentImport;
+ import?: Import;
/**
* Kubernetes manifests to be included in a generated Helm chart on package deploy
*/
- manifests?: ZarfManifest[];
+ manifests?: ManifestElement[];
/**
* The name of the component
*/
@@ -332,7 +181,7 @@ export interface ZarfComponent {
/**
* Filter when this component is included in package creation or deployment
*/
- only?: ZarfComponentOnlyTarget;
+ only?: Only;
/**
* List of git repos to include in the package
*/
@@ -345,25 +194,25 @@ export interface ZarfComponent {
* [Deprecated] (replaced by actions) Custom commands to run before or after package
* deployment. This will be removed in Zarf v1.0.0.
*/
- scripts?: DeprecatedZarfComponentScripts;
+ scripts?: Scripts;
}
/**
* Custom commands to run at various stages of a package lifecycle
*/
-export interface ZarfComponentActions {
+export interface Actions {
/**
* Actions to run during package creation
*/
- onCreate?: ZarfComponentActionSet;
+ onCreate?: OnCreate;
/**
* Actions to run during package deployment
*/
- onDeploy?: ZarfComponentActionSet;
+ onDeploy?: OnCreate;
/**
* Actions to run during package removal
*/
- onRemove?: ZarfComponentActionSet;
+ onRemove?: OnCreate;
}
/**
@@ -373,30 +222,30 @@ export interface ZarfComponentActions {
*
* Actions to run during package removal
*/
-export interface ZarfComponentActionSet {
+export interface OnCreate {
/**
* Actions to run at the end of an operation
*/
- after?: ZarfComponentAction[];
+ after?: AfterElement[];
/**
* Actions to run at the start of an operation
*/
- before?: ZarfComponentAction[];
+ before?: AfterElement[];
/**
* Default configuration for all actions in this set
*/
- defaults?: ZarfComponentActionDefaults;
+ defaults?: Defaults;
/**
* Actions to run if all operations fail
*/
- onFailure?: ZarfComponentAction[];
+ onFailure?: AfterElement[];
/**
* Actions to run if all operations succeed
*/
- onSuccess?: ZarfComponentAction[];
+ onSuccess?: AfterElement[];
}
-export interface ZarfComponentAction {
+export interface AfterElement {
/**
* The command to run. Must specify either cmd or wait for the action to do anything.
*/
@@ -435,20 +284,20 @@ export interface ZarfComponentAction {
* (onDeploy/cmd only) An array of variables to update with the output of the command. These
* variables will be available to all remaining actions and components in the package.
*/
- setVariables?: ZarfComponentActionSetVariable[];
+ setVariables?: SetVariableElement[];
/**
* (cmd only) Indicates a preference for a shell for the provided cmd to be executed in on
* supported operating systems
*/
- shell?: ZarfComponentActionShell;
+ shell?: Shell;
/**
* Wait for a condition to be met before continuing. Must specify either cmd or wait for the
* action. See the 'zarf tools wait-for' command for more info.
*/
- wait?: ZarfComponentActionWait;
+ wait?: Wait;
}
-export interface ZarfComponentActionSetVariable {
+export interface SetVariableElement {
/**
* Whether to automatically indent the variable's value (if multiline) when templating.
* Based on the number of chars before the start of ###ZARF_VAR_.
@@ -459,7 +308,12 @@ export interface ZarfComponentActionSetVariable {
*/
name: string;
/**
- * Whether to mark this variable as sensitive to not print it in the Zarf log
+ * An optional regex pattern that a variable value must match before a package deployment
+ * can continue.
+ */
+ pattern?: string;
+ /**
+ * Whether to mark this variable as sensitive to not print it in the log
*/
sensitive?: boolean;
/**
@@ -482,7 +336,7 @@ export enum Type {
* (cmd only) Indicates a preference for a shell for the provided cmd to be executed in on
* supported operating systems
*/
-export interface ZarfComponentActionShell {
+export interface Shell {
/**
* (default 'sh') Indicates a preference for the shell to use on macOS systems
*/
@@ -502,24 +356,24 @@ export interface ZarfComponentActionShell {
* Wait for a condition to be met before continuing. Must specify either cmd or wait for the
* action. See the 'zarf tools wait-for' command for more info.
*/
-export interface ZarfComponentActionWait {
+export interface Wait {
/**
* Wait for a condition to be met in the cluster before continuing. Only one of cluster or
* network can be specified.
*/
- cluster?: ZarfComponentActionWaitCluster;
+ cluster?: WaitCluster;
/**
* Wait for a condition to be met on the network before continuing. Only one of cluster or
* network can be specified.
*/
- network?: ZarfComponentActionWaitNetwork;
+ network?: Network;
}
/**
* Wait for a condition to be met in the cluster before continuing. Only one of cluster or
* network can be specified.
*/
-export interface ZarfComponentActionWaitCluster {
+export interface WaitCluster {
/**
* The condition or jsonpath state to wait for; defaults to exist
*/
@@ -542,7 +396,7 @@ export interface ZarfComponentActionWaitCluster {
* Wait for a condition to be met on the network before continuing. Only one of cluster or
* network can be specified.
*/
-export interface ZarfComponentActionWaitNetwork {
+export interface Network {
/**
* The address to wait for
*/
@@ -569,7 +423,7 @@ export enum Protocol {
/**
* Default configuration for all actions in this set
*/
-export interface ZarfComponentActionDefaults {
+export interface Defaults {
/**
* Working directory for commands (default CWD)
*/
@@ -594,21 +448,21 @@ export interface ZarfComponentActionDefaults {
* (cmd only) Indicates a preference for a shell for the provided cmd to be executed in on
* supported operating systems
*/
- shell?: ZarfComponentActionShell;
+ shell?: Shell;
}
-export interface ZarfChart {
+export interface ChartElement {
/**
- * The path to the chart in the repo if using a git repo instead of a helm repo
+ * (git repo only) The sub directory to the chart within a git repo
*/
gitPath?: string;
/**
- * The path to the chart folder
+ * The path to a local chart's folder or .tgz archive
*/
localPath?: string;
/**
- * The name of the chart to deploy; this should be the name of the chart as it is installed
- * in the helm repo
+ * The name of the chart within Zarf; note that this must be unique and does not need to be
+ * the same as the name in the chart repo
*/
name: string;
/**
@@ -620,26 +474,49 @@ export interface ZarfChart {
*/
noWait?: boolean;
/**
- * The name of the release to create; defaults to the name of the chart
+ * The name of the Helm release to create (defaults to the Zarf name of the chart)
*/
releaseName?: string;
+ /**
+ * The name of a chart within a Helm repository (defaults to the Zarf name of the chart)
+ */
+ repoName?: string;
/**
* The URL of the OCI registry, chart repository, or git repo where the helm chart is stored
*/
url?: string;
/**
* List of local values file paths or remote URLs to include in the package; these will be
- * merged together
+ * merged together when deployed
*/
valuesFiles?: string[];
+ /**
+ * [alpha] List of variables to set in the Helm chart
+ */
+ variables?: ChartVariable[];
/**
* The version of the chart to deploy; for git-based charts this is also the tag of the git
- * repo
+ * repo by default (when not using the '@' syntax for 'repos')
*/
version?: string;
}
-export interface ZarfDataInjection {
+export interface ChartVariable {
+ /**
+ * A brief description of what the variable controls
+ */
+ description: string;
+ /**
+ * The name of the variable
+ */
+ name: string;
+ /**
+ * The path within the Helm chart values where this variable applies
+ */
+ path: string;
+}
+
+export interface DataInjectionElement {
/**
* Compress the data before transmitting using gzip. Note: this requires support for
* tar/gzip locally and in the target image.
@@ -653,13 +530,13 @@ export interface ZarfDataInjection {
/**
* The target pod + container to inject the data into
*/
- target: ZarfContainerTarget;
+ target: Target;
}
/**
* The target pod + container to inject the data into
*/
-export interface ZarfContainerTarget {
+export interface Target {
/**
* The container name to target for data injection
*/
@@ -681,17 +558,17 @@ export interface ZarfContainerTarget {
/**
* Extend component functionality with additional features
*/
-export interface ZarfComponentExtensions {
+export interface Extensions {
/**
* Configurations for installing Big Bang and Flux in the cluster
*/
- bigbang?: BigBang;
+ bigbang?: Bigbang;
}
/**
* Configurations for installing Big Bang and Flux in the cluster
*/
-export interface BigBang {
+export interface Bigbang {
/**
* Optional paths to Flux kustomize strategic merge patch files
*/
@@ -714,7 +591,7 @@ export interface BigBang {
version: string;
}
-export interface ZarfFile {
+export interface FileElement {
/**
* (files only) Determines if the file should be made executable during package deploy
*/
@@ -745,7 +622,7 @@ export interface ZarfFile {
/**
* Import a component from another Zarf package
*/
-export interface ZarfComponentImport {
+export interface Import {
/**
* The name of the component to import from the referenced zarf.yaml
*/
@@ -760,7 +637,7 @@ export interface ZarfComponentImport {
url?: string;
}
-export interface ZarfManifest {
+export interface ManifestElement {
/**
* List of local K8s YAML files or remote URLs to deploy (in order)
*/
@@ -791,11 +668,16 @@ export interface ZarfManifest {
/**
* Filter when this component is included in package creation or deployment
*/
-export interface ZarfComponentOnlyTarget {
+export interface Only {
/**
* Only deploy component to specified clusters
*/
- cluster?: ZarfComponentOnlyCluster;
+ cluster?: OnlyCluster;
+ /**
+ * Only include this component when a matching '--flavor' is specified on 'zarf package
+ * create'
+ */
+ flavor?: string;
/**
* Only deploy component to specified OS
*/
@@ -805,7 +687,7 @@ export interface ZarfComponentOnlyTarget {
/**
* Only deploy component to specified clusters
*/
-export interface ZarfComponentOnlyCluster {
+export interface OnlyCluster {
/**
* Only create and deploy to clusters of the given architecture
*/
@@ -837,7 +719,7 @@ export enum LocalOS {
* [Deprecated] (replaced by actions) Custom commands to run before or after package
* deployment. This will be removed in Zarf v1.0.0.
*/
-export interface DeprecatedZarfComponentScripts {
+export interface Scripts {
/**
* Scripts to run after the component successfully deploys
*/
@@ -864,7 +746,7 @@ export interface DeprecatedZarfComponentScripts {
timeoutSeconds?: number;
}
-export interface ZarfPackageConstant {
+export interface ConstantElement {
/**
* Whether to automatically indent the variable's value (if multiline) when templating.
* Based on the number of chars before the start of ###ZARF_CONST_.
@@ -879,6 +761,11 @@ export interface ZarfPackageConstant {
* The name to be used for the constant
*/
name: string;
+ /**
+ * An optional regex pattern that a constant value must match before a package can be
+ * created.
+ */
+ pattern?: string;
/**
* The value to set for the constant during deploy
*/
@@ -896,7 +783,7 @@ export enum Kind {
/**
* Package metadata
*/
-export interface ZarfMetadata {
+export interface Metadata {
/**
* Checksum of a checksums.txt file that contains checksums all the layers within the
* package.
@@ -918,10 +805,6 @@ export interface ZarfMetadata {
* Link to package documentation when online
*/
documentation?: string;
- /**
- * An image URL to embed in this package (Reserved for future use in Zarf UI)
- */
- image?: string;
/**
* Name to identify this Zarf package
*/
@@ -973,12 +856,17 @@ export interface ZarfPackageVariable {
* The name to be used for the variable
*/
name: string;
+ /**
+ * An optional regex pattern that a variable value must match before a package deployment
+ * can continue.
+ */
+ pattern?: string;
/**
* Whether to prompt the user for input for this variable
*/
prompt?: boolean;
/**
- * Whether to mark this variable as sensitive to not print it in the Zarf log
+ * Whether to mark this variable as sensitive to not print it in the log
*/
sensitive?: boolean;
/**
@@ -988,95 +876,20 @@ export interface ZarfPackageVariable {
type?: Type;
}
-export interface ClusterSummary {
- distro: string;
- hasZarf: boolean;
- k8sRevision: string;
- rawConfig: RawConfigClass;
- reachable: boolean;
- zarfState: ZarfState;
-}
-
-export interface RawConfigClass {
- apiVersion?: string;
- clusters: { [key: string]: Cluster };
- contexts: { [key: string]: Context };
- "current-context": string;
- extensions?: { [key: string]: any[] | boolean | number | number | { [key: string]: any } | null | string };
- kind?: string;
- preferences: Preferences;
- users: { [key: string]: AuthInfo };
-}
-
-export interface Cluster {
- "certificate-authority"?: string;
- "certificate-authority-data"?: string;
- "disable-compression"?: boolean;
- extensions?: { [key: string]: any[] | boolean | number | number | { [key: string]: any } | null | string };
- "insecure-skip-tls-verify"?: boolean;
- LocationOfOrigin: string;
- "proxy-url"?: string;
- server: string;
- "tls-server-name"?: string;
-}
-
-export interface Context {
- cluster: string;
- extensions?: { [key: string]: any[] | boolean | number | number | { [key: string]: any } | null | string };
- LocationOfOrigin: string;
- namespace?: string;
- user: string;
-}
-
-export interface Preferences {
- colors?: boolean;
- extensions?: { [key: string]: any[] | boolean | number | number | { [key: string]: any } | null | string };
-}
-
-export interface AuthInfo {
- "act-as"?: string;
- "act-as-groups"?: string[];
- "act-as-uid"?: string;
- "act-as-user-extra"?: { [key: string]: string[] };
- "auth-provider"?: AuthProviderConfig;
- "client-certificate"?: string;
- "client-certificate-data"?: string;
- "client-key"?: string;
- "client-key-data"?: string;
- exec?: ExecConfig;
- extensions?: { [key: string]: any[] | boolean | number | number | { [key: string]: any } | null | string };
- LocationOfOrigin: string;
- password?: string;
- token?: string;
- tokenFile?: string;
- username?: string;
-}
-
-export interface AuthProviderConfig {
- config?: { [key: string]: string };
- name: string;
-}
-
-export interface ExecConfig {
- apiVersion?: string;
- args: string[];
- command: string;
- Config: any[] | boolean | number | number | { [key: string]: any } | null | string;
- env: ExecEnvVar[];
- installHint?: string;
- InteractiveMode: string;
- provideClusterInfo: boolean;
- StdinUnavailable: boolean;
- StdinUnavailableMessage: string;
+export interface DeployedComponentElement {
+ installedCharts: InstalledChartElement[];
+ name: string;
+ observedGeneration: number;
+ status: string;
}
-export interface ExecEnvVar {
- name: string;
- value: string;
+export interface InstalledChartElement {
+ chartName: string;
+ namespace: string;
}
export interface ZarfState {
- agentTLS: GeneratedPKI;
+ agentTLS: AgentTLS;
/**
* Machine architecture of the k8s node(s)
*/
@@ -1084,7 +897,7 @@ export interface ZarfState {
/**
* Information about the artifact registry Zarf is configured to use
*/
- artifactServer: ArtifactServerInfo;
+ artifactServer: ArtifactServer;
/**
* K8s distribution of the cluster Zarf was deployed to
*/
@@ -1092,11 +905,7 @@ export interface ZarfState {
/**
* Information about the repository Zarf is configured to use
*/
- gitServer: GitServerInfo;
- /**
- * Secret value that the internal Grafana server was seeded with
- */
- loggingSecret: string;
+ gitServer: GitServer;
/**
* Information about the container registry Zarf is configured to use
*/
@@ -1108,131 +917,116 @@ export interface ZarfState {
zarfAppliance: boolean;
}
-export interface GeneratedPKI {
+export interface AgentTLS {
ca: string;
cert: string;
key: string;
}
-export interface ConnectString {
+/**
+ * Information about the artifact registry Zarf is configured to use
+ */
+export interface ArtifactServer {
/**
- * Descriptive text that explains what the resource you would be connecting to is used for
+ * URL address of the artifact registry
*/
- description: string;
+ address: string;
/**
- * URL path that gets appended to the k8s port-forward result
+ * Indicates if we are using a artifact registry that Zarf is directly managing
*/
- url: string;
-}
-
-export interface DeployedPackage {
- cliVersion: string;
- connectStrings?: { [key: string]: ConnectString };
- data: ZarfPackage;
- deployedComponents: DeployedComponent[];
- name: string;
-}
-
-export interface DeployedComponent {
- installedCharts: InstalledChart[];
- name: string;
-}
-
-export interface InstalledChart {
- chartName: string;
- namespace: string;
-}
-
-export interface ZarfCommonOptions {
+ internalServer: boolean;
/**
- * Path to use to cache images and git repos on package create
+ * Password of a user with push access to the artifact registry
*/
- cachePath: string;
+ pushPassword: string;
/**
- * Verify that Zarf should perform an action
+ * Username of a user with push access to the artifact registry
*/
- confirm: boolean;
+ pushUsername: string;
+}
+
+/**
+ * Information about the repository Zarf is configured to use
+ */
+export interface GitServer {
/**
- * Allow insecure connections for remote packages
+ * URL address of the git server
*/
- insecure: boolean;
+ address: string;
/**
- * Number of concurrent layer operations to perform when interacting with a remote package
+ * Indicates if we are using a git server that Zarf is directly managing
*/
- OCIConcurrency: number;
+ internalServer: boolean;
/**
- * Location Zarf should use as a staging ground when managing files and images for package
- * creation and deployment
+ * Password of a user with pull-only access to the git repository. If not provided for an
+ * external repository then the push-user is used
*/
- tempDirectory: string;
-}
-
-export interface ZarfCreateOptions {
+ pullPassword: string;
/**
- * A package's differential images and git repositories from a referenced previously built
- * package
+ * Username of a user with pull-only access to the git repository. If not provided for an
+ * external repository then the push-user is used
*/
- differential: DifferentialData;
+ pullUsername: string;
/**
- * Size of chunks to use when splitting a zarf package into multiple files in megabytes
+ * Password of a user with push access to the git repository
*/
- maxPackageSizeMB: number;
+ pushPassword: string;
/**
- * Location where the finalized Zarf package will be placed
+ * Username of a user with push access to the git repository
*/
- output: string;
+ pushUsername: string;
+}
+
+/**
+ * Information about the container registry Zarf is configured to use
+ */
+export interface RegistryInfo {
/**
- * A map of domains to override on package create when pulling images
+ * URL address of the registry
*/
- registryOverrides: { [key: string]: string };
+ address: string;
/**
- * Whether to pause to allow for viewing the SBOM post-creation
+ * Indicates if we are using a registry that Zarf is directly managing
*/
- sbom: boolean;
+ internalRegistry: boolean;
/**
- * Location to output an SBOM into after package creation
+ * Nodeport of the registry. Only needed if the registry is running inside the kubernetes
+ * cluster
*/
- sbomOutput: string;
+ nodePort: number;
/**
- * Key-Value map of variable names and their corresponding values that will be used to
- * template against the Zarf package being used
+ * Password of a user with pull-only access to the registry. If not provided for an external
+ * registry than the push-user is used
*/
- setVariables: { [key: string]: string };
+ pullPassword: string;
/**
- * Password to the private key signature file that will be used to sigh the created package
+ * Username of a user with pull-only access to the registry. If not provided for an external
+ * registry than the push-user is used
*/
- signingKeyPassword: string;
+ pullUsername: string;
/**
- * Location where the private key component of a cosign key-pair can be found
+ * Password of a user with push access to the registry
*/
- signingKeyPath: string;
+ pushPassword: string;
/**
- * Disable the generation of SBOM materials during package creation
+ * Username of a user with push access to the registry
*/
- skipSBOM: boolean;
-}
-
-/**
- * A package's differential images and git repositories from a referenced previously built
- * package
- */
-export interface DifferentialData {
- DifferentialImages: { [key: string]: boolean };
- DifferentialOCIComponents: { [key: string]: string };
- DifferentialPackagePath: string;
- DifferentialPackageVersion: string;
- DifferentialRepos: { [key: string]: boolean };
+ pushUsername: string;
+ /**
+ * Secret value that the registry was seeded with
+ */
+ secret: string;
}
// Converts JSON strings to/from your types
// and asserts the results of JSON.parse at runtime
export class Convert {
- public static toAPITypes(json: string): APITypes {
- return cast(JSON.parse(json), r("APITypes"));
+ public static toZarfTypes(json: string): ZarfTypes {
+ return cast(JSON.parse(json), r("ZarfTypes"));
}
- public static aPITypesToJson(value: APITypes): string {
- return JSON.stringify(uncast(value, r("APITypes")), null, 2);
+ public static zarfTypesToJson(value: ZarfTypes): string {
+ return JSON.stringify(uncast(value, r("ZarfTypes")), null, 2);
}
}
@@ -1389,131 +1183,84 @@ function r(name: string) {
}
const typeMap: any = {
- "APITypes": o([
- { json: "apiConnections", js: "apiConnections", typ: m(a(r("APIDeployedPackageConnection"))) },
- { json: "apiPackageSBOM", js: "apiPackageSBOM", typ: r("APIPackageSBOM") },
- { json: "apiZarfDeployPayload", js: "apiZarfDeployPayload", typ: r("APIZarfDeployPayload") },
- { json: "apiZarfPackage", js: "apiZarfPackage", typ: r("APIZarfPackage") },
- { json: "apiZarfPackageConnection", js: "apiZarfPackageConnection", typ: r("APIDeployedPackageConnection") },
- { json: "apiZarfPackageConnections", js: "apiZarfPackageConnections", typ: a(r("APIDeployedPackageConnection")) },
- { json: "clusterSummary", js: "clusterSummary", typ: r("ClusterSummary") },
- { json: "connectStrings", js: "connectStrings", typ: m(r("ConnectString")) },
- { json: "deployedPackage", js: "deployedPackage", typ: r("DeployedPackage") },
- { json: "zarfCommonOptions", js: "zarfCommonOptions", typ: r("ZarfCommonOptions") },
- { json: "zarfCreateOptions", js: "zarfCreateOptions", typ: r("ZarfCreateOptions") },
- { json: "zarfInitOptions", js: "zarfInitOptions", typ: r("ZarfInitOptions") },
- { json: "zarfPackage", js: "zarfPackage", typ: r("ZarfPackage") },
- { json: "zarfPackageOptions", js: "zarfPackageOptions", typ: r("ZarfPackageOptions") },
- { json: "zarfState", js: "zarfState", typ: r("ZarfState") },
+ "ZarfTypes": o([
+ { json: "DeployedPackage", js: "DeployedPackage", typ: r("DeployedPackage") },
+ { json: "ZarfPackage", js: "ZarfPackage", typ: r("Data") },
+ { json: "ZarfState", js: "ZarfState", typ: r("ZarfState") },
], false),
- "APIDeployedPackageConnection": o([
+ "DeployedPackage": o([
+ { json: "cliVersion", js: "cliVersion", typ: "" },
+ { json: "componentWebhooks", js: "componentWebhooks", typ: u(undefined, m(m(r("ComponentWebhookValue")))) },
+ { json: "connectStrings", js: "connectStrings", typ: u(undefined, m(r("ConnectStringValue"))) },
+ { json: "data", js: "data", typ: r("Data") },
+ { json: "deployedComponents", js: "deployedComponents", typ: a(r("DeployedComponentElement")) },
+ { json: "generation", js: "generation", typ: 0 },
{ json: "name", js: "name", typ: "" },
- { json: "url", js: "url", typ: u(undefined, "") },
- ], false),
- "APIPackageSBOM": o([
- { json: "path", js: "path", typ: "" },
- { json: "sboms", js: "sboms", typ: a("") },
- ], false),
- "APIZarfDeployPayload": o([
- { json: "initOpts", js: "initOpts", typ: u(undefined, r("ZarfInitOptions")) },
- { json: "packageOpts", js: "packageOpts", typ: r("ZarfPackageOptions") },
- ], false),
- "ZarfInitOptions": o([
- { json: "applianceMode", js: "applianceMode", typ: true },
- { json: "artifactServer", js: "artifactServer", typ: r("ArtifactServerInfo") },
- { json: "gitServer", js: "gitServer", typ: r("GitServerInfo") },
- { json: "registryInfo", js: "registryInfo", typ: r("RegistryInfo") },
- { json: "storageClass", js: "storageClass", typ: "" },
- ], false),
- "ArtifactServerInfo": o([
- { json: "address", js: "address", typ: "" },
- { json: "internalServer", js: "internalServer", typ: true },
- { json: "pushPassword", js: "pushPassword", typ: "" },
- { json: "pushUsername", js: "pushUsername", typ: "" },
- ], false),
- "GitServerInfo": o([
- { json: "address", js: "address", typ: "" },
- { json: "internalServer", js: "internalServer", typ: true },
- { json: "pullPassword", js: "pullPassword", typ: "" },
- { json: "pullUsername", js: "pullUsername", typ: "" },
- { json: "pushPassword", js: "pushPassword", typ: "" },
- { json: "pushUsername", js: "pushUsername", typ: "" },
- ], false),
- "RegistryInfo": o([
- { json: "address", js: "address", typ: "" },
- { json: "internalRegistry", js: "internalRegistry", typ: true },
- { json: "nodePort", js: "nodePort", typ: 0 },
- { json: "pullPassword", js: "pullPassword", typ: "" },
- { json: "pullUsername", js: "pullUsername", typ: "" },
- { json: "pushPassword", js: "pushPassword", typ: "" },
- { json: "pushUsername", js: "pushUsername", typ: "" },
- { json: "secret", js: "secret", typ: "" },
], false),
- "ZarfPackageOptions": o([
- { json: "optionalComponents", js: "optionalComponents", typ: "" },
- { json: "packagePath", js: "packagePath", typ: "" },
- { json: "publicKeyPath", js: "publicKeyPath", typ: "" },
- { json: "setVariables", js: "setVariables", typ: m("") },
- { json: "sGetKeyPath", js: "sGetKeyPath", typ: "" },
- { json: "shasum", js: "shasum", typ: "" },
+ "ComponentWebhookValue": o([
+ { json: "name", js: "name", typ: "" },
+ { json: "observedGeneration", js: "observedGeneration", typ: 0 },
+ { json: "status", js: "status", typ: "" },
+ { json: "waitDurationSeconds", js: "waitDurationSeconds", typ: u(undefined, 0) },
], false),
- "APIZarfPackage": o([
- { json: "path", js: "path", typ: "" },
- { json: "zarfPackage", js: "zarfPackage", typ: r("ZarfPackage") },
+ "ConnectStringValue": o([
+ { json: "description", js: "description", typ: "" },
+ { json: "url", js: "url", typ: "" },
], false),
- "ZarfPackage": o([
- { json: "build", js: "build", typ: u(undefined, r("ZarfBuildData")) },
- { json: "components", js: "components", typ: a(r("ZarfComponent")) },
- { json: "constants", js: "constants", typ: u(undefined, a(r("ZarfPackageConstant"))) },
+ "Data": o([
+ { json: "build", js: "build", typ: u(undefined, r("Build")) },
+ { json: "components", js: "components", typ: a(r("ComponentElement")) },
+ { json: "constants", js: "constants", typ: u(undefined, a(r("ConstantElement"))) },
{ json: "kind", js: "kind", typ: r("Kind") },
- { json: "metadata", js: "metadata", typ: u(undefined, r("ZarfMetadata")) },
+ { json: "metadata", js: "metadata", typ: u(undefined, r("Metadata")) },
{ json: "variables", js: "variables", typ: u(undefined, a(r("ZarfPackageVariable"))) },
], false),
- "ZarfBuildData": o([
+ "Build": o([
{ json: "architecture", js: "architecture", typ: "" },
{ json: "differential", js: "differential", typ: u(undefined, true) },
{ json: "differentialMissing", js: "differentialMissing", typ: u(undefined, a("")) },
+ { json: "differentialPackageVersion", js: "differentialPackageVersion", typ: u(undefined, "") },
+ { json: "flavor", js: "flavor", typ: u(undefined, "") },
{ json: "lastNonBreakingVersion", js: "lastNonBreakingVersion", typ: u(undefined, "") },
{ json: "migrations", js: "migrations", typ: u(undefined, a("")) },
- { json: "OCIImportedComponents", js: "OCIImportedComponents", typ: u(undefined, m("")) },
{ json: "registryOverrides", js: "registryOverrides", typ: u(undefined, m("")) },
{ json: "terminal", js: "terminal", typ: "" },
{ json: "timestamp", js: "timestamp", typ: "" },
{ json: "user", js: "user", typ: "" },
{ json: "version", js: "version", typ: "" },
], false),
- "ZarfComponent": o([
- { json: "actions", js: "actions", typ: u(undefined, r("ZarfComponentActions")) },
- { json: "charts", js: "charts", typ: u(undefined, a(r("ZarfChart"))) },
+ "ComponentElement": o([
+ { json: "actions", js: "actions", typ: u(undefined, r("Actions")) },
+ { json: "charts", js: "charts", typ: u(undefined, a(r("ChartElement"))) },
{ json: "cosignKeyPath", js: "cosignKeyPath", typ: u(undefined, "") },
- { json: "dataInjections", js: "dataInjections", typ: u(undefined, a(r("ZarfDataInjection"))) },
+ { json: "dataInjections", js: "dataInjections", typ: u(undefined, a(r("DataInjectionElement"))) },
{ json: "default", js: "default", typ: u(undefined, true) },
{ json: "description", js: "description", typ: u(undefined, "") },
- { json: "extensions", js: "extensions", typ: u(undefined, r("ZarfComponentExtensions")) },
- { json: "files", js: "files", typ: u(undefined, a(r("ZarfFile"))) },
+ { json: "extensions", js: "extensions", typ: u(undefined, r("Extensions")) },
+ { json: "files", js: "files", typ: u(undefined, a(r("FileElement"))) },
{ json: "group", js: "group", typ: u(undefined, "") },
{ json: "images", js: "images", typ: u(undefined, a("")) },
- { json: "import", js: "import", typ: u(undefined, r("ZarfComponentImport")) },
- { json: "manifests", js: "manifests", typ: u(undefined, a(r("ZarfManifest"))) },
+ { json: "import", js: "import", typ: u(undefined, r("Import")) },
+ { json: "manifests", js: "manifests", typ: u(undefined, a(r("ManifestElement"))) },
{ json: "name", js: "name", typ: "" },
- { json: "only", js: "only", typ: u(undefined, r("ZarfComponentOnlyTarget")) },
+ { json: "only", js: "only", typ: u(undefined, r("Only")) },
{ json: "repos", js: "repos", typ: u(undefined, a("")) },
{ json: "required", js: "required", typ: u(undefined, true) },
- { json: "scripts", js: "scripts", typ: u(undefined, r("DeprecatedZarfComponentScripts")) },
+ { json: "scripts", js: "scripts", typ: u(undefined, r("Scripts")) },
], false),
- "ZarfComponentActions": o([
- { json: "onCreate", js: "onCreate", typ: u(undefined, r("ZarfComponentActionSet")) },
- { json: "onDeploy", js: "onDeploy", typ: u(undefined, r("ZarfComponentActionSet")) },
- { json: "onRemove", js: "onRemove", typ: u(undefined, r("ZarfComponentActionSet")) },
+ "Actions": o([
+ { json: "onCreate", js: "onCreate", typ: u(undefined, r("OnCreate")) },
+ { json: "onDeploy", js: "onDeploy", typ: u(undefined, r("OnCreate")) },
+ { json: "onRemove", js: "onRemove", typ: u(undefined, r("OnCreate")) },
], false),
- "ZarfComponentActionSet": o([
- { json: "after", js: "after", typ: u(undefined, a(r("ZarfComponentAction"))) },
- { json: "before", js: "before", typ: u(undefined, a(r("ZarfComponentAction"))) },
- { json: "defaults", js: "defaults", typ: u(undefined, r("ZarfComponentActionDefaults")) },
- { json: "onFailure", js: "onFailure", typ: u(undefined, a(r("ZarfComponentAction"))) },
- { json: "onSuccess", js: "onSuccess", typ: u(undefined, a(r("ZarfComponentAction"))) },
+ "OnCreate": o([
+ { json: "after", js: "after", typ: u(undefined, a(r("AfterElement"))) },
+ { json: "before", js: "before", typ: u(undefined, a(r("AfterElement"))) },
+ { json: "defaults", js: "defaults", typ: u(undefined, r("Defaults")) },
+ { json: "onFailure", js: "onFailure", typ: u(undefined, a(r("AfterElement"))) },
+ { json: "onSuccess", js: "onSuccess", typ: u(undefined, a(r("AfterElement"))) },
], false),
- "ZarfComponentAction": o([
+ "AfterElement": o([
{ json: "cmd", js: "cmd", typ: u(undefined, "") },
{ json: "description", js: "description", typ: u(undefined, "") },
{ json: "dir", js: "dir", typ: u(undefined, "") },
@@ -1522,77 +1269,85 @@ const typeMap: any = {
{ json: "maxTotalSeconds", js: "maxTotalSeconds", typ: u(undefined, 0) },
{ json: "mute", js: "mute", typ: u(undefined, true) },
{ json: "setVariable", js: "setVariable", typ: u(undefined, "") },
- { json: "setVariables", js: "setVariables", typ: u(undefined, a(r("ZarfComponentActionSetVariable"))) },
- { json: "shell", js: "shell", typ: u(undefined, r("ZarfComponentActionShell")) },
- { json: "wait", js: "wait", typ: u(undefined, r("ZarfComponentActionWait")) },
+ { json: "setVariables", js: "setVariables", typ: u(undefined, a(r("SetVariableElement"))) },
+ { json: "shell", js: "shell", typ: u(undefined, r("Shell")) },
+ { json: "wait", js: "wait", typ: u(undefined, r("Wait")) },
], false),
- "ZarfComponentActionSetVariable": o([
+ "SetVariableElement": o([
{ json: "autoIndent", js: "autoIndent", typ: u(undefined, true) },
{ json: "name", js: "name", typ: "" },
+ { json: "pattern", js: "pattern", typ: u(undefined, "") },
{ json: "sensitive", js: "sensitive", typ: u(undefined, true) },
{ json: "type", js: "type", typ: u(undefined, r("Type")) },
], false),
- "ZarfComponentActionShell": o([
+ "Shell": o([
{ json: "darwin", js: "darwin", typ: u(undefined, "") },
{ json: "linux", js: "linux", typ: u(undefined, "") },
{ json: "windows", js: "windows", typ: u(undefined, "") },
], false),
- "ZarfComponentActionWait": o([
- { json: "cluster", js: "cluster", typ: u(undefined, r("ZarfComponentActionWaitCluster")) },
- { json: "network", js: "network", typ: u(undefined, r("ZarfComponentActionWaitNetwork")) },
+ "Wait": o([
+ { json: "cluster", js: "cluster", typ: u(undefined, r("WaitCluster")) },
+ { json: "network", js: "network", typ: u(undefined, r("Network")) },
], false),
- "ZarfComponentActionWaitCluster": o([
+ "WaitCluster": o([
{ json: "condition", js: "condition", typ: u(undefined, "") },
{ json: "kind", js: "kind", typ: "" },
{ json: "name", js: "name", typ: "" },
{ json: "namespace", js: "namespace", typ: u(undefined, "") },
], false),
- "ZarfComponentActionWaitNetwork": o([
+ "Network": o([
{ json: "address", js: "address", typ: "" },
{ json: "code", js: "code", typ: u(undefined, 0) },
{ json: "protocol", js: "protocol", typ: r("Protocol") },
], false),
- "ZarfComponentActionDefaults": o([
+ "Defaults": o([
{ json: "dir", js: "dir", typ: u(undefined, "") },
{ json: "env", js: "env", typ: u(undefined, a("")) },
{ json: "maxRetries", js: "maxRetries", typ: u(undefined, 0) },
{ json: "maxTotalSeconds", js: "maxTotalSeconds", typ: u(undefined, 0) },
{ json: "mute", js: "mute", typ: u(undefined, true) },
- { json: "shell", js: "shell", typ: u(undefined, r("ZarfComponentActionShell")) },
+ { json: "shell", js: "shell", typ: u(undefined, r("Shell")) },
], false),
- "ZarfChart": o([
+ "ChartElement": o([
{ json: "gitPath", js: "gitPath", typ: u(undefined, "") },
{ json: "localPath", js: "localPath", typ: u(undefined, "") },
{ json: "name", js: "name", typ: "" },
{ json: "namespace", js: "namespace", typ: "" },
{ json: "noWait", js: "noWait", typ: u(undefined, true) },
{ json: "releaseName", js: "releaseName", typ: u(undefined, "") },
+ { json: "repoName", js: "repoName", typ: u(undefined, "") },
{ json: "url", js: "url", typ: u(undefined, "") },
{ json: "valuesFiles", js: "valuesFiles", typ: u(undefined, a("")) },
+ { json: "variables", js: "variables", typ: u(undefined, a(r("ChartVariable"))) },
{ json: "version", js: "version", typ: u(undefined, "") },
], false),
- "ZarfDataInjection": o([
+ "ChartVariable": o([
+ { json: "description", js: "description", typ: "" },
+ { json: "name", js: "name", typ: "" },
+ { json: "path", js: "path", typ: "" },
+ ], false),
+ "DataInjectionElement": o([
{ json: "compress", js: "compress", typ: u(undefined, true) },
{ json: "source", js: "source", typ: "" },
- { json: "target", js: "target", typ: r("ZarfContainerTarget") },
+ { json: "target", js: "target", typ: r("Target") },
], false),
- "ZarfContainerTarget": o([
+ "Target": o([
{ json: "container", js: "container", typ: "" },
{ json: "namespace", js: "namespace", typ: "" },
{ json: "path", js: "path", typ: "" },
{ json: "selector", js: "selector", typ: "" },
], false),
- "ZarfComponentExtensions": o([
- { json: "bigbang", js: "bigbang", typ: u(undefined, r("BigBang")) },
+ "Extensions": o([
+ { json: "bigbang", js: "bigbang", typ: u(undefined, r("Bigbang")) },
], false),
- "BigBang": o([
+ "Bigbang": o([
{ json: "fluxPatchFiles", js: "fluxPatchFiles", typ: u(undefined, a("")) },
{ json: "repo", js: "repo", typ: u(undefined, "") },
{ json: "skipFlux", js: "skipFlux", typ: u(undefined, true) },
{ json: "valuesFiles", js: "valuesFiles", typ: u(undefined, a("")) },
{ json: "version", js: "version", typ: "" },
], false),
- "ZarfFile": o([
+ "FileElement": o([
{ json: "executable", js: "executable", typ: u(undefined, true) },
{ json: "extractPath", js: "extractPath", typ: u(undefined, "") },
{ json: "shasum", js: "shasum", typ: u(undefined, "") },
@@ -1600,12 +1355,12 @@ const typeMap: any = {
{ json: "symlinks", js: "symlinks", typ: u(undefined, a("")) },
{ json: "target", js: "target", typ: "" },
], false),
- "ZarfComponentImport": o([
+ "Import": o([
{ json: "name", js: "name", typ: u(undefined, "") },
{ json: "path", js: "path", typ: u(undefined, "") },
{ json: "url", js: "url", typ: u(undefined, "") },
], false),
- "ZarfManifest": o([
+ "ManifestElement": o([
{ json: "files", js: "files", typ: u(undefined, a("")) },
{ json: "kustomizations", js: "kustomizations", typ: u(undefined, a("")) },
{ json: "kustomizeAllowAnyDirectory", js: "kustomizeAllowAnyDirectory", typ: u(undefined, true) },
@@ -1613,15 +1368,16 @@ const typeMap: any = {
{ json: "namespace", js: "namespace", typ: u(undefined, "") },
{ json: "noWait", js: "noWait", typ: u(undefined, true) },
], false),
- "ZarfComponentOnlyTarget": o([
- { json: "cluster", js: "cluster", typ: u(undefined, r("ZarfComponentOnlyCluster")) },
+ "Only": o([
+ { json: "cluster", js: "cluster", typ: u(undefined, r("OnlyCluster")) },
+ { json: "flavor", js: "flavor", typ: u(undefined, "") },
{ json: "localOS", js: "localOS", typ: u(undefined, r("LocalOS")) },
], false),
- "ZarfComponentOnlyCluster": o([
+ "OnlyCluster": o([
{ json: "architecture", js: "architecture", typ: u(undefined, r("Architecture")) },
{ json: "distros", js: "distros", typ: u(undefined, a("")) },
], false),
- "DeprecatedZarfComponentScripts": o([
+ "Scripts": o([
{ json: "after", js: "after", typ: u(undefined, a("")) },
{ json: "before", js: "before", typ: u(undefined, a("")) },
{ json: "prepare", js: "prepare", typ: u(undefined, a("")) },
@@ -1629,19 +1385,19 @@ const typeMap: any = {
{ json: "showOutput", js: "showOutput", typ: u(undefined, true) },
{ json: "timeoutSeconds", js: "timeoutSeconds", typ: u(undefined, 0) },
], false),
- "ZarfPackageConstant": o([
+ "ConstantElement": o([
{ json: "autoIndent", js: "autoIndent", typ: u(undefined, true) },
{ json: "description", js: "description", typ: u(undefined, "") },
{ json: "name", js: "name", typ: "" },
+ { json: "pattern", js: "pattern", typ: u(undefined, "") },
{ json: "value", js: "value", typ: "" },
], false),
- "ZarfMetadata": o([
+ "Metadata": o([
{ json: "aggregateChecksum", js: "aggregateChecksum", typ: u(undefined, "") },
{ json: "architecture", js: "architecture", typ: u(undefined, "") },
{ json: "authors", js: "authors", typ: u(undefined, "") },
{ json: "description", js: "description", typ: u(undefined, "") },
{ json: "documentation", js: "documentation", typ: u(undefined, "") },
- { json: "image", js: "image", typ: u(undefined, "") },
{ json: "name", js: "name", typ: "" },
{ json: "source", js: "source", typ: u(undefined, "") },
{ json: "uncompressed", js: "uncompressed", typ: u(undefined, true) },
@@ -1655,148 +1411,59 @@ const typeMap: any = {
{ json: "default", js: "default", typ: u(undefined, "") },
{ json: "description", js: "description", typ: u(undefined, "") },
{ json: "name", js: "name", typ: "" },
+ { json: "pattern", js: "pattern", typ: u(undefined, "") },
{ json: "prompt", js: "prompt", typ: u(undefined, true) },
{ json: "sensitive", js: "sensitive", typ: u(undefined, true) },
{ json: "type", js: "type", typ: u(undefined, r("Type")) },
], false),
- "ClusterSummary": o([
- { json: "distro", js: "distro", typ: "" },
- { json: "hasZarf", js: "hasZarf", typ: true },
- { json: "k8sRevision", js: "k8sRevision", typ: "" },
- { json: "rawConfig", js: "rawConfig", typ: r("RawConfigClass") },
- { json: "reachable", js: "reachable", typ: true },
- { json: "zarfState", js: "zarfState", typ: r("ZarfState") },
- ], false),
- "RawConfigClass": o([
- { json: "apiVersion", js: "apiVersion", typ: u(undefined, "") },
- { json: "clusters", js: "clusters", typ: m(r("Cluster")) },
- { json: "contexts", js: "contexts", typ: m(r("Context")) },
- { json: "current-context", js: "current-context", typ: "" },
- { json: "extensions", js: "extensions", typ: u(undefined, m(u(a("any"), true, 3.14, 0, m("any"), null, ""))) },
- { json: "kind", js: "kind", typ: u(undefined, "") },
- { json: "preferences", js: "preferences", typ: r("Preferences") },
- { json: "users", js: "users", typ: m(r("AuthInfo")) },
- ], false),
- "Cluster": o([
- { json: "certificate-authority", js: "certificate-authority", typ: u(undefined, "") },
- { json: "certificate-authority-data", js: "certificate-authority-data", typ: u(undefined, "") },
- { json: "disable-compression", js: "disable-compression", typ: u(undefined, true) },
- { json: "extensions", js: "extensions", typ: u(undefined, m(u(a("any"), true, 3.14, 0, m("any"), null, ""))) },
- { json: "insecure-skip-tls-verify", js: "insecure-skip-tls-verify", typ: u(undefined, true) },
- { json: "LocationOfOrigin", js: "LocationOfOrigin", typ: "" },
- { json: "proxy-url", js: "proxy-url", typ: u(undefined, "") },
- { json: "server", js: "server", typ: "" },
- { json: "tls-server-name", js: "tls-server-name", typ: u(undefined, "") },
- ], false),
- "Context": o([
- { json: "cluster", js: "cluster", typ: "" },
- { json: "extensions", js: "extensions", typ: u(undefined, m(u(a("any"), true, 3.14, 0, m("any"), null, ""))) },
- { json: "LocationOfOrigin", js: "LocationOfOrigin", typ: "" },
- { json: "namespace", js: "namespace", typ: u(undefined, "") },
- { json: "user", js: "user", typ: "" },
- ], false),
- "Preferences": o([
- { json: "colors", js: "colors", typ: u(undefined, true) },
- { json: "extensions", js: "extensions", typ: u(undefined, m(u(a("any"), true, 3.14, 0, m("any"), null, ""))) },
- ], false),
- "AuthInfo": o([
- { json: "act-as", js: "act-as", typ: u(undefined, "") },
- { json: "act-as-groups", js: "act-as-groups", typ: u(undefined, a("")) },
- { json: "act-as-uid", js: "act-as-uid", typ: u(undefined, "") },
- { json: "act-as-user-extra", js: "act-as-user-extra", typ: u(undefined, m(a(""))) },
- { json: "auth-provider", js: "auth-provider", typ: u(undefined, r("AuthProviderConfig")) },
- { json: "client-certificate", js: "client-certificate", typ: u(undefined, "") },
- { json: "client-certificate-data", js: "client-certificate-data", typ: u(undefined, "") },
- { json: "client-key", js: "client-key", typ: u(undefined, "") },
- { json: "client-key-data", js: "client-key-data", typ: u(undefined, "") },
- { json: "exec", js: "exec", typ: u(undefined, r("ExecConfig")) },
- { json: "extensions", js: "extensions", typ: u(undefined, m(u(a("any"), true, 3.14, 0, m("any"), null, ""))) },
- { json: "LocationOfOrigin", js: "LocationOfOrigin", typ: "" },
- { json: "password", js: "password", typ: u(undefined, "") },
- { json: "token", js: "token", typ: u(undefined, "") },
- { json: "tokenFile", js: "tokenFile", typ: u(undefined, "") },
- { json: "username", js: "username", typ: u(undefined, "") },
- ], false),
- "AuthProviderConfig": o([
- { json: "config", js: "config", typ: u(undefined, m("")) },
+ "DeployedComponentElement": o([
+ { json: "installedCharts", js: "installedCharts", typ: a(r("InstalledChartElement")) },
{ json: "name", js: "name", typ: "" },
+ { json: "observedGeneration", js: "observedGeneration", typ: 0 },
+ { json: "status", js: "status", typ: "" },
], false),
- "ExecConfig": o([
- { json: "apiVersion", js: "apiVersion", typ: u(undefined, "") },
- { json: "args", js: "args", typ: a("") },
- { json: "command", js: "command", typ: "" },
- { json: "Config", js: "Config", typ: u(a("any"), true, 3.14, 0, m("any"), null, "") },
- { json: "env", js: "env", typ: a(r("ExecEnvVar")) },
- { json: "installHint", js: "installHint", typ: u(undefined, "") },
- { json: "InteractiveMode", js: "InteractiveMode", typ: "" },
- { json: "provideClusterInfo", js: "provideClusterInfo", typ: true },
- { json: "StdinUnavailable", js: "StdinUnavailable", typ: true },
- { json: "StdinUnavailableMessage", js: "StdinUnavailableMessage", typ: "" },
- ], false),
- "ExecEnvVar": o([
- { json: "name", js: "name", typ: "" },
- { json: "value", js: "value", typ: "" },
+ "InstalledChartElement": o([
+ { json: "chartName", js: "chartName", typ: "" },
+ { json: "namespace", js: "namespace", typ: "" },
], false),
"ZarfState": o([
- { json: "agentTLS", js: "agentTLS", typ: r("GeneratedPKI") },
+ { json: "agentTLS", js: "agentTLS", typ: r("AgentTLS") },
{ json: "architecture", js: "architecture", typ: "" },
- { json: "artifactServer", js: "artifactServer", typ: r("ArtifactServerInfo") },
+ { json: "artifactServer", js: "artifactServer", typ: r("ArtifactServer") },
{ json: "distro", js: "distro", typ: "" },
- { json: "gitServer", js: "gitServer", typ: r("GitServerInfo") },
- { json: "loggingSecret", js: "loggingSecret", typ: "" },
+ { json: "gitServer", js: "gitServer", typ: r("GitServer") },
{ json: "registryInfo", js: "registryInfo", typ: r("RegistryInfo") },
{ json: "storageClass", js: "storageClass", typ: "" },
{ json: "zarfAppliance", js: "zarfAppliance", typ: true },
], false),
- "GeneratedPKI": o([
+ "AgentTLS": o([
{ json: "ca", js: "ca", typ: "" },
{ json: "cert", js: "cert", typ: "" },
{ json: "key", js: "key", typ: "" },
], false),
- "ConnectString": o([
- { json: "description", js: "description", typ: "" },
- { json: "url", js: "url", typ: "" },
- ], false),
- "DeployedPackage": o([
- { json: "cliVersion", js: "cliVersion", typ: "" },
- { json: "connectStrings", js: "connectStrings", typ: u(undefined, m(r("ConnectString"))) },
- { json: "data", js: "data", typ: r("ZarfPackage") },
- { json: "deployedComponents", js: "deployedComponents", typ: a(r("DeployedComponent")) },
- { json: "name", js: "name", typ: "" },
- ], false),
- "DeployedComponent": o([
- { json: "installedCharts", js: "installedCharts", typ: a(r("InstalledChart")) },
- { json: "name", js: "name", typ: "" },
- ], false),
- "InstalledChart": o([
- { json: "chartName", js: "chartName", typ: "" },
- { json: "namespace", js: "namespace", typ: "" },
- ], false),
- "ZarfCommonOptions": o([
- { json: "cachePath", js: "cachePath", typ: "" },
- { json: "confirm", js: "confirm", typ: true },
- { json: "insecure", js: "insecure", typ: true },
- { json: "OCIConcurrency", js: "OCIConcurrency", typ: 0 },
- { json: "tempDirectory", js: "tempDirectory", typ: "" },
+ "ArtifactServer": o([
+ { json: "address", js: "address", typ: "" },
+ { json: "internalServer", js: "internalServer", typ: true },
+ { json: "pushPassword", js: "pushPassword", typ: "" },
+ { json: "pushUsername", js: "pushUsername", typ: "" },
], false),
- "ZarfCreateOptions": o([
- { json: "differential", js: "differential", typ: r("DifferentialData") },
- { json: "maxPackageSizeMB", js: "maxPackageSizeMB", typ: 0 },
- { json: "output", js: "output", typ: "" },
- { json: "registryOverrides", js: "registryOverrides", typ: m("") },
- { json: "sbom", js: "sbom", typ: true },
- { json: "sbomOutput", js: "sbomOutput", typ: "" },
- { json: "setVariables", js: "setVariables", typ: m("") },
- { json: "signingKeyPassword", js: "signingKeyPassword", typ: "" },
- { json: "signingKeyPath", js: "signingKeyPath", typ: "" },
- { json: "skipSBOM", js: "skipSBOM", typ: true },
+ "GitServer": o([
+ { json: "address", js: "address", typ: "" },
+ { json: "internalServer", js: "internalServer", typ: true },
+ { json: "pullPassword", js: "pullPassword", typ: "" },
+ { json: "pullUsername", js: "pullUsername", typ: "" },
+ { json: "pushPassword", js: "pushPassword", typ: "" },
+ { json: "pushUsername", js: "pushUsername", typ: "" },
], false),
- "DifferentialData": o([
- { json: "DifferentialImages", js: "DifferentialImages", typ: m(true) },
- { json: "DifferentialOCIComponents", js: "DifferentialOCIComponents", typ: m("") },
- { json: "DifferentialPackagePath", js: "DifferentialPackagePath", typ: "" },
- { json: "DifferentialPackageVersion", js: "DifferentialPackageVersion", typ: "" },
- { json: "DifferentialRepos", js: "DifferentialRepos", typ: m(true) },
+ "RegistryInfo": o([
+ { json: "address", js: "address", typ: "" },
+ { json: "internalRegistry", js: "internalRegistry", typ: true },
+ { json: "nodePort", js: "nodePort", typ: 0 },
+ { json: "pullPassword", js: "pullPassword", typ: "" },
+ { json: "pullUsername", js: "pullUsername", typ: "" },
+ { json: "pushPassword", js: "pushPassword", typ: "" },
+ { json: "pushUsername", js: "pushUsername", typ: "" },
+ { json: "secret", js: "secret", typ: "" },
], false),
"Type": [
"file",
diff --git a/examples/component-webhooks/package-lock.json b/examples/component-webhooks/package-lock.json
new file mode 100644
index 0000000000..b50ee40013
--- /dev/null
+++ b/examples/component-webhooks/package-lock.json
@@ -0,0 +1,3374 @@
+{
+ "name": "example-webhook",
+ "version": "0.0.1",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "example-webhook",
+ "version": "0.0.1",
+ "dependencies": {
+ "pepr": "^20.0.0"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.19.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.4.tgz",
+ "integrity": "sha512-Lviw8EzxsVQKpbS+rSt6/6zjn9ashUZ7Tbuvc2YENgRl0yZTktGlachZ9KMJUsVjZEGFVu336kl5lBgDN6PmpA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "peer": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "peer": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz",
+ "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==",
+ "peer": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz",
+ "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==",
+ "peer": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "8.50.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz",
+ "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==",
+ "peer": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@glideapps/ts-necessities": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@glideapps/ts-necessities/-/ts-necessities-2.1.3.tgz",
+ "integrity": "sha512-q9U8v/n9qbkd2zDYjuX3qtlbl+OIyI9zF+zQhZjfYOE9VMDH7tfcUSJ9p0lXoY3lxmGFne09yi4iiNeQUwV7AA=="
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.11.12",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.12.tgz",
+ "integrity": "sha512-NlGesA1usRNn6ctHCZ21M4/dKPgW9Nn1FypRdIKKgZOKzkVV4T1FlK5mBiLhHBCDmEbdQG0idrcXlbZfksJ+RA==",
+ "peer": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^2.0.0",
+ "debug": "^4.1.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "peer": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.0.tgz",
+ "integrity": "sha512-9S9QrXY2K0L4AGDcSgTi9vgiCcG8VcBv4Mp7/1hDPYoswIy6Z6KO5blYto82BT8M0MZNRWmCFLpCs3HlpYGGdw==",
+ "peer": true
+ },
+ "node_modules/@kubernetes/client-node": {
+ "version": "1.0.0-rc3",
+ "resolved": "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-1.0.0-rc3.tgz",
+ "integrity": "sha512-bTYMBZXVrjfi98N5EZbrmPtcT9NY+TddunSEc25DcsRF1c5c93e5jT+zFwId19hG8e/ue5deKe7YDQiRYFpMlQ==",
+ "dependencies": {
+ "@types/js-yaml": "^4.0.1",
+ "@types/node": "^20.3.1",
+ "@types/node-fetch": "^2.6.3",
+ "@types/stream-buffers": "^3.0.3",
+ "@types/tar": "^6.1.1",
+ "@types/underscore": "^1.8.9",
+ "@types/ws": "^8.5.4",
+ "byline": "^5.0.0",
+ "form-data": "^4.0.0",
+ "isomorphic-ws": "^5.0.0",
+ "js-yaml": "^4.1.0",
+ "jsonpath-plus": "^7.2.0",
+ "node-fetch": "^2.6.9",
+ "openid-client": "^5.4.2",
+ "rfc4648": "^1.3.0",
+ "stream-buffers": "^3.0.2",
+ "tar": "^6.1.11",
+ "tmp-promise": "^3.0.2",
+ "tslib": "^2.5.0",
+ "underscore": "^1.9.1",
+ "url-parse": "^1.4.3",
+ "ws": "^8.13.0"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "peer": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "peer": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "peer": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@opentelemetry/api": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.6.0.tgz",
+ "integrity": "sha512-OWlrQAnWn9577PhVgqjUvMr1pg57Bc4jv0iL4w0PRuOSRvq67rvHW9Ie/dZVMvCzhSCB+UxhcY/PmCmFj33Q+g==",
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/@types/js-yaml": {
+ "version": "4.0.9",
+ "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz",
+ "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg=="
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.14",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz",
+ "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==",
+ "peer": true
+ },
+ "node_modules/@types/node": {
+ "version": "20.9.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz",
+ "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==",
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@types/node-fetch": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.9.tgz",
+ "integrity": "sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==",
+ "dependencies": {
+ "@types/node": "*",
+ "form-data": "^4.0.0"
+ }
+ },
+ "node_modules/@types/ramda": {
+ "version": "0.29.9",
+ "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.29.9.tgz",
+ "integrity": "sha512-X3yEG6tQCWBcUAql+RPC/O1Hm9BSU+MXu2wJnCETuAgUlrEDwTA1kIOdEEE4YXDtf0zfQLHa9CCE7WYp9kqPIQ==",
+ "dependencies": {
+ "types-ramda": "^0.29.6"
+ }
+ },
+ "node_modules/@types/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==",
+ "peer": true
+ },
+ "node_modules/@types/stream-buffers": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/@types/stream-buffers/-/stream-buffers-3.0.7.tgz",
+ "integrity": "sha512-azOCy05sXVXrO+qklf0c/B07H/oHaIuDDAiHPVwlk3A9Ek+ksHyTeMajLZl3r76FxpPpxem//4Te61G1iW3Giw==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/tar": {
+ "version": "6.1.9",
+ "resolved": "https://registry.npmjs.org/@types/tar/-/tar-6.1.9.tgz",
+ "integrity": "sha512-T3+O+OQd9cdGmOXuKQY9+B0ceZHRlGVPQ7M5QZqkaPyP/vWnxPXM2aCegq8GP/n1n9dBfq2EBUqCSKKjQAVOPA==",
+ "dependencies": {
+ "@types/node": "*",
+ "minipass": "^4.0.0"
+ }
+ },
+ "node_modules/@types/underscore": {
+ "version": "1.11.14",
+ "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.14.tgz",
+ "integrity": "sha512-13RYuwqoXZgLO3Nu4zsISqYAexCILtKIMGx+7+vY6gEsGFjrcHU57iDxPmaA2E5d4v5NwebNweiXLbaZWHWI9A=="
+ },
+ "node_modules/@types/urijs": {
+ "version": "1.19.25",
+ "resolved": "https://registry.npmjs.org/@types/urijs/-/urijs-1.19.25.tgz",
+ "integrity": "sha512-XOfUup9r3Y06nFAZh3WvO0rBU4OtlfPB/vgxpjg+NRdGU6CN6djdc6OEiH+PcqHCY6eFLo9Ista73uarf4gnBg=="
+ },
+ "node_modules/@types/ws": {
+ "version": "8.5.9",
+ "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.9.tgz",
+ "integrity": "sha512-jbdrY0a8lxfdTp/+r7Z4CkycbOFN8WX+IOchLJr3juT/xzbJ8URyTVSJ/hvNdadTgM1mnedb47n+Y31GsFnQlg==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.3.tgz",
+ "integrity": "sha512-vntq452UHNltxsaaN+L9WyuMch8bMd9CqJ3zhzTPXXidwbf5mqqKCVXEuvRZUqLJSTLeWE65lQwyXsRGnXkCTA==",
+ "peer": true,
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.5.1",
+ "@typescript-eslint/scope-manager": "6.7.3",
+ "@typescript-eslint/type-utils": "6.7.3",
+ "@typescript-eslint/utils": "6.7.3",
+ "@typescript-eslint/visitor-keys": "6.7.3",
+ "debug": "^4.3.4",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.4",
+ "natural-compare": "^1.4.0",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha",
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.3.tgz",
+ "integrity": "sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==",
+ "peer": true,
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "6.7.3",
+ "@typescript-eslint/types": "6.7.3",
+ "@typescript-eslint/typescript-estree": "6.7.3",
+ "@typescript-eslint/visitor-keys": "6.7.3",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.3.tgz",
+ "integrity": "sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==",
+ "peer": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.7.3",
+ "@typescript-eslint/visitor-keys": "6.7.3"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.3.tgz",
+ "integrity": "sha512-Fc68K0aTDrKIBvLnKTZ5Pf3MXK495YErrbHb1R6aTpfK5OdSFj0rVN7ib6Tx6ePrZ2gsjLqr0s98NG7l96KSQw==",
+ "peer": true,
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "6.7.3",
+ "@typescript-eslint/utils": "6.7.3",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.3.tgz",
+ "integrity": "sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==",
+ "peer": true,
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.3.tgz",
+ "integrity": "sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==",
+ "peer": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.7.3",
+ "@typescript-eslint/visitor-keys": "6.7.3",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.3.tgz",
+ "integrity": "sha512-vzLkVder21GpWRrmSR9JxGZ5+ibIUSudXlW52qeKpzUEQhRSmyZiVDDj3crAth7+5tmN1ulvgKaCU2f/bPRCzg==",
+ "peer": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@types/json-schema": "^7.0.12",
+ "@types/semver": "^7.5.0",
+ "@typescript-eslint/scope-manager": "6.7.3",
+ "@typescript-eslint/types": "6.7.3",
+ "@typescript-eslint/typescript-estree": "6.7.3",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "6.7.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.3.tgz",
+ "integrity": "sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==",
+ "peer": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.7.3",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/abort-controller": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
+ "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+ "dependencies": {
+ "event-target-shim": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=6.5"
+ }
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
+ "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
+ "peer": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "peer": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "peer": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "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==",
+ "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==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+ },
+ "node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "node_modules/atomic-sleep": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz",
+ "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==",
+ "engines": {
+ "node": ">=8.0.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=="
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "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/bintrees": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz",
+ "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw=="
+ },
+ "node_modules/body-parser": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
+ "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.11.0",
+ "raw-body": "2.5.1",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/body-parser/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/body-parser/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "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==",
+ "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==",
+ "peer": true,
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browser-or-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-2.1.1.tgz",
+ "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg=="
+ },
+ "node_modules/buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
+ "node_modules/byline": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz",
+ "integrity": "sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "peer": 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/chownr": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/collection-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/collection-utils/-/collection-utils-1.0.1.tgz",
+ "integrity": "sha512-LA2YTIlR7biSpXkKYwwuzGjwL5rjWEZVOSnvdUc7gObvWe4WkjxOpfrdhoP7Hs09YWDVfg0Mal9BpAqLfVEzQg=="
+ },
+ "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==",
+ "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=="
+ },
+ "node_modules/colorette": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz",
+ "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==",
+ "peer": true,
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
+ },
+ "node_modules/cross-fetch": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz",
+ "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==",
+ "dependencies": {
+ "node-fetch": "^2.6.12"
+ }
+ },
+ "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==",
+ "peer": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/dateformat": {
+ "version": "4.6.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz",
+ "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "peer": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "peer": true
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "peer": true,
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "peer": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
+ },
+ "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=="
+ },
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.19.4",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.4.tgz",
+ "integrity": "sha512-x7jL0tbRRpv4QUyuDMjONtWFciygUxWaUM1kMX2zWxI0X2YWOt7MSA0g4UdeSiHM8fcYVzpQhKYOycZwxTdZkA==",
+ "hasInstallScript": true,
+ "peer": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/android-arm": "0.19.4",
+ "@esbuild/android-arm64": "0.19.4",
+ "@esbuild/android-x64": "0.19.4",
+ "@esbuild/darwin-arm64": "0.19.4",
+ "@esbuild/darwin-x64": "0.19.4",
+ "@esbuild/freebsd-arm64": "0.19.4",
+ "@esbuild/freebsd-x64": "0.19.4",
+ "@esbuild/linux-arm": "0.19.4",
+ "@esbuild/linux-arm64": "0.19.4",
+ "@esbuild/linux-ia32": "0.19.4",
+ "@esbuild/linux-loong64": "0.19.4",
+ "@esbuild/linux-mips64el": "0.19.4",
+ "@esbuild/linux-ppc64": "0.19.4",
+ "@esbuild/linux-riscv64": "0.19.4",
+ "@esbuild/linux-s390x": "0.19.4",
+ "@esbuild/linux-x64": "0.19.4",
+ "@esbuild/netbsd-x64": "0.19.4",
+ "@esbuild/openbsd-x64": "0.19.4",
+ "@esbuild/sunos-x64": "0.19.4",
+ "@esbuild/win32-arm64": "0.19.4",
+ "@esbuild/win32-ia32": "0.19.4",
+ "@esbuild/win32-x64": "0.19.4"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.50.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz",
+ "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==",
+ "peer": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.2",
+ "@eslint/js": "8.50.0",
+ "@humanwhocodes/config-array": "^0.11.11",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "peer": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "peer": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "peer": true,
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "peer": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "peer": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "peer": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/event-target-shim": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/express": {
+ "version": "4.18.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
+ "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.1",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.5.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.2.0",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.11.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.18.0",
+ "serve-static": "1.15.0",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/express/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/express/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/fast-copy": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.1.tgz",
+ "integrity": "sha512-Knr7NOtK3HWRYGtHoJrjkaWepqT8thIVGAwt0p0aUs1zqkAzXZV4vo9fFNwyb5fcqK1GKYFYxldQdIDVKhUAfA=="
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "peer": true
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
+ "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
+ "peer": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "peer": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-patch": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz",
+ "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ=="
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "peer": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "peer": true
+ },
+ "node_modules/fast-redact": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz",
+ "integrity": "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/fast-safe-stringify": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
+ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA=="
+ },
+ "node_modules/fastq": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
+ "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "peer": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "peer": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "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==",
+ "peer": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "2.0.1",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/finalhandler/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/finalhandler/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "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==",
+ "peer": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz",
+ "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==",
+ "peer": true,
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.2.9",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
+ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
+ "peer": true
+ },
+ "node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fs-minipass": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/fs-minipass/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "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==",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
+ "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "peer": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/globals": {
+ "version": "13.23.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz",
+ "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==",
+ "peer": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "peer": true,
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "peer": true
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "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==",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/help-me": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz",
+ "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg=="
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/http-status-codes": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.3.0.tgz",
+ "integrity": "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA=="
+ },
+ "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==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "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/ignore": {
+ "version": "5.2.4",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
+ "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+ "peer": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "peer": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "peer": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "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=="
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "peer": 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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "peer": 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==",
+ "peer": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-url": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
+ "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww=="
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "peer": true
+ },
+ "node_modules/isomorphic-ws": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz",
+ "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==",
+ "peerDependencies": {
+ "ws": "*"
+ }
+ },
+ "node_modules/jose": {
+ "version": "4.15.4",
+ "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.4.tgz",
+ "integrity": "sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ==",
+ "funding": {
+ "url": "https://github.com/sponsors/panva"
+ }
+ },
+ "node_modules/joycon": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz",
+ "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/js-base64": {
+ "version": "3.7.5",
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.5.tgz",
+ "integrity": "sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA=="
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "peer": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "peer": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "peer": true
+ },
+ "node_modules/jsonpath-plus": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-7.2.0.tgz",
+ "integrity": "sha512-zBfiUPM5nD0YZSBT/o/fbCUlCcepMIdP0CJZxM1+KgA4f2T206f6VAg9e7mX35+KlMaIc5qXW34f3BnwJ3w+RA==",
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "peer": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/kubernetes-fluent-client": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/kubernetes-fluent-client/-/kubernetes-fluent-client-1.9.0.tgz",
+ "integrity": "sha512-MbR4stfoaj4gB+JcrYk6vBZzWrTWRnD9iX1JfVRo7sXQpoknPcsm/9YvLeRLblXtvuGOzE3vZZ21MOGQ3+creA==",
+ "dependencies": {
+ "@kubernetes/client-node": "1.0.0-rc3",
+ "byline": "5.0.0",
+ "fast-json-patch": "3.1.1",
+ "http-status-codes": "2.3.0",
+ "node-fetch": "2.7.0",
+ "quicktype-core": "23.0.80",
+ "type-fest": "4.8.2",
+ "yargs": "17.7.2"
+ },
+ "bin": {
+ "kubernetes-fluent-client": "dist/cli.js"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/kubernetes-fluent-client/node_modules/type-fest": {
+ "version": "4.8.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.2.tgz",
+ "integrity": "sha512-mcvrCjixA5166hSrUoJgGb9gBQN4loMYyj9zxuMs/66ibHNEFd5JXMw37YVDx58L4/QID9jIzdTBB4mDwDJ6KQ==",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "peer": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "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==",
+ "peer": 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=="
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "peer": true
+ },
+ "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==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "peer": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "peer": true,
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "4.2.8",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz",
+ "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minizlib": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+ "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
+ "dependencies": {
+ "minipass": "^3.0.0",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/minizlib/node_modules/minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "peer": true
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "peer": true
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/node-forge": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
+ "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
+ "peer": true,
+ "engines": {
+ "node": ">= 6.13.0"
+ }
+ },
+ "node_modules/object-hash": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz",
+ "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.12.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
+ "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/oidc-token-hash": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz",
+ "integrity": "sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==",
+ "engines": {
+ "node": "^10.13.0 || >=12.0.0"
+ }
+ },
+ "node_modules/on-exit-leak-free": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz",
+ "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/openid-client": {
+ "version": "5.6.1",
+ "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.6.1.tgz",
+ "integrity": "sha512-PtrWsY+dXg6y8mtMPyL/namZSYVz8pjXz3yJiBNZsEdCnu9miHLB4ELVC85WvneMKo2Rg62Ay7NkuCpM0bgiLQ==",
+ "dependencies": {
+ "jose": "^4.15.1",
+ "lru-cache": "^6.0.0",
+ "object-hash": "^2.2.0",
+ "oidc-token-hash": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/panva"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "peer": true,
+ "dependencies": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.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==",
+ "peer": 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==",
+ "peer": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
+ },
+ "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==",
+ "peer": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "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==",
+ "peer": 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": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "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==",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
+ },
+ "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==",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pepr": {
+ "version": "20.0.0",
+ "resolved": "https://registry.npmjs.org/pepr/-/pepr-20.0.0.tgz",
+ "integrity": "sha512-Pb84L0VkK5xtqBzZKjjD6xBJiMnypmvuqPpomL46hANeI0ks81rcWziFupQS4UiLnHcN2H32Il/bCYyzj5vFbQ==",
+ "dependencies": {
+ "@types/ramda": "0.29.9",
+ "express": "4.18.2",
+ "fast-json-patch": "3.1.1",
+ "kubernetes-fluent-client": "1.9.0",
+ "pino": "8.17.1",
+ "pino-pretty": "10.3.0",
+ "prom-client": "15.0.0",
+ "ramda": "0.29.1"
+ },
+ "bin": {
+ "pepr": "dist/cli.js"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/eslint-plugin": "6.7.3",
+ "@typescript-eslint/parser": "6.7.3",
+ "commander": "11.0.0",
+ "esbuild": "0.19.4",
+ "eslint": "8.50.0",
+ "node-forge": "1.3.1",
+ "prettier": "3.0.3",
+ "prompts": "2.4.2",
+ "typescript": "5.2.2",
+ "uuid": "9.0.1"
+ }
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "peer": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pino": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/pino/-/pino-8.17.1.tgz",
+ "integrity": "sha512-YoN7/NJgnsJ+fkADZqjhRt96iepWBndQHeClmSBH0sQWCb8zGD74t00SK4eOtKFi/f8TUmQnfmgglEhd2kI1RQ==",
+ "dependencies": {
+ "atomic-sleep": "^1.0.0",
+ "fast-redact": "^3.1.1",
+ "on-exit-leak-free": "^2.1.0",
+ "pino-abstract-transport": "v1.1.0",
+ "pino-std-serializers": "^6.0.0",
+ "process-warning": "^2.0.0",
+ "quick-format-unescaped": "^4.0.3",
+ "real-require": "^0.2.0",
+ "safe-stable-stringify": "^2.3.1",
+ "sonic-boom": "^3.7.0",
+ "thread-stream": "^2.0.0"
+ },
+ "bin": {
+ "pino": "bin.js"
+ }
+ },
+ "node_modules/pino-abstract-transport": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz",
+ "integrity": "sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==",
+ "dependencies": {
+ "readable-stream": "^4.0.0",
+ "split2": "^4.0.0"
+ }
+ },
+ "node_modules/pino-pretty": {
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-10.3.0.tgz",
+ "integrity": "sha512-JthvQW289q3454mhM3/38wFYGWPiBMR28T3CpDNABzoTQOje9UKS7XCJQSnjWF9LQGQkGd8D7h0oq+qwiM3jFA==",
+ "dependencies": {
+ "colorette": "^2.0.7",
+ "dateformat": "^4.6.3",
+ "fast-copy": "^3.0.0",
+ "fast-safe-stringify": "^2.1.1",
+ "help-me": "^5.0.0",
+ "joycon": "^3.1.1",
+ "minimist": "^1.2.6",
+ "on-exit-leak-free": "^2.1.0",
+ "pino-abstract-transport": "^1.0.0",
+ "pump": "^3.0.0",
+ "readable-stream": "^4.0.0",
+ "secure-json-parse": "^2.4.0",
+ "sonic-boom": "^3.0.0",
+ "strip-json-comments": "^3.1.1"
+ },
+ "bin": {
+ "pino-pretty": "bin.js"
+ }
+ },
+ "node_modules/pino-std-serializers": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz",
+ "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA=="
+ },
+ "node_modules/pluralize": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
+ "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "peer": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz",
+ "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==",
+ "peer": true,
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/process-warning": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.3.0.tgz",
+ "integrity": "sha512-N6mp1+2jpQr3oCFMz6SeHRGbv6Slb20bRhj4v3xR99HqNToAcOe1MFOp4tytyzOfJn+QtN8Rf7U/h2KAn4kC6g=="
+ },
+ "node_modules/prom-client": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-15.0.0.tgz",
+ "integrity": "sha512-UocpgIrKyA2TKLVZDSfm8rGkL13C19YrQBAiG3xo3aDFWcHedxRxI3z+cIcucoxpSO0h5lff5iv/SXoxyeopeA==",
+ "dependencies": {
+ "@opentelemetry/api": "^1.4.0",
+ "tdigest": "^0.1.1"
+ },
+ "engines": {
+ "node": "^16 || ^18 || >=20"
+ }
+ },
+ "node_modules/prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+ "peer": true,
+ "dependencies": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
+ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "peer": true
+ },
+ "node_modules/quick-format-unescaped": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz",
+ "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg=="
+ },
+ "node_modules/quicktype-core": {
+ "version": "23.0.80",
+ "resolved": "https://registry.npmjs.org/quicktype-core/-/quicktype-core-23.0.80.tgz",
+ "integrity": "sha512-dd+aJRzAl3MzkaXJMjUu0j60y82gwX/RRr3EvW/aScQKycvkgwliNDN2tIiLB06EKBzjgC9mtlMqKyRg2rYKhQ==",
+ "dependencies": {
+ "@glideapps/ts-necessities": "2.1.3",
+ "@types/urijs": "^1.19.19",
+ "browser-or-node": "^2.1.1",
+ "collection-utils": "^1.0.1",
+ "cross-fetch": "^4.0.0",
+ "is-url": "^1.2.4",
+ "js-base64": "^3.7.5",
+ "lodash": "^4.17.21",
+ "pako": "^1.0.6",
+ "pluralize": "^8.0.0",
+ "readable-stream": "4.4.2",
+ "unicode-properties": "^1.4.1",
+ "urijs": "^1.19.1",
+ "wordwrap": "^1.0.0",
+ "yaml": "^2.3.1"
+ }
+ },
+ "node_modules/ramda": {
+ "version": "0.29.1",
+ "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.1.tgz",
+ "integrity": "sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/ramda"
+ }
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz",
+ "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==",
+ "dependencies": {
+ "abort-controller": "^3.0.0",
+ "buffer": "^6.0.3",
+ "events": "^3.3.0",
+ "process": "^0.11.10",
+ "string_decoder": "^1.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/real-require": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz",
+ "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==",
+ "engines": {
+ "node": ">= 12.13.0"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
+ },
+ "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==",
+ "peer": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "peer": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rfc4648": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/rfc4648/-/rfc4648-1.5.3.tgz",
+ "integrity": "sha512-MjOWxM065+WswwnmNONOT+bD1nXzY9Km6u3kzvnx8F8/HXGZdz3T6e6vZJ8Q/RIMUSp/nxqjH3GwvJDy8ijeQQ=="
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/rimraf/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "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==",
+ "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/safe-stable-stringify": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz",
+ "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "node_modules/secure-json-parse": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz",
+ "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw=="
+ },
+ "node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "peer": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/send/node_modules/debug/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/send/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "dependencies": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.18.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ },
+ "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==",
+ "peer": 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==",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "peer": true
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/sonic-boom": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.7.0.tgz",
+ "integrity": "sha512-IudtNvSqA/ObjN97tfgNmOKyDOs4dNcg4cUUsHDebqsgb8wGBBwb31LIgShNO8fye0dFI52X1+tFoKKI6Rq1Gg==",
+ "dependencies": {
+ "atomic-sleep": "^1.0.0"
+ }
+ },
+ "node_modules/split2": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
+ "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
+ "engines": {
+ "node": ">= 10.x"
+ }
+ },
+ "node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/stream-buffers": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz",
+ "integrity": "sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ==",
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "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==",
+ "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==",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tar": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz",
+ "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==",
+ "dependencies": {
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^5.0.0",
+ "minizlib": "^2.1.1",
+ "mkdirp": "^1.0.3",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/tar/node_modules/minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tdigest": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz",
+ "integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==",
+ "dependencies": {
+ "bintrees": "1.0.2"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "peer": true
+ },
+ "node_modules/thread-stream": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.4.1.tgz",
+ "integrity": "sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==",
+ "dependencies": {
+ "real-require": "^0.2.0"
+ }
+ },
+ "node_modules/tiny-inflate": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
+ "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="
+ },
+ "node_modules/tmp": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
+ "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
+ "dependencies": {
+ "rimraf": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8.17.0"
+ }
+ },
+ "node_modules/tmp-promise": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz",
+ "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==",
+ "dependencies": {
+ "tmp": "^0.2.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==",
+ "peer": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ },
+ "node_modules/ts-api-utils": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz",
+ "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==",
+ "peer": true,
+ "engines": {
+ "node": ">=16.13.0"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.2.0"
+ }
+ },
+ "node_modules/ts-toolbelt": {
+ "version": "9.6.0",
+ "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz",
+ "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w=="
+ },
+ "node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "peer": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/types-ramda": {
+ "version": "0.29.6",
+ "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.29.6.tgz",
+ "integrity": "sha512-VJoOk1uYNh9ZguGd3eZvqkdhD4hTGtnjRBUx5Zc0U9ftmnCgiWcSj/lsahzKunbiwRje1MxxNkEy1UdcXRCpYw==",
+ "dependencies": {
+ "ts-toolbelt": "^9.6.0"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+ "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
+ "peer": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/underscore": {
+ "version": "1.13.6",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
+ "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
+ },
+ "node_modules/unicode-properties": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz",
+ "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==",
+ "dependencies": {
+ "base64-js": "^1.3.0",
+ "unicode-trie": "^2.0.0"
+ }
+ },
+ "node_modules/unicode-trie": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz",
+ "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==",
+ "dependencies": {
+ "pako": "^0.2.5",
+ "tiny-inflate": "^1.0.0"
+ }
+ },
+ "node_modules/unicode-trie/node_modules/pako": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
+ "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "peer": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/urijs": {
+ "version": "1.19.11",
+ "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz",
+ "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ=="
+ },
+ "node_modules/url-parse": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+ "dependencies": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "peer": true,
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "peer": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q=="
+ },
+ "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==",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+ },
+ "node_modules/ws": {
+ "version": "8.14.2",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz",
+ "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "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=="
+ },
+ "node_modules/yaml": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz",
+ "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "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==",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ }
+}
diff --git a/examples/component-webhooks/package.json b/examples/component-webhooks/package.json
new file mode 100644
index 0000000000..8d91530a8b
--- /dev/null
+++ b/examples/component-webhooks/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "example-webhook",
+ "version": "0.0.1",
+ "description": "",
+ "keywords": [
+ "pepr",
+ "k8s",
+ "policy-engine",
+ "pepr-module",
+ "security"
+ ],
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "pepr": {
+ "name": "example-webhook",
+ "uuid": "cb5693ef-d13c-5fe1-b5ad-c870fd911b3b",
+ "onError": "ignore",
+ "alwaysIgnore": {
+ "namespaces": [],
+ "labels": []
+ }
+ },
+ "scripts": {
+ "k3d-setup": "k3d cluster delete pepr-dev && k3d cluster create pepr-dev --k3s-arg '--debug@server:0'"
+ },
+ "dependencies": {
+ "pepr": "^20.0.0"
+ }
+}
diff --git a/examples/component-webhooks/pepr-module-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b.yaml b/examples/component-webhooks/pepr-module-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b.yaml
new file mode 100644
index 0000000000..a08428e469
--- /dev/null
+++ b/examples/component-webhooks/pepr-module-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b.yaml
@@ -0,0 +1,279 @@
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: pepr-system
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+ name: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b
+rules:
+ - apiGroups:
+ - '*'
+ resources:
+ - '*'
+ verbs:
+ - create
+ - delete
+ - get
+ - list
+ - patch
+ - update
+ - watch
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b
+subjects:
+ - kind: ServiceAccount
+ name: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b
+ namespace: pepr-system
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b
+ namespace: pepr-system
+---
+apiVersion: v1
+kind: Secret
+metadata:
+ name: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b-api-token
+ namespace: pepr-system
+type: Opaque
+data:
+ value: >-
+ NTkwMzFlMGU3MzJmYTg0ZjE5OTlmZGMzMWExZjY0MWUwZDAyYWMzZjE0NzU2MTUyMmFmYTAzMmI1YzRjM2M2Yg==
+---
+apiVersion: v1
+kind: Secret
+metadata:
+ name: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b-tls
+ namespace: pepr-system
+type: kubernetes.io/tls
+data:
+ tls.crt: >-
+ LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlDd3pDQ0FhdWdBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUXNGQURBQU1CNFhEVEl6TVRFeE16RTNOREEwDQpObG9YRFRJME1URXhNekUzTkRBME5sb3dBRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DDQpnZ0VCQUtHbWEyVHZNUmdMc01kL2FneFJua0hEeGgxL1YvNFN0Z2VHUkJLK1ZkV01TZlNIdE5UTXFTT2NUeW5vDQo4Z2ZFbnJNQ1ZPWXFqek03YkdEMU9pcGorRktGSkxJcGpaak1HRnhnR2VBSTBwVThTak1HcWMyazRKZ1N5ZDNPDQo5dmZxUk1adjNqd2pJeGMvekxiYzFBZjNKS3NlQTlYc2FzN3R6VmhjSFc0RFVPQnhpNTNLVHBDQzhWbFJoZmI2DQo2THBPVUFueW9pRGU2ZGZ1KzRIeXUzNlZuLzJKNFlMeXdwTXF6RCtzWUxCWXdrcTRiaTZzVk9XeWlsWXFnd2V4DQpmVG9Lbk1xZlExbm4wTVZrb0FkLy9FUXBFKzE1NTVFcTlrUmt4cW5wYzllUlNjT2JOWGxjdng4eDdOaG1GR2xRDQpZQ0hYQVlJZ2xKT01LMzUrZXNnOHNPeEkvUXNDQXdFQUFhTklNRVl3UkFZRFZSMFJCRDB3TzRJNWNHVndjaTFqDQpZalUyT1RObFppMWtNVE5qTFRWbVpURXRZalZoWkMxak9EY3dabVE1TVRGaU0ySXVjR1Z3Y2kxemVYTjBaVzB1DQpjM1pqTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFCVDZsYnRQalpnSU9vTHE1SnRMYkphODB6L293QTNoTFZLDQpSMFN4S2xxSjAvdElmb3FKMmZTNTdtT0NFZFJhR2dlK2l3am0zL2xWWnY4QzNRWnB0Yy9sV3FqdU1hTkxUWmQ4DQoveG1vckFiVE5RdElkVXMrRGpPeTlBbDRiU080eG0zUG9VUk0yK1JSdUF5eEZhME9hZjJoTlBMQ1RjOU1qWTBQDQp5VTZNdWFTZ1FpZGlRSExKYzRrT1N5T3Q4ODRxWlZYeHFCRWRidVN0dVRWeDZnY1NjWlNCNXlvaFY0K0JJaEtPDQpNc1E1alEzTlRpQjgrSU1FSHh4KzhZSWhaQjVzYnFPRnl6TTBuaFFMVWVnc01GLzFqYU5LaDNQMDY1OUMxK0Y1DQoyRjRDeVJRN1hlcmJPVEZPbElXY215aU1VUVdpcGNvS0hIYldkNWNNbUg0VWd4QjJqeGtWDQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQo=
+ tls.key: >-
+ LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQ0KTUlJRXBBSUJBQUtDQVFFQW9hWnJaTzh4R0F1d3gzOXFERkdlUWNQR0hYOVgvaEsyQjRaRUVyNVYxWXhKOUllMA0KMU15cEk1eFBLZWp5QjhTZXN3SlU1aXFQTXp0c1lQVTZLbVA0VW9Va3NpbU5tTXdZWEdBWjRBalNsVHhLTXdhcA0KemFUZ21CTEozYzcyOStwRXhtL2VQQ01qRnovTXR0elVCL2NrcXg0RDFleHF6dTNOV0Z3ZGJnTlE0SEdMbmNwTw0Ka0lMeFdWR0Y5dnJvdWs1UUNmS2lJTjdwMSs3N2dmSzdmcFdmL1luaGd2TENreXJNUDZ4Z3NGakNTcmh1THF4VQ0KNWJLS1ZpcURCN0Y5T2dxY3lwOURXZWZReFdTZ0IzLzhSQ2tUN1hubmtTcjJSR1RHcWVsejE1Rkp3NXMxZVZ5Lw0KSHpIczJHWVVhVkJnSWRjQmdpQ1VrNHdyZm41NnlEeXc3RWo5Q3dJREFRQUJBb0lCQURLeDUxSkROVWxPT1VXSA0KYnZHb0V4S2EzQ0hhRXZWcVZzM3JUS1A0THlFR214Ym1ERThFVkRNSHpVZmVkekQ2ZDY2NkYzZ0xkdGRoVm03ZA0KMlR6OEZ4K0NBKzBmM1BsRFlJeHYwdzJRbHNJWW8waDNXWDlWcXQzbVhvcUNZcStETjhobnd2Rm5MNVVWL0JTSg0KRXJIZ3p3NGZIcUxUUHZmZ1doclE0S1hrd2xOd3FOQWRLS2grR29JK0h5NkZHNFhORWhoNXdLc052VGQ1YXVnVg0KUDVRbXptRUhIajdhQTU4WmE4cFdrZUU3VVBxTnRjYnBrR3dLOVJZdFlBSzd2bDEyTHdwT1M4Vm4zKzZHMGRKWA0KcXhhQ080QmZ0UEpHYTFsbENUa2RtSlJMcm5BZE8zZVhuRS94OEhpUlR3d25vMDlTNi9iL3krZXgrQ0twcC8vaA0KdGZ1cThCa0NnWUVBd1hxc29mOTlJUjhHL05ZS2lEWkNKWmMxSnJkQ011bzdNYUtINENUT09ReG1XZEo4dHM5OQ0Ka1VwZVE1NU5oWXJSRXZFNVpCcEkvR29YUmxWNFFHbjdlRWdJdUNmcGRsVXp0a2xkbWp2cGd1UXZ4RnhGSXlpUg0KRUpGb1IxbmVPWkd0YjNScFp3ekF2VXdQY05XdTlHN2ZvUUF0MG01VEhxcm02eDl4OTNFRW9aVUNnWUVBMWVLNA0KaG1UNFg2L2dhOHpZL0IveWFLNmFpdFhDVTczdFdvYWVsdFBUbWh5VDVxMFZHUjJINXZrY3I5L3JqREZ0ajdoZQ0KZS8yblM1SEtpem8zaDZmb2JLSm9icUEzdFFYWkpZUGZsQU9zVVBnMTJ4YkRXaXJJQ0dBamxoRG9zMDIvQzVrNA0KbVM3WnFIeGNVdEk4ZitjTmdjbzdLZnRNZ2dOdnhRekFjQm5RdkI4Q2dZRUFzcUhzbVhVbHRsckxQTXp4MUdraw0KRVVqV0RmVE03ZTFNMGJyWjhKeUt1aWswcG1Hc082eStwbElmVGhidVJBbXlsdWFZc2srQ2Eyb1lLeHZtZHJKag0KTnQ1ckRudnJGUkg5T0tQc0ErYWs1ZkNBR2ErSE5iclNsSlZyemRTdlZEK24vV3RobFg4MHhKRmhBRENKNDZ3cQ0KVkoreHJzT2xnbjhQeksydnIyRnRnVEVDZ1lFQWx2UXk0N2R6aktVbXNTNmNuaVUyQXlmb0xzQjdMSHRKZjdDdg0KVVNnam1nczlYM3NjL3VMV3ZlOW5qY0Z1RHozN1k0bnVOWGhxa0cxUEZFQjhYS1BtNkhVZlc2UjhiS2k1L3o0NQ0KbDgrWDJIVzJIUERONDE5NldsN3Yvc1BrV0ZndzA5REtIMkx2ZjNoMStJWWs2T2g3b2ZUSEdQUWhwVWtqbzJGQw0KbUZ1LzlHVUNnWUJIellZdXZRd011c1ArSndBbWJ1d3NXMWthbllmTTY4OVcvcUpOYXBEQTc2UEJPbWljQ05tdw0KSWdMMTh4bjZCcStWQkFETWQzb1ZzNFFuNWM2TXg2SkVERHAwT09pazVrNjhpQTZHK084L2pRaVR1STZLNWNUSw0KQzgxalhsSWo0QzgxWUlCRWxPS3d4LzUyeGxhM0lRbDJ5QWVKWlhUVWx4WUdxMjc0KzdCT1F3PT0NCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tDQo=
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b
+ namespace: pepr-system
+ labels:
+ app: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b
+spec:
+ replicas: 2
+ selector:
+ matchLabels:
+ app: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b
+ template:
+ metadata:
+ labels:
+ app: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b
+ spec:
+ priorityClassName: system-node-critical
+ serviceAccountName: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b
+ containers:
+ - name: server
+ image: ghcr.io/defenseunicorns/pepr/controller:v0.15.0
+ imagePullPolicy: IfNotPresent
+ command:
+ - node
+ - /app/node_modules/pepr/dist/controller.js
+ - b947b4974c9919a3983673269d19f548e2d8a99db04d9401a53eb9f0bcc71ff0
+ readinessProbe:
+ httpGet:
+ path: /healthz
+ port: 3000
+ scheme: HTTPS
+ livenessProbe:
+ httpGet:
+ path: /healthz
+ port: 3000
+ scheme: HTTPS
+ ports:
+ - containerPort: 3000
+ resources:
+ requests:
+ memory: 64Mi
+ cpu: 100m
+ limits:
+ memory: 256Mi
+ cpu: 500m
+ env:
+ - name: PEPR_PRETTY_LOG
+ value: 'false'
+ - name: LOG_LEVEL
+ value: debug
+ volumeMounts:
+ - name: tls-certs
+ mountPath: /etc/certs
+ readOnly: true
+ - name: api-token
+ mountPath: /app/api-token
+ readOnly: true
+ - name: module
+ mountPath: /app/load
+ readOnly: true
+ volumes:
+ - name: tls-certs
+ secret:
+ secretName: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b-tls
+ - name: api-token
+ secret:
+ secretName: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b-api-token
+ - name: module
+ secret:
+ secretName: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b-module
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b
+ namespace: pepr-system
+spec:
+ selector:
+ app: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b
+ ports:
+ - port: 443
+ targetPort: 3000
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b-watcher
+ namespace: pepr-system
+spec:
+ selector:
+ app: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b-watcher
+ ports:
+ - port: 443
+ targetPort: 3000
+---
+apiVersion: v1
+kind: Secret
+metadata:
+ name: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b-module
+ namespace: pepr-system
+type: Opaque
+data:
+ module-b947b4974c9919a3983673269d19f548e2d8a99db04d9401a53eb9f0bcc71ff0.js.gz: >-
+ H4sIAAAAAAAAE61WXW/bNhR9769guSKRBkq1EWRLZShekW1Ft34haRFggYdQ4pXNWiY1kornqfrvu6TsxF2TrQ97sEyRl/fjnHNJ3XBDFvnb4iOULhVQSQXvjG7AuM3kBtdEHimm4/x0gf9U8RVQ1t3wuoVMs1KrSs5bw4sassejPg5bitzAH600ENEGGkOH2Trv/O6Mwp981dSQrKFYaL2k7AaMlVpldJSO0jFlAmxpZOPCHGVL2Ky1ETa7Gtwxujyx+Gx0LctNAmqOOft3XExWWrS1f7NQtka6DZ2xwcJmndIC45/m4xMMNKI981uyh9JqWykyWhbH3z07gioR46MyOa5gnBTHXCTlyfejSjwbj4ujgjKtfjJGm4zKudIG4/N6zTf2ZXgbItiGl5jE1YzVvIDaj/qeDZVibnR5JBILrm1o5sekrFvrAAmAGhyQUJ2AG3JwQPaXSwN8fzlJlkc24WZODhOcKNr5DxYMQpyNDrFiAQ0oAaqUHpBQP/0dUT/2ePSBKHcvfatcwZq49Iw3vJA1Ihs9BNxn/D0nVvplsjUj5a0D4jSxC70m/rfdbQlyvSRr6RbkN24qgqgt+RwQhqbWmxUoZ1PK9gGlf6EdnfUxa3LqwLq7TLrLBahs2eeryTJyKU8vAPFycfrSngXcxFvzoRF+EOGkerNzGw1O4/QSE3nl+UIwhkySIZNEqkqjwevW4fZI5acd8kR0rtJzvmbADLP54/HEmU1ncu50EekUI/HwiP3iqC+5Kxe4vLfS+w2Q/3Lx9k3acGMhMvFgF/G4cwuDWHkmgt6i65+5rEF4JIMxcQsgNhR55zIjTzreX8d9hTt8kpzoisA0HSoBcaZXjVYe2un0ahbz1GJNrc3znP4YTKSa04MDRPCVnqe+8Oj6PQYqd/t8gNRz0hNpCTaewcl6syUNd1/HDNJb88st19P0ik/DvhkOG3zoIohVvAAFhnsFYRKQzm9fp0MOQdgPJ7HglvAaGRYbHAsseCsJVCGeC0g3QSyIdCl5o912EtMkXGlE0KTXcRbdk/CnT/fN5l1/b3lXQzqzvPtcltsTp2EDzBk9b5XyELMvy8/2i8fzokIVrcDxQK53w4a/OI4nnrDHo+memPLCaR4FLVlnMISsNhHaZvs2XyzjMc7tRpWkalXp45Iq3AEdX3PpSBuNR/HE6wjyoU2Y2cncG0Qj5tJfT2yMellKJe6abq+/IE5fgIvUTtsStR2YhUHXw3FK7uQ9x3i7s2AQODl80qn+kEhFbo8DPwf9oVf8P8qSse8An7UdutHsdyPfbzgbszLn9/CpB5lOygeEyve4wnYpd31EL9qyBBAg8GK41y96zcuYmf+gjiPLHul/x/l509R4Ou9kspWbujs0M8CLIKyE515UVFiHnVEOt/nXctOGI/R/oKcXUYVXdw3QPFfibMHVHC4ChngL3aqxRdl0GKE1KhyF+L2yksibzk/xAn0vV6BbF2mmvh3DURyj03brFL34DUX6Di+21+FTIarZ1WoWTx49ffoNsbrF2l/zpsG0Ppy/ysO1+jWfAOlHm6548+hvWNCUW08JAAA=
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ name: peprstores.pepr.dev
+spec:
+ group: pepr.dev
+ versions:
+ - name: v1
+ served: true
+ storage: true
+ schema:
+ openAPIV3Schema:
+ type: object
+ properties:
+ data:
+ type: object
+ additionalProperties:
+ type: string
+ scope: Namespaced
+ names:
+ plural: peprstores
+ singular: peprstore
+ kind: PeprStore
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: Role
+metadata:
+ name: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b-store
+ namespace: pepr-system
+rules:
+ - apiGroups:
+ - pepr.dev
+ resources:
+ - peprstores
+ resourceNames:
+ - ''
+ verbs:
+ - create
+ - get
+ - patch
+ - watch
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: RoleBinding
+metadata:
+ name: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b-store
+ namespace: pepr-system
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: Role
+ name: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b-store
+subjects:
+ - kind: ServiceAccount
+ name: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b-store
+ namespace: pepr-system
+---
+apiVersion: admissionregistration.k8s.io/v1
+kind: MutatingWebhookConfiguration
+metadata:
+ name: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b
+webhooks:
+ - name: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b.pepr.dev
+ admissionReviewVersions:
+ - v1
+ - v1beta1
+ clientConfig:
+ caBundle: >-
+ LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlDdERDQ0FaeWdBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUXNGQURBY01Sb3dHQVlEVlFRREV4RlFaWEJ5DQpJRVZ3YUdWdFpYSmhiQ0JEUVRBZUZ3MHlNekV4TVRNeE56UXdORFZhRncweU5ERXhNVE14TnpRd05EVmFNQUF3DQpnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEUWIvRkh4TzVlWmUxenZOYTVKUTM5DQp0ZXR2RENXS0duWXRpZlVwTElXR1RKUkhnUnlVY1ArMUdXa3BjK1kzUUhpaGZJOFJLK0w1OVhiTjdTUDR2bFBkDQp1d001M05nYi93b3RkTWd6bG04a243eFR1Y1pTTGs4dUtRZi8wMTUzSVE1OTNhVThRbW9LZ09oMWNNTFNHM29DDQpYZDJmdGk5YTc5dFNwSW5XeVdkaE1hVVIxTGJvSTlMOGR0M2l5bVpMR2pxdlNEOVIvWlRiUVJXMTNENVd0ZnZYDQpVY0hqaVZPZmg3Si9Ga2U4ZzJxZjEvTml2NDZ1M0tacnN4Z1lMQ3pRSDcwdnhjMWZndmx6YnY5SG0xOFQ0bVZjDQpKK2t5cXptNHpjdkV2ZlIzUzJVQmlZZUQxZVZKcTVDdnZ2STlIT25YY3RXTWdpdVRFSE8xb3kzSEQwLytUK1p4DQpBZ01CQUFHakhUQWJNQXdHQTFVZEV3UUZNQU1CQWY4d0N3WURWUjBQQkFRREFnTDBNQTBHQ1NxR1NJYjNEUUVCDQpDd1VBQTRJQkFRQjRmekRLc3hvU3VBcVMrZWhlSUNzek1EdHlrSUp4OTB3RE5lVUQ5NkJSSFN3OHdkZ0NuOThnDQozdEwyeHZ3eloyY0xDUW5mUjhBMHdEU0Q4cWEyTDh2cXVnczZBQ0JSQm9DRFAyOWEySklOQ2RITzdBSnkvVHpvDQp4dTFxeWQ3K2xKUFB4enFHYk9GSGJ5NGhLTi9PSm13NWdrNENENWtPVXJWNzMwbXpxLzNub21SUlJON3JNVUI1DQpaZzl0YzVwNStWNGE0UFpTWDdTZ0J1WDdVTHdOUDFVVWhlTzB1N2pIeDZGdVdUczlhYkdBemM1dUVjYzd3bndlDQp0WWJRYU04YnlzdmM0L2tqL2YrMjFaMld2Z0RqWGJxSDRTcEF3WUQzY2JpQUtWVDU1SkhrUFQ1a0tsVXFVQUZpDQp4c2QzbE9jeE5ndEpueEI1WUVFYXBzWXFqYnBGTWtmNA0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ0K
+ service:
+ name: pepr-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b
+ namespace: pepr-system
+ path: >-
+ /mutate/59031e0e732fa84f1999fdc31a1f641e0d02ac3f147561522afa032b5c4c3c6b
+ failurePolicy: Ignore
+ matchPolicy: Equivalent
+ timeoutSeconds: 10
+ namespaceSelector:
+ matchExpressions:
+ - key: pepr.dev
+ operator: NotIn
+ values:
+ - ignore
+ - key: kubernetes.io/metadata.name
+ operator: NotIn
+ values:
+ - kube-system
+ - pepr-system
+ objectSelector:
+ matchExpressions:
+ - key: pepr.dev
+ operator: NotIn
+ values:
+ - ignore
+ - key: kubernetes.io/metadata.name
+ operator: NotIn
+ values:
+ - kube-system
+ - pepr-system
+ rules:
+ - apiGroups:
+ - ''
+ apiVersions:
+ - v1
+ operations:
+ - CREATE
+ - UPDATE
+ resources:
+ - secrets
+ sideEffects: None
diff --git a/examples/component-webhooks/pepr.ts b/examples/component-webhooks/pepr.ts
new file mode 100644
index 0000000000..572e4814c1
--- /dev/null
+++ b/examples/component-webhooks/pepr.ts
@@ -0,0 +1,15 @@
+import { PeprModule } from "pepr";
+// cfg loads your pepr configuration from package.json
+import cfg from "./package.json";
+
+// HelloPepr is a demo capability that is included with Pepr. Comment or delete the line below to remove it.
+import { Webhook } from "./capabilities/hook";
+
+/**
+ * This is the main entrypoint for this Pepr module. It is run when the module is started.
+ * This is where you register your Pepr configurations and capabilities.
+ */
+new PeprModule(cfg, [
+ // Your additional capabilities go here
+ Webhook,
+]);
diff --git a/examples/component-webhooks/tsconfig.json b/examples/component-webhooks/tsconfig.json
new file mode 100644
index 0000000000..27f5485413
--- /dev/null
+++ b/examples/component-webhooks/tsconfig.json
@@ -0,0 +1,23 @@
+{
+ "compilerOptions": {
+ "allowSyntheticDefaultImports": true,
+ "declaration": true,
+ "declarationMap": true,
+ "emitDeclarationOnly": true,
+ "esModuleInterop": true,
+ "lib": [
+ "ES2022"
+ ],
+ "module": "CommonJS",
+ "moduleResolution": "node",
+ "outDir": "dist",
+ "resolveJsonModule": true,
+ "rootDir": ".",
+ "strict": false,
+ "target": "ES2022",
+ "useUnknownInCatchVariables": false
+ },
+ "include": [
+ "**/*.ts"
+ ]
+}
diff --git a/examples/component-webhooks/zarf.yaml b/examples/component-webhooks/zarf.yaml
new file mode 100644
index 0000000000..302453fedf
--- /dev/null
+++ b/examples/component-webhooks/zarf.yaml
@@ -0,0 +1,46 @@
+kind: ZarfPackageConfig
+metadata:
+ name: component-webhooks
+ description: Example Pepr Module for Component Webhooks
+ url: https://github.com/defenseunicorns/pepr
+ version: 0.0.1
+
+components:
+ - name: module
+ required: true
+ manifests:
+ - name: module
+ namespace: pepr-system
+ files:
+ - pepr-module-cb5693ef-d13c-5fe1-b5ad-c870fd911b3b.yaml
+ images:
+ - ghcr.io/defenseunicorns/pepr/controller:v0.15.0
+
+# YAML keys starting with `x-` are custom keys that are ignored by the Zarf CLI
+# The `x-mdx` key is used to render the markdown content for https://docs.zarf.dev/ref/examples
+x-mdx: |
+ :::caution
+
+ Component Webhooks is currently an [Alpha Feature](/roadmap#alpha). This feature is not extensively tested and may be affected by breaking changes in the future. We encourage you to experiment with this feature and provide feedback to the Zarf team as we begin to stabilize this feature.
+
+ :::
+
+ This example demonstrates how to use webhooks to perform actions during the lifecycle of package deployments. Webhooks are similar to [Component Actions](/ref/actions/) such that they both enable complex functionality to be executed during the lifecycle of a package deployment. The key difference between webhooks and actions is that actions are defined within the package's `zarf.yaml` while webhooks are defined within the cluster that you are deploying your package onto.
+
+ This example uses Pepr as a mutating webhook that watches for any updates to a zarf package secret. As `zarf` deploys components, it updates a secret in the `zarf` namespace that 'declares' what components are being deployed. Pepr watches for these updates and runs an example operation for each component that gets deployed to the cluster. Since Pepr is a mutating webhook, as `zarf` updates the package secret for each component that is being deployed, Pepr will modify the secret to denote that a webhook operation is executing for that component. To account for this, every time `zarf` updates the package secret, it will check to see if a webhook has modified the secret and will wait if there are any webhooks in a `Running` state. The webhook itself is responsible for updating the secrets when it's operations complete. `zarf` will poll the secret every second to check if the webhook is complete allowing it to continue deploying the rest of the package.
+
+ Webhooks have the potential to be extremely powerful. Since they are written in Javascript, they have the capability to do almost anything that you can do with JavaScript. This includes interacting with the Kubernetes API, interacting with other APIs, or even interacting with other systems. Caution should be exercised when deploying webhooks to clusters as they have the potential to run any time a new package is deployed to the cluster, and future package deployers might not be aware that the cluster has webhooks configured.
+
+ :::note
+
+ If you want to update the capability yourself, you will need to rebuild the Pepr module before creating the package.
+
+ This can be completed by running the following commands:
+
+ ```bash
+ npm ci
+ npx pepr build
+ zarf package create ./dist
+ ```
+
+ :::
diff --git a/examples/composable-packages/README.md b/examples/composable-packages/README.md
deleted file mode 100644
index d080678290..0000000000
--- a/examples/composable-packages/README.md
+++ /dev/null
@@ -1,74 +0,0 @@
-import ExampleYAML from "@site/src/components/ExampleYAML";
-
-# Composable Packages
-
-This example demonstrates using Zarf to import components from existing Zarf package definitions while merging overrides to add or change functionality. It uses the existing [DOS games](../dos-games/README.md) and [WordPress](../wordpress/README.md) examples by simply adding `import` keys in the new [zarf.yaml](zarf.yaml) file.
-
-The `import` key in Zarf supports two modes to pull in a component:
-
-1. The `path` key allows you to specify a path to a directory that contains the `zarf.yaml` that you wish to import on your local filesystem. This allows you to have a common component that you can reuse across multiple packages *within* a project.
-
-2. The `url` key allows you to specify an `oci://` URL to a skeleton package that was published to an OCI registry. Skeleton packages are special package bundles that contain the `zarf.yaml` package definition and any local files referenced by that definition at publish time. This allows you to version a set of components and import them into multiple packages *across* projects.
-
-:::tip
-
-You can create a skeleton package from a `zarf.yaml` by pointing `zarf package publish` at the directory that contains it:
-
-```bash
-zarf package publish path/containing/package/definition oci://your-registry.com
-```
-
-## Merge Strategies
-
-When merging components together Zarf will adopt the following strategies depending on the kind of primitive (`files`, `required`, `manifests`) that it is merging:
-
-| Kind | Key(s) | Description |
-|----------------------------|----------------------------------------|-------------|
-| Component Behavior | `name`, `group`, `default`, `required` | These keys control how Zarf interacts with a given component and will _always_ take the value of the overriding component |
-| Component Description | `description` | This key will only take the value of the overriding component if it is not empty |
-| Cosign Key Path | `cosignKeyPath` | [Deprecated] This key will only take the value of the overriding component if it is not empty |
-| Un'name'd Primitive Arrays | `actions`, `dataInjections`, `files`, `images`, `repos` | These keys will append the overriding component's version of the array to the end of the base component's array |
-| 'name'd Primitive Arrays | `charts`, `manifests` | For any given element in the overriding component, if the element matches based on `name` then its values will be merged with the base element of the same `name`. If not then the element will be appended to the end of the array |
-
-:::
-
-## `zarf.yaml` {#zarf.yaml}
-
-:::info
-
-To view the example in its entirety, select the `Edit this page` link below the article and select the parent folder.
-
-:::
-
-:::note
-
-Creating this example requires a locally hosted container registry that has the `wordpress` skeleton package published and available. You can do this by running the following commands:
-
-```bash
-docker run -d -p 555:5000 --restart=always --name registry registry:2
-zarf package publish examples/wordpress oci://127.0.0.1:555 --insecure
-```
-
-You will also need to pass the `--insecure` flag to `zarf package create` to pull from the `http` registry:
-
-```bash
-zarf package create examples/composable-packages/ --insecure
-```
-
-:::
-
-
-
-:::info
-
-As you can see in the example, the `import` key can be combined with other keys to merge components together. This can be done as many components deep as you wish and in the end will generate one main `zarf.yaml` file with all of the defined resources included.
-
-This is useful if you want to slightly tweak a given component while maintaining a common core.
-
-:::
-
-:::note
-
-The import `path` or `url` must be statically defined at create time. You cannot use [package templates](../variables/README.md#create-time-package-configuration-templates) within them.
-
-:::
diff --git a/examples/composable-packages/zarf.yaml b/examples/composable-packages/zarf.yaml
index ab5890fddd..35dab0b33e 100644
--- a/examples/composable-packages/zarf.yaml
+++ b/examples/composable-packages/zarf.yaml
@@ -24,20 +24,25 @@ components:
files:
- quake-service.yaml
- - name: oci-wordpress-url
+ - name: oci-games-url
# The component logic keys ('required', 'group', and 'default') always override those of the imported package
# required: false # the initial value overrides the child component
# group: "" # the initial value overrides the child component
# default: false # the initial value overrides the child component
import:
# The URL to the skeleton package containing this component's package definition
- url: oci://localhost:555/wordpress:16.0.4-skeleton
+ url: oci://🦄/dos-games:1.0.0
# Example optional custom name to point to in the imported package (default is to use this component's name)
- name: wordpress
+ name: baseline
# Un'name'd Zarf primitives will be appended to the end of the primitive's list for that component.
actions:
onDeploy:
before:
- cmd: ./zarf tools kubectl get -n dos-games deployment -o jsonpath={.items[0].metadata.creationTimestamp}
- setVariables:
- - name: WORDPRESS_BLOG_NAME
+
+# YAML keys starting with `x-` are custom keys that are ignored by the Zarf CLI
+# The `x-mdx` key is used to render the markdown content for https://docs.zarf.dev/ref/examples
+x-mdx: |
+ As you can see in the example, the `import` key can be combined with other keys to merge components together. This can be done as many components deep as you wish and in the end will generate one main `zarf.yaml` file with all of the defined resources included.
+
+ This is useful if you want to slightly tweak a given component while maintaining a common core.
diff --git a/examples/config-file/README.md b/examples/config-file/README.md
deleted file mode 100644
index d613c0aedf..0000000000
--- a/examples/config-file/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-import ExampleYAML from "@site/src/components/ExampleYAML";
-
-# Config File Example
-
-This example shows how to use a config file to configure the Zarf CLI, for more details on the usage of config files, see the documentation at [docs/user-guide/the-zarf-cli](../../docs/2-the-zarf-cli/index.md#using-a-config-file-to-make-cli-command-flags-declarative).
-
-## `zarf.yaml` {#zarf.yaml}
-
-:::info
-
-To view the example in its entirety, select the `Edit this page` link below the article and select the parent folder.
-
-:::
-
-
diff --git a/examples/dos-games/README.md b/examples/dos-games/README.md
deleted file mode 100644
index fcf6ea542b..0000000000
--- a/examples/dos-games/README.md
+++ /dev/null
@@ -1,21 +0,0 @@
-import ExampleYAML from "@site/src/components/ExampleYAML";
-
-# Retro Arcade
-
-This example provides the basis for Zarf's [Retro Arcade](../../docs/5-zarf-tutorials/3-deploy-a-retro-arcade.md) tutorial. It deploys a Dos Games arcade into the cluster and provides an easy way to connect and play games.
-
-:::note
-
-In this example, there is no "GitOps" service. Zarf is only showing off its ability to act as a standard means of packaging, distribution, and runtime.
-
-:::
-
-## `zarf.yaml` {#zarf.yaml}
-
-:::info
-
-To view the example in its entirety, select the `Edit this page` link below the article and select the parent folder.
-
-:::
-
-
diff --git a/examples/dos-games/zarf.yaml b/examples/dos-games/zarf.yaml
index f6dc923b75..922f402e76 100644
--- a/examples/dos-games/zarf.yaml
+++ b/examples/dos-games/zarf.yaml
@@ -24,3 +24,14 @@ components:
name: game
namespace: dos-games
condition: available
+
+# YAML keys starting with `x-` are custom keys that are ignored by the Zarf CLI
+# The `x-mdx` key is used to render the markdown content for https://docs.zarf.dev/ref/examples
+x-mdx: |
+ This example provides the basis for Zarf's [Retro Arcade](/tutorials/3-deploy-a-retro-arcade) tutorial. It deploys a Dos Games arcade into the cluster and provides an easy way to connect and play games.
+
+ :::note
+
+ In this example, there is no requirement for a "GitOps" service; Zarf is only showing off its ability to act as a standard means of packaging, distribution, and deployment runtime.
+
+ :::
diff --git a/examples/git-data/README.md b/examples/git-data/README.md
deleted file mode 100644
index 3aa8e7694b..0000000000
--- a/examples/git-data/README.md
+++ /dev/null
@@ -1,53 +0,0 @@
-import ExampleYAML from "@site/src/components/ExampleYAML";
-
-# Git Repositories
-
-This example shows how to package `git` repositories within a Zarf package. This package does not deploy anything itself but pushes assets to the specified `git` service to be consumed as desired. Within Zarf, there are a few ways to include `git` repositories (as described below).
-
-## Tag-Based Git Repository Clone
-
-Tag-based `git` repository cloning is the **recommended** way of cloning a `git` repository for air-gapped deployments because it wraps meaning around a specific point in git history that can easily be traced back to the online world. Tag-based clones are defined using the `scheme://host/repo@tag` format as seen in the example of the `defenseunicorns/zarf` repository (`https://github.com/defenseunicorns/zarf.git@v0.15.0`).
-
-A tag-based clone only mirrors the tag defined in the Zarf definition. The tag will be applied on the `git` mirror to a zarf-specific branch name based on the tag name (e.g. the tag `v0.1.0` will be pushed to the `zarf-ref-v0.1.0` branch). This ensures that this tag will be pushed and received properly by the airgap `git` server.
-
-:::note
-
-If you would like to use a protocol scheme other than http/https, you can do so with something like the following: `ssh://git@github.com/defenseunicorns/zarf.git@v0.15.0`. Using this you can also clone from a local repo to help you manage larger git repositories: `file:///home/zarf/workspace/zarf@v0.15.0`.
-
-:::
-
-:::caution
-
-Because Zarf creates long-lived mirrors of repositories in the air gap, it does not support shallow clones (i.e. `git clone --depth x`). These may be present in build environments (i.e. [GitLab runners](https://github.com/defenseunicorns/zarf/issues/1698)) and should be avoided. To learn more about shallow and partial clones see the [GitHub blog on the topic](https://github.blog/2020-12-21-get-up-to-speed-with-partial-clone-and-shallow-clone).
-
-:::
-
-## SHA-Based Git Repository Clone
-
-In addition to tags, Zarf also supports cloning and pushing a specific SHA hash from a `git` repository, but this is **not recommended** as it is less readable/understandable than tag cloning. Commit SHAs are defined using the same `scheme://host/repo@shasum` format as seen in the example of the `defenseunicorns/zarf` repository (`https://github.com/defenseunicorns/zarf.git@c74e2e9626da0400e0a41e78319b3054c53a5d4e`).
-
-A SHA-based clone only mirrors the SHA hash defined in the Zarf definition. The SHA will be applied on the `git` mirror to a zarf-specific branch name based on the SHA hash (e.g. the SHA `c74e2e9626da0400e0a41e78319b3054c53a5d4e` will be pushed to the `zarf-ref-c74e2e9626da0400e0a41e78319b3054c53a5d4e` branch). This ensures that this tag will be pushed and received properly by the airgap `git` server.
-
-## Git Reference-Based Git Repository Clone
-
-If you need even more control, Zarf also supports providing full `git` [refspecs](https://git-scm.com/book/en/v2/Git-Internals-The-Refspec), as seen in `https://repo1.dso.mil/big-bang/bigbang.git@refs/heads/release-1.54.x`. This allows you to pull specific tags or branches by using this standard. The branch name used by zarf on deploy will depend on the kind of ref specified, branches will use the upstream branch name, whereas other refs (namely tags) will use the `zarf-ref-*` branch name.
-
-## Git Repository Full Clone
-
-Full clones are used in this example with the `stefanprodan/podinfo` repository and follow the `scheme://host/repo` format (`https://github.com/stefanprodan/podinfo.git`). Full clones will contain **all** branches and tags in the mirrored repository rather than any one specific tag.
-
-:::note
-
-If you want to learn more about how Zarf works with GitOps, see the [podinfo-flux](../podinfo-flux/) example.
-
-:::
-
-## `zarf.yaml` {#zarf.yaml}
-
-:::info
-
-To view the example in its entirety, select the `Edit this page` link below the article and select the parent folder.
-
-:::
-
-
diff --git a/examples/git-data/zarf.yaml b/examples/git-data/zarf.yaml
index ca61b0d252..01e2c5d4eb 100644
--- a/examples/git-data/zarf.yaml
+++ b/examples/git-data/zarf.yaml
@@ -6,7 +6,6 @@ metadata:
components:
- name: full-repo
- required: true
repos:
# The following performs a full Git Repo Mirror with `go-git` (internal to Zarf)
- https://github.com/defenseunicorns/zarf-public-test.git
@@ -14,7 +13,6 @@ components:
- https://dev.azure.com/defenseunicorns/zarf-public-test/_git/zarf-public-test
- name: specific-tag
- required: true
repos:
# The following performs a tag Git Repo Mirror with `go-git` (internal to Zarf)
- https://github.com/defenseunicorns/zarf-public-test.git@v0.0.1
@@ -24,7 +22,6 @@ components:
- https://dev.azure.com/defenseunicorns/zarf-public-test/_git/zarf-public-test@v0.0.1
- name: specific-branch
- required: true
repos:
# The following performs a branch Git Repo Mirror with `go-git` (internal to Zarf)
- https://github.com/defenseunicorns/zarf-public-test.git@refs/heads/dragons
@@ -32,10 +29,13 @@ components:
- https://dev.azure.com/defenseunicorns/zarf-public-test/_git/zarf-public-test@refs/heads/dragons
- name: specific-hash
- required: true
repos:
# The following performs a SHA Git Repo Mirror with `go-git` (internal to Zarf)
- https://github.com/defenseunicorns/zarf-public-test.git@01a23218923f24194133b5eb11268cf8d73ff1bb
# The following performs a SHA Git Repo Mirror forcing a fallback to host `git`
- https://dev.azure.com/defenseunicorns/zarf-public-test/_git/zarf-public-test@01a23218923f24194133b5eb11268cf8d73ff1bb
+# YAML keys starting with `x-` are custom keys that are ignored by the Zarf CLI
+# The `x-mdx` key is used to render the markdown content for https://docs.zarf.dev/ref/examples
+x-mdx: |
+ To learn more about how Zarf handles `git` repositories, see the [Git Repositories section](/ref/components/#git-repositories) of the package components documentation.
diff --git a/examples/helm-charts/README.md b/examples/helm-charts/README.md
deleted file mode 100644
index e77d9f9ec3..0000000000
--- a/examples/helm-charts/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-import ExampleYAML from "@site/src/components/ExampleYAML";
-
-# Helm Charts
-
-This example shows the many ways you can deploy Helm Charts with Zarf.
-
-## `zarf.yaml` {#zarf.yaml}
-
-:::info
-
-To view the example in its entirety, select the `Edit this page` link below the article and select the parent folder.
-
-:::
-
-
diff --git a/examples/helm-charts/values.yaml b/examples/helm-charts/values.yaml
new file mode 100644
index 0000000000..f86a45afe7
--- /dev/null
+++ b/examples/helm-charts/values.yaml
@@ -0,0 +1,5 @@
+ui:
+ color: "#0d133d"
+ message: "greetings from podinfo (as deployed by Zarf)"
+ # Replace the githubusercontent URL for the airgap
+ logo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIFZlY3Rvcm5hdG9yIChodHRwOi8vdmVjdG9ybmF0b3IuaW8vKSAtLT4KCjxzdmcKICAgaGVpZ2h0PSI2NCIKICAgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIgogICBzdHlsZT0iY2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kIgogICB2ZXJzaW9uPSIxLjEiCiAgIHZpZXdCb3g9IjAgMCA2NCA2NCIKICAgd2lkdGg9IjY0IgogICB4bWw6c3BhY2U9InByZXNlcnZlIgogICBpZD0ic3ZnODY1IgogICBzb2RpcG9kaTpkb2NuYW1lPSJaYXJmLXJlZG8uc3ZnIgogICBpbmtzY2FwZTp2ZXJzaW9uPSIxLjIuMiAoYjBhODQ4NjU0MSwgMjAyMi0xMi0wMSkiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIgogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnZlY3Rvcm5hdG9yPSJodHRwOi8vdmVjdG9ybmF0b3IuaW8iPjxzb2RpcG9kaTpuYW1lZHZpZXcKICAgaWQ9Im5hbWVkdmlldzg2NyIKICAgcGFnZWNvbG9yPSIjNTA1MDUwIgogICBib3JkZXJjb2xvcj0iI2VlZWVlZSIKICAgYm9yZGVyb3BhY2l0eT0iMSIKICAgaW5rc2NhcGU6c2hvd3BhZ2VzaGFkb3c9IjAiCiAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICBpbmtzY2FwZTpwYWdlY2hlY2tlcmJvYXJkPSIwIgogICBpbmtzY2FwZTpkZXNrY29sb3I9IiM1MDUwNTAiCiAgIHNob3dncmlkPSJmYWxzZSIKICAgaW5rc2NhcGU6em9vbT0iMTYiCiAgIGlua3NjYXBlOmN4PSIzMi42NTYyNSIKICAgaW5rc2NhcGU6Y3k9IjM2LjUiCiAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMjU2MCIKICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTM3MSIKICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgIGlua3NjYXBlOndpbmRvdy15PSIzMiIKICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMSIKICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0iZzQzNjEiIC8+CjxkZWZzCiAgIGlkPSJkZWZzNjE0Ij4KPHBhdGgKICAgZD0ibSA0OC45MTY2LDI1LjYzMDIgYyAwLjc1ODYsMC4zODc5IDQuMzU1MiwxLjk3MjQgOC44NDc4LC0wLjE3OTggLTAuNDAxNSwtMC42MzY2IC0xLjkxMTYsLTIuNjgzNSAtNC45OTI1LC00LjA2NSAtMS4zNTQ1LC0wLjQyMjEgLTIuNTIxOSwtMC40MzI2IC0zLjM4MzYsLTAuMjAwNiAtMS4yMTE4LDEuNDM4MyAtMS40Nzk2LDIuOTc4OSAtMC40NzE3LDQuNDQ1NCB6IgogICBpZD0iRmlsbCIgLz4KPGxpbmVhckdyYWRpZW50CiAgIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wNjA0OTU1LDAuMDkwNzQzMikiCiAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICBpZD0iTGluZWFyR3JhZGllbnQiCiAgIHgxPSIzMS4xOTYxIgogICB4Mj0iMzEuMTk2MSIKICAgeTE9IjYxLjM3NjQ5OSIKICAgeTI9IjEuODA0OTk5OSI+CjxzdG9wCiAgIG9mZnNldD0iMCIKICAgc3RvcC1jb2xvcj0iIzdiZDVmNSIKICAgaWQ9InN0b3A1NTAiIC8+CjxzdG9wCiAgIG9mZnNldD0iMSIKICAgc3RvcC1jb2xvcj0iI2RjY2ZlNSIKICAgaWQ9InN0b3A1NTIiIC8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoCiAgIGQ9Im0gNDkuMzczNCwyMC42NjA4IGMgMC44NTA3LDAuMjg5NyA2LjAxMzcsMS42NzI1IDExLjE3NTEsLTQuOTYxNSAtMS41OTM0LC0xLjIzNTYgLTkuMDkzOCwtMi4zNzA5IC0xMi4xODAyLDAuNTM4IC0xLjEyMjYsMS41MDczIC0wLjk2MjEsMy4yNTg3IDEuMDAzNiw0LjM5OTMgeiIKICAgaWQ9IkZpbGxfMiIgLz4KPGxpbmVhckdyYWRpZW50CiAgIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wNjMyNDQ1LC0wLjAwNTQ5OTU5KSIKICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgIGlkPSJMaW5lYXJHcmFkaWVudF8yIgogICB4MT0iMzEuMTk2MSIKICAgeDI9IjMxLjE5NjEiCiAgIHkxPSI2MS4zNzY0OTkiCiAgIHkyPSIxLjgwNDk5OTkiPgo8c3RvcAogICBvZmZzZXQ9IjAiCiAgIHN0b3AtY29sb3I9IiM3YmQ1ZjUiCiAgIGlkPSJzdG9wNTU2IiAvPgo8c3RvcAogICBvZmZzZXQ9IjEiCiAgIHN0b3AtY29sb3I9IiNkY2NmZTUiCiAgIGlkPSJzdG9wNTU4IiAvPgo8L2xpbmVhckdyYWRpZW50Pgo8cGF0aAogICBkPSJNIDQ4LjE3NTYsMTUuODIzMyBDIDU4LjM0ODYsMTMuMzc4NSA1OS4zNzc5LDcuNjE5NzcgNTkuNjEzNyw2LjI3NjQzIDQ5LjczNyw1Ljk1ODEgNDUuNzg2MywxMC4zMjg4IDQ1LjAzNzYsMTEuMzAyOSBjIDAuMjUyNCwyLjE3OTYgMC42MDM1LDMuNDU2MiAzLjEzNSw0LjUxMzggeiIKICAgaWQ9IkZpbGxfMyIgLz4KPGxpbmVhckdyYWRpZW50CiAgIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMzYzOTMxLC0wLjAyMTgzNTgpIgogICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgaWQ9IkxpbmVhckdyYWRpZW50XzMiCiAgIHgxPSIzMS4xOTYxIgogICB4Mj0iMzEuMTk2MSIKICAgeTE9IjYxLjM3NjQ5OSIKICAgeTI9IjEuODA0OTk5OSI+CjxzdG9wCiAgIG9mZnNldD0iMCIKICAgc3RvcC1jb2xvcj0iIzdiZDVmNSIKICAgaWQ9InN0b3A1NjIiIC8+CjxzdG9wCiAgIG9mZnNldD0iMSIKICAgc3RvcC1jb2xvcj0iI2RjY2ZlNSIKICAgaWQ9InN0b3A1NjQiIC8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoCiAgIGQ9Im0gMjUuODQ3NCw1MC43MDM2IGMgLTAuNjE1MywwLjg3NTYgLTIuMzk2LDIuMzk0OCAtMy4zMjY5LDIuOTIzNiAtMS4wNzIsMC42MDY1IC0yLjI3NzMsMC45MzkzIC0zLjUwODksMC45Njg3IC0xLjIzMTYsMC4wMjk1IC0yLjQ1MTUsLTAuMjQ1NCAtMy41NTEzLC0wLjggLTIuMjkwNywtMS4xNjgzIC00LjE0OTksLTMuNjY0NCAtNC44NzE3LC03LjYzMzYgLTAuMDUzMSwtMC4yOTE5IC0wLjUzNTIsLTAuNTA4IC0wLjU0NzksLTAuMDQwMSAwLjA0NzcsNS42Njk0IDIuMzExNiw5LjM3MTEgNS40MjEyLDExLjMxOTIgMC41MDg3LDAuMzcyIDEuMDQzMiwwLjU2NTcgMS42MjY1LDAuODA0NyA3LjY0NjQsMi4zMzk3IDEyLjgwNzgsLTIuNDM1MiAxNC44Nzg3LC00Ljk1MzIgLTAuNjEzNywxLjU0OTYgLTEuNTUxLDIuOTUwNiAtMi43NDk1LDQuMTA5NiAtMC45MjgxLDAuODk3NiAtMS45ODczLDEuNjQ4OSAtMy4xNDE0LDIuMjI4MyAtMS40MjUyLDAuNzEzNiAtMi45NjM1LDEuMTc0NSAtNC41NDY1LDEuMzYyNSAtMS41NzU0LDAuMTkwNiAtMy4xNzIyLDAuMDk4OSAtNC43MTUzLC0wLjI3MDYgQyAxNS4xNTEyLDYwLjMzNDMgMTMuNTk0OSw1OS41ODIxIDEyLjI1NzgsNTguNTIwMyAxMC45MjA2LDU3LjQ1ODQgOS44MzU5NCw1Ni4xMTM0IDkuMDgxODgsNTQuNTgyMiA2LjkwNTgyLDUwLjEyNTYgNy4yNjkwMyw0NS41MDY2IDguMzkwNTEsNDIuOTA5MSA4LjYzOTQ3LDQyLjI0MTggOS4wNDYwNiw0MS42NDQ0IDkuNTc1NzIsNDEuMTY3OCA5LjcxNDQzLDQxLjAzMjkgOS44OTM1OSw0MC45NDcgMTAuMDg1OCw0MC45MjM1IGMgMC4xOTIyLC0wLjAyMzYgMC4zODY4LDAuMDE2NCAwLjU1NCwwLjExMzggMC41Mzg1LDAuMzQzOCAxLjAxNjQsMS4zMjQzIDEuMjk5OSwzLjEyNiAwLjg0NDQsNC43NjUgMi43NDY1LDYuOTk3NCA1LjgwNjQsOC43ODQyIDAuNjk0MiwwLjM1OSAxLjc5MjUsMC42MzIzIDIuNTc0MSwwLjY0MjIgMC43ODE1LDAuMDEgMS41NTQ2LC0wLjE2MjUgMi4yNTc3LC0wLjUwMzcgMC44NDQyLC0wLjQwNDIgMi4yODYxLC0xLjAwMTYgMy4yNjk1LC0yLjM4MjQgeiIKICAgaWQ9IkZpbGxfNCIgLz4KPHBhdGgKICAgZD0ibSAzMS43MTIyLDQyLjcxMTcgYyAtMC4zNDE5LC0xLjQzNDYgLTAuNjgxOCwtMi44NzEzIC0xLjAxOTUsLTQuMzEwMSBoIC0wLjAxOTEgYyAwLjA2MzcsLTAuOTU1IDAuNDIzNywtMi4wNzg3IDAuMTg4LC0yLjg2NSBsIC0wLjYxMTcsMi44MDc3IHYgMC4wOTIzIGwgMS4wNTEzLDQuNDU2NiBjIDAuMDMxOSwwLjA0MTQgMC4wNjM4LDAuMDg1OSAwLjA5MjQsMC4xMzA1IGwgMS41MjkzLDAuOTU1IC0xLjQ5MSwwLjI0ODMgMC4wNjY5LDAuMjI5MiBjIDAsMC4wMDMxIDAuMzMxMywxLjEwNzcgLTAuMDcwMSwxLjg1OSAtMC4yMDM5LC0wLjM5MTYgLTAuNjIxMywtMS4wNiAtMC44NDExLC0xLjQ1MTYgLTAuMDc2NSwwLjAxMjggLTAuNDY4NCwxLjI3NjUgLTEuMzE5LDEuNjkwMyAtMC4wMTI4LC0wLjU3OTMgLTAuMDM1MSwtMS4xNTg3IC0wLjAzNTEsLTEuNzM4IGwgLTAuMzUwNSwwLjM0MzggYyAtMC4zNDQ1LDAuMzEyMSAtMC43NzU0LDAuNTEzIC0xLjIzNjEsMC41NzYxIDAuNDk3LC0wLjUwMjkgMS4zMDk0LC0xLjM4NzkgMS4yNzQ0LC0xLjkwOTkgLTAuMDE1NiwtMC4yMzk5IC0wLjM0NTUsLTAuNzI5OCAtMC44MDE2LC0xLjQwNzEgbCAtMC4wMywtMC4wNDQ1IGMgLTAuOTIzOSwtMS4zMzA2IC0yLjc3NSwtNC4xMjg3IC0zLjE1NDEsLTYuNDIzOCAtMC4xNjU3LDIuMjYzMyAxLjY4ODYsNS4wMTA0IDIuODAzNyw2LjY1OTQgMC4yOTk2LDAuMzg0NSAwLjU1NCwwLjgwMjEgMC43NTgyLDEuMjQ0NiAwLjAzNTEsMC41NDQ0IC0xLjUyOTMsMS45MjU5IC0xLjUyOTMsMS45MjU5IDAsMCAtMC4zNTY4LDAuMzE1MSAwLjExNDcsMC4zNjkzIDAuNjExNiwwLjA2NjkgMS4yMjczLC0wLjA4MyAxLjczOTYsLTAuNDIzNCAwLjAyMjMsMC4zNzg4IDAuMDIyMywwLjc1NDQgMC4wMjIzLDEuMTMzMiAwLDAgLTAuMDM4MiwwLjMxMiAwLjI4MDQsMC4yMDA2IDAuMzI1MiwtMC4xMDc0IDAuNjI1NCwtMC4yNzkyIDAuODgyNywtMC41MDUgMC4yNTczLC0wLjIyNTkgMC40NjYzLC0wLjUwMTMgMC42MTQ3LC0wLjgwOTcgbCAwLjU1NzYsMC45OTMyIGMgMC4wMjU1LDAuMDQ3NyAwLjEyMSwwLjM4NTEgMC4zNzU5LDAuMTA4MiAwLjYzNzIsLTAuNjk0IDAuNDk3LC0xLjgwODEgMC4zOTgzLC0yLjI4NTYgbCAxLjU5MywtMC4yNjQyIGMgMC4wNzY1LC0wLjAwOTYgMC4yMTY2LC0wLjI5MjkgMC4wNzY1LC0wLjM4ODQgeiBNIDE3LjI1NCw1Ny43MjA5IGMgOS42OCwyLjk2NTEgMTUuMTgyMywtNS45ODM0IDE1LjI1MDksLTYuMDk1IGwgN2UtNCwtMC4wMDEgYyAwLjA0LC0wLjA2MyAwLjEwMzIsLTAuMTA3NyAwLjE3NiwtMC4xMjQ0IDAuMDcyOCwtMC4wMTY3IDAuMTQ5MiwtMC4wMDQgMC4yMTI3LDAuMDM1MyAwLjA1MjEsMC4wMzI3IDAuMDkyNCwwLjA4MTMgMC4xMTQ4LDAuMTM4NiAwLjAyMjQsMC4wNTczIDAuMDI1NywwLjEyMDMgMC4wMDk0LDAuMTc5NyAtMC40NDAzLDEuODQwNyAtMS4yOTk0LDMuNTU1MyAtMi41MTA2LDUuMDEwNSAzLjg3MSwtMS44NTkxIDcuMDA5MywtNC45NDA1IDcuODA1OCwtOC42MjM1IC0wLjI2MTMsLTAuMDc5NiAtMC45NTU4LC0wLjg4MTggLTAuOTk3MiwtMC45NTUgMS40MzY5LDAuODM0IDIuMDgzNiwwLjg0MDQgMy43OTQ1LDEuMDc1OSBsIDAuMTcyMSwwLjAyNTUgdiAwLjE3MTkgYyAtMC4wMDE0LDAuNDMxIDAuMTYzMywwLjg0NTkgMC40NTk5LDEuMTU4OSAwLjI5NjYsMC4zMTI5IDAuNzAyMywwLjQ5OTggMS4xMzMxLDAuNTIxOSAxLjI3NTUsLTAuNTE0OCA1LjI1MjEsLTEuMDgyMiA2LjUzODgsLTEuMjY1OCBsIDAuMDUzMSwtMC4wMDc1IGMgLTAuMjIxMiwtMC4yOTUxIC0wLjkyNzIsLTAuNTU0IC0xLjQxNzgsLTAuNzc5OSBsIC0wLjM4ODcsLTAuMTg0NyAwLjM4MjMsLTAuMTk0MiBjIDAuNTk2MiwtMC4yNjA2IDEuNTkxLC0wLjU1MTMgMS44MjU2LC0wLjY4NzUgLTAuODQ0MiwtMC41MTY2IC0yLjYwOTMsLTAuMjM4OCAtMi42MTI1LC0wLjIzODggbCAtMC40MTQyLDAuMDczMiBjIDAuNDc3OSwtMC45NTUgMi4xNzIzLC0xLjkwMTYgMi4zNzY4LC0yLjA5NzcgLTEuMDg4MywtMC40Mjc2IC0zLjU4NzUsMC45NzQgLTQuMDQzMSwxLjIxNiAtMC4wNjY5LDAuMzUwMSAtMC4xNDY2LDAuODM0IC0wLjM3OTEsMS4wNzI3IDAuMDI4NiwtMC43NTEyIDAuMTgzOCwtMi4xODM5IDAuMTU5MywtMi41MTc5IC0wLjE0NTIsMC4xMDA5IC0yLjI3NDksMi40OTg4IC0yLjI4MTIsMi41MDIgMC4wMjE4LC0wLjQzMTkgMC4yMDM1LC0wLjg0MDMgMC41MDk3LC0xLjE0NiAwLjM3OTIsLTIuNzQ3MSAtMS40OTEsLTUuMzA2NSAtMi4wMTA0LC01Ljk1NTkgLTAuMTg0NywwLjM3ODggLTAuMzg4NiwwLjc2NzIgLTAuNTgzLDEuMTM5NiBsIC0wLjAxNjMsMC4wMzE0IGMgLTAuNDQ1OCwwLjg1OTYgLTAuODQ0MiwxLjYyNzUgLTAuODYzLDEuOTE2OCBsIDEuMTQwNiwyLjIyODMgYyAwLjAyNiwwLjA0OSAwLjAzMTUsMC4xMDYzIDAuMDE1NCwwLjE1OTQgLTAuMDE2MSwwLjA1MyAtMC4wNTI2LDAuMDk3NiAtMC4xMDE1LDAuMTIzOSAtMC4wMjkxLDAuMDE0OCAtMC4wNjEzLDAuMDIyNSAtMC4wOTQsMC4wMjI1IC0wLjAzMjYsMCAtMC4wNjQ4LC0wLjAwNzcgLTAuMDkzOSwtMC4wMjI1IGwgLTEuNDA1MSwtMC42MzY3IGMgLTAuMDc5NiwwLjcyNTggLTAuMTYyNSwxLjQ1MTYgLTAuMjQyMSwyLjE3NzQgMCwwLjE5MSAtMC4zMTg2LDAuMTgxNSAtMC4zOTgzLDAuMDczMiBsIC0wLjk1NTgsLTEuOTI5IC0xLjI3NDQsMS44ODEzIGMgLTAuMDkyNCwwLjEzMzcgLTAuMzkxOSwwLjAyMjMgLTAuMzg1NSwtMC4xMjEgMCwtMC43MzUzIDAsLTEuNDY3NSAwLjAyMjMsLTIuMjAyOCBsIC0xLjQ4MTUsMC4xNjU1IGMgLTAuMDI4NSwwLjAwMTMgLTAuMDU2OSwtMC4wMDMgLTAuMDgzNywtMC4wMTI4IC0wLjAyNjcsLTAuMDA5NyAtMC4wNTEzLC0wLjAyNDYgLTAuMDcyNCwtMC4wNDM4IC0wLjAyMSwtMC4wMTkyIC0wLjAzOCwtMC4wNDI0IC0wLjA1LC0wLjA2ODEgLTAuMDEyMSwtMC4wMjU4IC0wLjAxODksLTAuMDUzOCAtMC4wMjAxLC0wLjA4MjIgLTAuMDAxNiwtMC4wMjkzIDAuMDAzLC0wLjA1ODYgMC4wMTM0LC0wLjA4NiAwLjAxMDQsLTAuMDI3NCAwLjAyNjUsLTAuMDUyMyAwLjA0NzEsLTAuMDczMiAwLDAgMS44NjcsLTEuNjk2NiAyLjM5NTksLTMuMjk3OCAwLjUyODksLTEuNjAxMiAwLjMxODYsLTUuNDg0OCAwLjMxODYsLTUuNDk3NSAwLjU2MDgsMC45NTQ5IDAuMzQ0MSw0LjgyOSAwLjA3OTcsNS42MzEyIC0wLjM5NTEsMS4xOTA1IC0xLjQ2NTYsMi40MTI5IC0yLjA3NDEsMy4wNDMyIGwgMS4zNTA4LC0wLjE0OTYgYyAwLDAuNjU4OSAwLDEuMzIxIC0wLjAyMjMsMS45OCBsIDEuMjk5OSwtMS45MSBjIDAuMzE4NiwwLjYzNjYgMC42MzcyLDEuMjczMyAwLjk1NTgsMS45MzIyIGwgMC4yMjk0LC0yLjAzNDEgMS4zOTU1LDAuNjA4IC0wLjg5ODQsLTEuNzUzOSBjIDAuMDAzMiwtMC4wMjk1IC0wLjAwNDgsLTAuMDU5IC0wLjAyMjMsLTAuMDgyOCAtMC4wMjU1LC0wLjM3MjUgMC40MjY5LC0xLjI0MTUgMC45MzAzLC0yLjIwNiAwLjUwMzQsLTAuOTY0NiAxLjEwNTUsLTIuMTIwMSAxLjIyMzQsLTIuNzg1NCAwLjIwMDcsLTEuMTE3MyAtMC43NzQyLC00LjE3MzMgLTEuMDM1NCwtNC45NjI3IC0yLjQ5ODEsMC42Mjc0IC01LjA5MjEsMC43Nzk2IC03LjY0NjUsMC40NDg4IC0yLjU4MTcsLTAuMzA2NSAtNS4wOTYzLC0xLjAzMDEgLTcuNDQ1OCwtMi4xNDIzIC0wLjQzMDEsMC43MzIxIC0yLjExNTUsMy44ODM2IC0xLjU5Myw3LjQ5OTggdiAwLjEwNSBsIC0wLjA3MzMsMC4wNzMyIGMgMCwwIC00LjM0NTcsNC4zOTMgLTIuNTk2Niw3Ljc3NjggLTAuMDIyMiwtMC43NDU0IDAuMDIzNiwtMS40OTEzIDAuMTM3LC0yLjIyODMgMC4wMjkzLC0wLjE5MDYgMC4wODg0LC0wLjM3NTQgMC4xNzUzLC0wLjU0NzUgMC4xMjQyLC0wLjIxNjUgMC4yODk5LC0wLjI5NjEgMC41MDAyLC0wLjE4MTUgMC4xNDM4LDAuMDk5IDAuMjU0OCwwLjIzODcgMC4zMTg2LDAuNDAxMSAwLjcyOTYsMS40Mzg4IDAuODk1Myw0LjUwNDMgMC44OTg0LDQuNTEzOSAwLjAyMjMsMC4yMTAxIC0wLjMxODYsMC41MjUyIC0wLjQyMzcsMC4wMjU1IDAsMCAtMC4xNjI1LC0yLjk4OTEgLTAuODUzOSwtNC4zNDg0IC0wLjAyODcsLTAuMDU3OSAtMC4wNjA2LC0wLjExNDMgLTAuMDk1NSwtMC4xNjg3IC0wLjA1MTYsMC4xMjM4IC0wLjA4OSwwLjI1MyAtMC4xMTE2LDAuMzg1MiAtMC4xMjczLDAuODUxMSAtMC4xNjI2LDEuNzEzNCAtMC4xMDUxLDIuNTcyMSAwLjAyMjMsMC4yMSAtMC4wNDc4LDAuMzE4MyAtMC4yMTAzLDAuMzE4MyAtMC4xNjI1LDAgLTAuMzYsLTAuMjEzMyAtMC42MzcyLC0wLjU1NzEgbCAtMC4wMDE2LC0wLjAwMiBjIC0wLjcwMTUsLTAuODY5OCAtMi4xODUsLTIuNTIxMiAtMy41MzQ5LC0yLjE0MDMgMC4wODQ5LDAuMTMxMSAyLjE0MSwyLjA5MTQgMi4wOTMzLDIuODY0OSB2IDAuMzg1MiBsIC0wLjMxODcsLTAuMTkxIGMgMCwwIC0yLjEzNjIsLTAuOTY5OCAtMy4zMDcsLTAuNzcwNCAwLjA2NjUsMC4xMzA3IDIuMDQ4NiwxLjMyNzUgMi42MTg5LDEuMzM3IDAuMjk5NSwwLjEzMDUgMC4yNDIxLDAuMzg1MiAwLjAyNTUsMC40MjM0IC0wLjY0NTIsMC4wNTA5IC0xLjc1NzIsMC4zMzgzIC0xLjg3NjYsMC40NDg4IDAuMTY0MiwwLjE3MzkgMy41MDQ2LDAuNjAxNyAzLjk1NywxLjE0MjggMCwwIDAuMDMxNiwwLjAzODUgMC4wODksMC4xMDE1IDAuMzQ1NSwwLjM3ODkgMS42MjY2LDEuNjQ0NyAyLjU5MzcsMC43NTQ4IDAuMDcwMSwtMC4wODU5IDAuNjE0OSwtMC43ODYyIDAuNTY3MSwtMS4xNjE5IGwgMC4wMTkxLC0wLjExNzcgYyAwLjc1NTEsLTEuNTcyNiAzLjYwNjYsLTMuNzExNyA0LjM5MzUsLTIuNTQ2NyAtMC40NjA5LC0wLjA0NTUgLTAuOTI2MywwLjAwOTkgLTEuMzYzNiwwLjE2MjQgLTAuMDg2NiwxLjI2OTMgLTAuNDg2NywyLjQ5NzQgLTEuMTY0NCwzLjU3NDUgLTAuNjc3NywxLjA3NzEgLTEuNjEyLDEuOTY5NyAtMi43MTk0LDIuNTk3OCAtMS4xMTY2LDAuNjMwMiAtMi4zNjk0LDAuOTgwOCAtMy42NTExLDEuMDIxOSAtMS4zMTg3LDAuMDQ0NCAtMi42MjcyLC0wLjI0NDcgLTMuODA0MiwtMC44NDA0IC0xLjkxMTYsLTAuOTcwOSAtMy42MzIzLC0yLjg1MjQgLTQuNTg0OSwtNS42NzI4IDAuNTUxMiw0LjExNiAyLjQzOTMsNi45MTA1IDQuOTgsOC40NjQ1IDAuNTAyNywwLjMwNzUgMS40OTgyLDAuNzIxNCAxLjQ5ODIsMC43MjE0IHoiCiAgIGlkPSJGaWxsXzUiIC8+CjxsaW5lYXJHcmFkaWVudAogICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgaWQ9IkxpbmVhckdyYWRpZW50XzQiCiAgIHgxPSIzMS4xOTYxIgogICB4Mj0iMzEuMTk2MSIKICAgeTE9IjYxLjM3NjQ5OSIKICAgeTI9IjEuODA0OTk5OSI+CjxzdG9wCiAgIG9mZnNldD0iMCIKICAgc3RvcC1jb2xvcj0iIzdiZDVmNSIKICAgaWQ9InN0b3A1NjkiIC8+CjxzdG9wCiAgIG9mZnNldD0iMSIKICAgc3RvcC1jb2xvcj0iI2RjY2ZlNSIKICAgaWQ9InN0b3A1NzEiIC8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoCiAgIGQ9Im0gMTguNzYzMiwxNC43OTA0IGMgMC4wMjg2LC0wLjEzMDUgLTAuNjgwOSwyLjE0OTIgLTEuMDMzMiw2LjAzMDYgMC4wODYsMS42MDA3IDAuNzY2OCwzLjUxMDggMS4zMTE0LDQuNjM0MiAwLjk0ODQsMS42NjQxIDIuMjc1NiwzLjA4MTggMy44NzQyLDQuMTM4MyAyLjY5ODYsMS44ODQ1IDYuMjUxLDMuMTY0MSA5Ljg3NjcsMy41ODExIDMuNjI1NywwLjQxNzEgNy4zMTUxLDAuMDE5MSAxMC4yODQ1LC0xLjQ5MjkgMS42MzQxLC0wLjgxMTQgMy4wNDE3LC0yLjAxNDQgNC4wOTcyLC0zLjUwMTYgMS41MTM0LC0yLjE3NDIgMi4wNzQxLC01LjQyNDMgMS41NzM5LC04LjY1ODUgQyA0OC4yODYsMTYuNTYxMSA0Ni45NDE1LDEzLjYwMzkgNDQuNTgwNiwxMS41MTU3IDQzLjY2NjIsMTAuNjc1MyAzOS4xNzA3LDcuODA3MTQgMzMuMzI3Niw3LjUyMzgzIDI5LjQ3MDgsNy4zMjgzMyAyNS42NTA0LDguMzUxOTQgMjIuNDA5LDEwLjQ0OTMgYyAwLDAgLTMuMDM5MiwyLjk5ODcgLTMuNTQ5Niw0LjEzIC0wLjAzMTIsMC4wNjkxIDEuMDE4OCwtMS4zNTc5IC0wLjA5NjIsMC4yMTExIHoiCiAgIGlkPSJGaWxsXzYiIC8+CjxsaW5lYXJHcmFkaWVudAogICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgaWQ9IkxpbmVhckdyYWRpZW50XzUiCiAgIHgxPSIzMS4xOTYxIgogICB4Mj0iMzEuMTk2MSIKICAgeTE9IjYxLjM3NjQ5OSIKICAgeTI9IjEuODA0OTk5OSI+CjxzdG9wCiAgIG9mZnNldD0iMCIKICAgc3RvcC1jb2xvcj0iIzdiZDVmNSIKICAgaWQ9InN0b3A1NzUiIC8+CjxzdG9wCiAgIG9mZnNldD0iMSIKICAgc3RvcC1jb2xvcj0iI2RjY2ZlNSIKICAgaWQ9InN0b3A1NzciIC8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoCiAgIGQ9Im0gMTAuODY5MSwyMS4yOTM4IGMgMi40ODIxLC0xLjU5MSA1Ljk2NTIsLTIuMzUzMiA5Ljk3MDQsLTEuOTgzNyAwLjI0NTMsMC4yOTkzIDAuNTMwOCwwLjYwNTQgMC42ODA1LDAuNzY3NyAtMC40MzAxLDAuMzg4NCAtMS40OTQyLDEuNDUxNiAtMS4xODIsMi4yMjgzIDAuMDA2NCwwLjAzOSAwLjAwNjQsMC4wNzg4IDAsMC4xMTc4IDAsMC40MTA2IC0wLjMxODYsMS4yNzMzIC0xLjEzNzQsMi4yOTgzIC0wLjgxODgsMS4wMjUgLTIuMjMwMiwyLjE2NzggLTQuNDI1NCwzLjA2MjMgLTIuMjcxNiwwLjkyNjQgLTUuMzkwNzYsMS41OTE3IC05LjYzMTM3LDEuNTYzIDAuNTM1MjYsLTEuMjczMyAyLjgyMjgyLC02LjM2NjUgNS43MTI1NywtOC4wNDA5IHoiCiAgIGlkPSJGaWxsXzciIC8+CjxsaW5lYXJHcmFkaWVudAogICBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjA3MDIxMjQsMC4xMjY1MzUpIgogICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgaWQ9IkxpbmVhckdyYWRpZW50XzYiCiAgIHgxPSIzMS4xOTYxIgogICB4Mj0iMzEuMTk2MSIKICAgeTE9IjYxLjM3NjQ5OSIKICAgeTI9IjEuODA0OTk5OSI+CjxzdG9wCiAgIG9mZnNldD0iMCIKICAgc3RvcC1jb2xvcj0iIzdiZDVmNSIKICAgaWQ9InN0b3A1ODEiIC8+CjxzdG9wCiAgIG9mZnNldD0iMSIKICAgc3RvcC1jb2xvcj0iI2RjY2ZlNSIKICAgaWQ9InN0b3A1ODMiIC8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoCiAgIGQ9Im0gMTIuNTQ4OSwxMi4yMzMxIGMgNS4xMDgsMy45MDUzIDguMTUwNSwzLjQ1ODEgOC43MjY2LDMuNjU0NiAyLjQzMDUsLTAuMzI5IDAuODg1NywtNS4zNDQ5IDAuODg1NywtNS4zNDQ5IGwgLTAuMTAyLC0wLjIxOTcgQyAyMi4wNTQsMTAuMzE0MyAyMS4xNzk3LDguMzU3OTcgMTguMzgxNyw2LjM4NjMzIDE2LjEwNTcsNC43ODI1MiAxMi41NTY5LDMuMTY4NiA3LjE2NzcyLDIuNTg0NTkgNy4zNzQ4MSwzLjg2NzQ1IDguNTA5MDQsOS40NzMxOSAxMi41NDg5LDEyLjIzMzEgWiIKICAgaWQ9IkZpbGxfOCIgLz4KPGxpbmVhckdyYWRpZW50CiAgIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuMDU5ODg5MSwtMC4wMzY5OTk4KSIKICAgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgIGlkPSJMaW5lYXJHcmFkaWVudF83IgogICB4MT0iMzEuMTk2MSIKICAgeDI9IjMxLjE5NjEiCiAgIHkxPSI2MS4zNzY0OTkiCiAgIHkyPSIxLjgwNDk5OTkiPgo8c3RvcAogICBvZmZzZXQ9IjAiCiAgIHN0b3AtY29sb3I9IiM3YmQ1ZjUiCiAgIGlkPSJzdG9wNTg3IiAvPgo8c3RvcAogICBvZmZzZXQ9IjEiCiAgIHN0b3AtY29sb3I9IiNkY2NmZTUiCiAgIGlkPSJzdG9wNTg5IiAvPgo8L2xpbmVhckdyYWRpZW50Pgo8cGF0aAogICBkPSJtIDEyLjQ0NDksMTIuNjUxIGMgLTIuOTI3OTUsLTAuMDYwNSAtNi40OTYzLDAuODcyMiAtMTAuNTUyMTEsMy44ODM1IDEuMjc0NDEsMS4xMzk3IDkuMTQwNzEsNy40ODA3IDE4LjczNzExLDIuMzA3OSAyLjM1NzUsLTEuNTUwNiAxLjkwMTgsLTEuMzY2NCAxLjkxMTMsLTEuMzY2OCAwLjA2NzMsMC4wMTAyIC0wLjY4MzQsLTAuNTYzOCAtMS41NjAzLC0xLjMyNTcgLTIuMjc1NSwtMi4xNTY1IC01LjI0ODcsLTMuMzgzNiAtOC4zODMsLTMuNDk1OCB6IgogICBpZD0iRmlsbF85IiAvPgo8bGluZWFyR3JhZGllbnQKICAgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgtMC4wNDI4MjY4LC0wLjA0NTY4MikiCiAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICBpZD0iTGluZWFyR3JhZGllbnRfOCIKICAgeDE9IjMxLjE5NjEiCiAgIHgyPSIzMS4xOTYxIgogICB5MT0iNjEuMzc2NDk5IgogICB5Mj0iMS44MDQ5OTk5Ij4KPHN0b3AKICAgb2Zmc2V0PSIwIgogICBzdG9wLWNvbG9yPSIjN2JkNWY1IgogICBpZD0ic3RvcDU5MyIgLz4KPHN0b3AKICAgb2Zmc2V0PSIxIgogICBzdG9wLWNvbG9yPSIjZGNjZmU1IgogICBpZD0ic3RvcDU5NSIgLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50CiAgIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoNC4yMDA2OCwwLjg2ODQ1OSkiCiAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICBpZD0iTGluZWFyR3JhZGllbnRfOSIKICAgeDE9IjMxLjE5NjEiCiAgIHgyPSIzMS4xOTYxIgogICB5MT0iNjEuMzc2NDk5IgogICB5Mj0iMS44MDQ5OTk5Ij4KPHN0b3AKICAgb2Zmc2V0PSIwIgogICBzdG9wLWNvbG9yPSIjN2JkNWY1IgogICBpZD0ic3RvcDU5OCIgLz4KPHN0b3AKICAgb2Zmc2V0PSIxIgogICBzdG9wLWNvbG9yPSIjZGNjZmU1IgogICBpZD0ic3RvcDYwMCIgLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGgKICAgZD0ibSAyMy42MTE0LDEyLjg0NjkgYyAtMC4wMDMyLDAgLTEuNzEwOSwwLjU0MTIgLTEuODI1NiwwLjk3NDEgLTAuMTE0NywwLjQzMjkgMC4zODU1LDEuNjU4NSAwLjM4NTUsMS42NTg1IGwgMC4wNTc0LDAuMTQ2NCAtMC4xMjExLDAuMDk4NyBjIC0wLjAwNjQsMC4wMDMyIC0xLjc4MSwxLjQxOTcgLTEuNjUwNCwxLjk5NTkgMC4xNTYxLDAuNjQ2MiAxLjM2NiwxLjkyNTYgMS4zNjYsMS45MjU2IDAsMCAzLjU4MTUsLTAuNjg5MiA0LjI4MzYsLTMuMDA5MSAwLjc2MywtMi41MjA5IC0yLjE4MDQsLTQuNTM0OCAtMi4yNTI5LC00LjU1NzEgLTAuMDcyNSwtMC4wMjIzIC0xLjMzODUsMC4yNjQxIC0wLjI0MjUsMC43NjcgeiIKICAgaWQ9IkZpbGxfMTAiIC8+CjxsaW5lYXJHcmFkaWVudAogICBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjA0MDE3NzcsLTAuMDQ3MTE4MikiCiAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICBpZD0iTGluZWFyR3JhZGllbnRfMTAiCiAgIHgxPSIzMS4xOTYxIgogICB4Mj0iMzEuMTk2MSIKICAgeTE9IjYxLjM3NjQ5OSIKICAgeTI9IjEuODA0OTk5OSI+CjxzdG9wCiAgIG9mZnNldD0iMCIKICAgc3RvcC1jb2xvcj0iIzdiZDVmNSIKICAgaWQ9InN0b3A2MDQiIC8+CjxzdG9wCiAgIG9mZnNldD0iMSIKICAgc3RvcC1jb2xvcj0iI2RjY2ZlNSIKICAgaWQ9InN0b3A2MDYiIC8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudAogICBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDAuMzEyNjQyLC0wLjA3OTc5MzUpIgogICBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgaWQ9IkxpbmVhckdyYWRpZW50XzExIgogICB4MT0iMzEuMTk2MSIKICAgeDI9IjMxLjE5NjEiCiAgIHkxPSI2MS4zNzY0OTkiCiAgIHkyPSIxLjgwNDk5OTkiPgo8c3RvcAogICBvZmZzZXQ9IjAiCiAgIHN0b3AtY29sb3I9IiM3YmQ1ZjUiCiAgIGlkPSJzdG9wNjA5IiAvPgo8c3RvcAogICBvZmZzZXQ9IjEiCiAgIHN0b3AtY29sb3I9IiNkY2NmZTUiCiAgIGlkPSJzdG9wNjExIiAvPgo8L2xpbmVhckdyYWRpZW50PgoKCgoKPC9kZWZzPgo8ZwogICBpZD0iVW50aXRsZWQiCiAgIHZlY3Rvcm5hdG9yOmxheWVyTmFtZT0iVW50aXRsZWQiPgo8ZwogICBvcGFjaXR5PSIxIgogICBpZD0iZzYyOSI+CjxnCiAgIG9wYWNpdHk9IjEiCiAgIGlkPSJnNjI1Ij4KPHVzZQogICBmaWxsPSJ1cmwoI0xpbmVhckdyYWRpZW50KSIKICAgZmlsbC1ydWxlPSJub256ZXJvIgogICBzdHJva2U9Im5vbmUiCiAgIHhsaW5rOmhyZWY9IiNGaWxsIgogICBpZD0idXNlNjE2IgogICBzdHlsZT0iZmlsbDp1cmwoI0xpbmVhckdyYWRpZW50KSIgLz4KPG1hc2sKICAgaGVpZ2h0PSI2LjQ4MjgzIgogICBpZD0iU3Ryb2tlTWFzayIKICAgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgd2lkdGg9IjEwLjY0MDgiCiAgIHg9IjQ3LjgxNzIiCiAgIHk9IjIwLjU1MzMiPgo8cmVjdAogICBmaWxsPSIjZmZmZmZmIgogICBoZWlnaHQ9IjYuNDgyODMiCiAgIHN0cm9rZT0ibm9uZSIKICAgd2lkdGg9IjEwLjY0MDgiCiAgIHg9IjQ3LjgxNzIiCiAgIHk9IjIwLjU1MzMwMSIKICAgaWQ9InJlY3Q2MTgiIC8+Cjx1c2UKICAgZmlsbD0iIzAwMDAwMCIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBzdHJva2U9Im5vbmUiCiAgIHhsaW5rOmhyZWY9IiNGaWxsIgogICBpZD0idXNlNjIwIiAvPgo8L21hc2s+Cjx1c2UKICAgZmlsbD0ibm9uZSIKICAgbWFzaz0idXJsKCNTdHJva2VNYXNrKSIKICAgc3Ryb2tlPSIjNTUyZjgyIgogICBzdHJva2UtbGluZWNhcD0iYnV0dCIKICAgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciIKICAgc3Ryb2tlLXdpZHRoPSIwLjk2IgogICB4bGluazpocmVmPSIjRmlsbCIKICAgaWQ9InVzZTYyMyIgLz4KPC9nPgo8cGF0aAogICBkPSJtIDU3Ljc0MjMsMjUuNDYxIGMgMCwwIC00LjM1MzMsLTIuODY5NiAtOC43NzU3LC0zLjcxNzYgLTAuNTc1OSwwLjY3NzkgLTEuMTQ3OCwyLjQyNzkgLTAuMDQ2OSwzLjg4MzMgMC43NTIsMC4zODQgNC4yODc2LDIuMDEyNyA4LjgwOTIsLTAuMTUzNyB6IgogICBmaWxsPSIjNzc3YWJhIgogICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgIG9wYWNpdHk9IjEiCiAgIHN0cm9rZT0ibm9uZSIKICAgaWQ9InBhdGg2MjciIC8+CjwvZz4KPGcKICAgb3BhY2l0eT0iMSIKICAgaWQ9Imc2NDQiPgo8ZwogICBvcGFjaXR5PSIxIgogICBpZD0iZzY0MCI+Cjx1c2UKICAgZmlsbD0idXJsKCNMaW5lYXJHcmFkaWVudF8yKSIKICAgZmlsbC1ydWxlPSJub256ZXJvIgogICBzdHJva2U9Im5vbmUiCiAgIHhsaW5rOmhyZWY9IiNGaWxsXzIiCiAgIGlkPSJ1c2U2MzEiCiAgIHN0eWxlPSJmaWxsOnVybCgjTGluZWFyR3JhZGllbnRfMikiIC8+CjxtYXNrCiAgIGhlaWdodD0iNy41MzEyNyIKICAgaWQ9IlN0cm9rZU1hc2tfMiIKICAgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgd2lkdGg9IjE0LjAzMjIiCiAgIHg9IjQ3LjE5MDQiCiAgIHk9IjEzLjkyNjIiPgo8cmVjdAogICBmaWxsPSIjZmZmZmZmIgogICBoZWlnaHQ9IjcuNTMxMjciCiAgIHN0cm9rZT0ibm9uZSIKICAgd2lkdGg9IjE0LjAzMjIiCiAgIHg9IjQ3LjE5MDM5OSIKICAgeT0iMTMuOTI2MiIKICAgaWQ9InJlY3Q2MzMiIC8+Cjx1c2UKICAgZmlsbD0iIzAwMDAwMCIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBzdHJva2U9Im5vbmUiCiAgIHhsaW5rOmhyZWY9IiNGaWxsXzIiCiAgIGlkPSJ1c2U2MzUiIC8+CjwvbWFzaz4KPHVzZQogICBmaWxsPSJub25lIgogICBtYXNrPSJ1cmwoI1N0cm9rZU1hc2tfMikiCiAgIHN0cm9rZT0iIzU1MmY4MiIKICAgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiCiAgIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiCiAgIHN0cm9rZS13aWR0aD0iMC45NiIKICAgeGxpbms6aHJlZj0iI0ZpbGxfMiIKICAgaWQ9InVzZTYzOCIgLz4KPC9nPgo8cGF0aAogICBkPSJtIDU5LjY1OTMsMTUuMjM5NiBjIDAsMCAtNi42NjY5LDIuNTY1MyAtMTEuNjMwMSwxLjQ3NzMgLTEuMDc2NCwyLjI2MzUgMC40MjA1LDMuMjkyMSAxLjMzNzUsMy45NDA1IDAuODU3NiwwLjI5MTIgNi4wNzQzLDEuNzE4OCAxMS4yNTgzLC00Ljk1IC0wLjMwODYsLTAuMTY4OSAtMC42MjcsLTAuMzQ5NyAtMC45NTc1LC0wLjQ3MDUgeiIKICAgZmlsbD0iIzc3N2FiYSIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBvcGFjaXR5PSIxIgogICBzdHJva2U9Im5vbmUiCiAgIGlkPSJwYXRoNjQyIiAvPgo8L2c+CjxnCiAgIG9wYWNpdHk9IjEiCiAgIGlkPSJnNjU5Ij4KPGcKICAgb3BhY2l0eT0iMSIKICAgaWQ9Imc2NTUiPgo8dXNlCiAgIGZpbGw9InVybCgjTGluZWFyR3JhZGllbnRfMykiCiAgIGZpbGwtcnVsZT0ibm9uemVybyIKICAgc3Ryb2tlPSJub25lIgogICB4bGluazpocmVmPSIjRmlsbF8zIgogICBpZD0idXNlNjQ2IgogICBzdHlsZT0iZmlsbDp1cmwoI0xpbmVhckdyYWRpZW50XzMpIiAvPgo8bWFzawogICBoZWlnaHQ9IjEwLjYwMjUiCiAgIGlkPSJTdHJva2VNYXNrXzMiCiAgIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgIHdpZHRoPSIxNS42NDM3IgogICB4PSI0NC41Mzg0IgogICB5PSI1Ljc3OTkiPgo8cmVjdAogICBmaWxsPSIjZmZmZmZmIgogICBoZWlnaHQ9IjEwLjYwMjUiCiAgIHN0cm9rZT0ibm9uZSIKICAgd2lkdGg9IjE1LjY0MzciCiAgIHg9IjQ0LjUzODM5OSIKICAgeT0iNS43Nzk5MDAxIgogICBpZD0icmVjdDY0OCIgLz4KPHVzZQogICBmaWxsPSIjMDAwMDAwIgogICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgIHN0cm9rZT0ibm9uZSIKICAgeGxpbms6aHJlZj0iI0ZpbGxfMyIKICAgaWQ9InVzZTY1MCIgLz4KPC9tYXNrPgo8dXNlCiAgIGZpbGw9Im5vbmUiCiAgIG1hc2s9InVybCgjU3Ryb2tlTWFza18zKSIKICAgc3Ryb2tlPSIjNTUyZjgyIgogICBzdHJva2UtbGluZWNhcD0iYnV0dCIKICAgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciIKICAgc3Ryb2tlLXdpZHRoPSIwLjk2IgogICB4bGluazpocmVmPSIjRmlsbF8zIgogICBpZD0idXNlNjUzIiAvPgo8L2c+CjxwYXRoCiAgIGQ9Im0gNTkuNTk3LDYuMjk0ODMgYyAwLDAgLTYuOTc0MSwwLjY1MTc2IC0xMy4zNzQxLDguMjkwMTcgMC41NTg4LDAuNjQzNiAwLjk0MiwwLjczMzggMS45NTEsMS4yNDg0IDEwLjIyMDgsLTIuNDU3NiAxMS4yNTk3LC04LjI4NjY0IDExLjQzMzMsLTkuNTI0MDIgeiIKICAgZmlsbD0iIzc3N2FiYSIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBvcGFjaXR5PSIxIgogICBzdHJva2U9Im5vbmUiCiAgIGlkPSJwYXRoNjU3IiAvPgo8L2c+CjxnCiAgIG9wYWNpdHk9IjEiCiAgIGlkPSJnNjg5Ij4KPGcKICAgb3BhY2l0eT0iMSIKICAgaWQ9Imc2NzAiPgo8dXNlCiAgIGZpbGw9IiM3NzdhYmEiCiAgIGZpbGwtcnVsZT0ibm9uemVybyIKICAgc3Ryb2tlPSJub25lIgogICB4bGluazpocmVmPSIjRmlsbF80IgogICBpZD0idXNlNjYxIiAvPgo8bWFzawogICBoZWlnaHQ9IjIxLjEzMzEiCiAgIGlkPSJTdHJva2VNYXNrXzQiCiAgIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgIHdpZHRoPSIyNi41MjM2IgogICB4PSI3LjAxNjUzIgogICB5PSI0MC40MzY5Ij4KPHJlY3QKICAgZmlsbD0iI2ZmZmZmZiIKICAgaGVpZ2h0PSIyMS4xMzMxMDEiCiAgIHN0cm9rZT0ibm9uZSIKICAgd2lkdGg9IjI2LjUyMzYiCiAgIHg9IjcuMDE2NTMiCiAgIHk9IjQwLjQzNjkwMSIKICAgaWQ9InJlY3Q2NjMiIC8+Cjx1c2UKICAgZmlsbD0iIzAwMDAwMCIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBzdHJva2U9Im5vbmUiCiAgIHhsaW5rOmhyZWY9IiNGaWxsXzQiCiAgIGlkPSJ1c2U2NjUiIC8+CjwvbWFzaz4KPHVzZQogICBmaWxsPSJub25lIgogICBtYXNrPSJ1cmwoI1N0cm9rZU1hc2tfNCkiCiAgIHN0cm9rZT0iIzU1MmY4MiIKICAgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiCiAgIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiCiAgIHN0cm9rZS13aWR0aD0iMC45NiIKICAgeGxpbms6aHJlZj0iI0ZpbGxfNCIKICAgaWQ9InVzZTY2OCIgLz4KPC9nPgo8ZwogICBvcGFjaXR5PSIxIgogICBpZD0iZzY4MSI+Cjx1c2UKICAgZmlsbD0idXJsKCNMaW5lYXJHcmFkaWVudF80KSIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBzdHJva2U9Im5vbmUiCiAgIHhsaW5rOmhyZWY9IiNGaWxsXzUiCiAgIGlkPSJ1c2U2NzIiCiAgIHN0eWxlPSJmaWxsOnVybCgjTGluZWFyR3JhZGllbnRfNCkiIC8+CjxtYXNrCiAgIGhlaWdodD0iMjcuOTMzOCIKICAgaWQ9IlN0cm9rZU1hc2tfNSIKICAgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgd2lkdGg9IjQwLjU5OTQiCiAgIHg9IjEwLjIwNzQiCiAgIHk9IjMwLjg2OSI+CjxyZWN0CiAgIGZpbGw9IiNmZmZmZmYiCiAgIGhlaWdodD0iMjcuOTMzOCIKICAgc3Ryb2tlPSJub25lIgogICB3aWR0aD0iNDAuNTk5NCIKICAgeD0iMTAuMjA3NCIKICAgeT0iMzAuODY4OTk5IgogICBpZD0icmVjdDY3NCIgLz4KPHVzZQogICBmaWxsPSIjMDAwMDAwIgogICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgIHN0cm9rZT0ibm9uZSIKICAgeGxpbms6aHJlZj0iI0ZpbGxfNSIKICAgaWQ9InVzZTY3NiIgLz4KPC9tYXNrPgo8dXNlCiAgIGZpbGw9Im5vbmUiCiAgIG1hc2s9InVybCgjU3Ryb2tlTWFza181KSIKICAgc3Ryb2tlPSIjNTUyZjgyIgogICBzdHJva2UtbGluZWNhcD0iYnV0dCIKICAgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciIKICAgc3Ryb2tlLXdpZHRoPSIwLjk2IgogICB4bGluazpocmVmPSIjRmlsbF81IgogICBpZD0idXNlNjc5IiAvPgo8L2c+CjxwYXRoCiAgIGQ9Im0gMjMuNjk3NSwzNi40MDczIGMgLTAuMDk2MSwwLjg1OSAtMC4wODMyLDEuNzI2NiAwLjAzODQsMi41ODI0IHYgMC4xMDU2IGwgLTAuMDczNiwwLjA3MzYgYyAwLDAgLTMuOTIsMy45NjQ4IC0yLjg0NDgsNy4yNzM2IC0wLjM1NTIsLTIuMzI5NiAxLjkyLC01LjQ3MiAzLjQ2MjQsLTcuMTg3MiAtMC4yNTkyLC0wLjkwMjQgLTAuMzIsLTMuOTcxMiAtMC4yNzg0LC00LjQ1MTIgLTAuMTQ2NCwwLjUyMzYgLTAuMjQ3LDEuMDU5IC0wLjMwMDgsMS42IHoiCiAgIGZpbGw9IiM3NzdhYmEiCiAgIGZpbGwtcnVsZT0iZXZlbm9kZCIKICAgb3BhY2l0eT0iMSIKICAgc3Ryb2tlPSJub25lIgogICBpZD0icGF0aDY4MyIgLz4KPHBhdGgKICAgZD0ibSAyNS4yMDExLDM3LjA3MjIgYyAwLjY3NTIsMi4wMTI4IDIuMTAyNCw0LjE2IDIuODgsNS4yNzM2IDAuNDczNiwwLjcwNCAwLjgxNiwxLjIxMjggMC44MzIsMS40NTkyIDAuMDM1MiwwLjUyNDggLTAuNzc3NiwxLjQxNDQgLTEuMjgsMS45MiAwLDAgMS43NTA0LC0wLjg1NzYgMS42LC0yLjI3MiAwLDAgLTMuNTg3MiwtNS44MDggLTMuMzk4NCwtNi44MTI4IDAsMCAwLjU0NzIsLTEuNjk5MiAwLjg4OTYsLTEuOTc0NCAwLDAgLTEuNzEyLDAuOTM0NCAtMS41MDA4LDIuNDEyOCB6IgogICBmaWxsPSIjNzc3YWJhIgogICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgIG9wYWNpdHk9IjEiCiAgIHN0cm9rZT0ibm9uZSIKICAgaWQ9InBhdGg2ODUiIC8+CjxwYXRoCiAgIGQ9Im0gMzYuOTk1OCwzNS44MzA1IGMgMC41NjMyLDAuOTYgMC4zNDU2LDQuODUxMiAwLjA3NjgsNS42NTc2IC0wLjM5NjgsMS4yIC0xLjQ3MiwyLjQyODggLTIuMDgzMiwzLjA2MjQgMS4yMTYsLTAuNTEyIDIuNTEyLC0zLjA5NzYgMi41MTIsLTMuMDk3NiAwLjI1OTIsLTEuNjggMC41MTUyLC00LjE2IC0wLjUwNTYsLTUuNjIyNCB6IgogICBmaWxsPSIjNzc3YWJhIgogICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgIG9wYWNpdHk9IjEiCiAgIHN0cm9rZT0ibm9uZSIKICAgaWQ9InBhdGg2ODciIC8+CjwvZz4KPGcKICAgb3BhY2l0eT0iMSIKICAgaWQ9Imc3MDQiPgo8ZwogICBvcGFjaXR5PSIxIgogICBpZD0iZzcwMCI+Cjx1c2UKICAgZmlsbD0idXJsKCNMaW5lYXJHcmFkaWVudF81KSIKICAgZmlsbC1ydWxlPSJub256ZXJvIgogICBzdHJva2U9Im5vbmUiCiAgIHhsaW5rOmhyZWY9IiNGaWxsXzYiCiAgIGlkPSJ1c2U2OTEiCiAgIHN0eWxlPSJmaWxsOnVybCgjTGluZWFyR3JhZGllbnRfNSkiIC8+CjxtYXNrCiAgIGhlaWdodD0iMjYuNzg5OCIKICAgaWQ9IlN0cm9rZU1hc2tfNiIKICAgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgd2lkdGg9IjMyLjE1NzMiCiAgIHg9IjE3LjI0ODkiCiAgIHk9IjcuMDIwMjQiPgo8cmVjdAogICBmaWxsPSIjZmZmZmZmIgogICBoZWlnaHQ9IjI2Ljc4OTgwMSIKICAgc3Ryb2tlPSJub25lIgogICB3aWR0aD0iMzIuMTU3Mjk5IgogICB4PSIxNy4yNDg4OTkiCiAgIHk9IjcuMDIwMjM5OCIKICAgaWQ9InJlY3Q2OTMiIC8+Cjx1c2UKICAgZmlsbD0iIzAwMDAwMCIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBzdHJva2U9Im5vbmUiCiAgIHhsaW5rOmhyZWY9IiNGaWxsXzYiCiAgIGlkPSJ1c2U2OTUiIC8+CjwvbWFzaz4KPHVzZQogICBmaWxsPSJub25lIgogICBtYXNrPSJ1cmwoI1N0cm9rZU1hc2tfNikiCiAgIHN0cm9rZT0iIzU1MmY4MiIKICAgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiCiAgIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiCiAgIHN0cm9rZS13aWR0aD0iMC45NiIKICAgeGxpbms6aHJlZj0iI0ZpbGxfNiIKICAgaWQ9InVzZTY5OCIgLz4KPC9nPgo8cGF0aAogICBkPSJNIDM4LjEzNjUsMzMuMTMzMSBDIDIyLjM5NTcsMzEuODkxNSAyMC44OTQ4LDIyLjY2MjMgMjAuODUsMjIuMzU1MSBjIC0yLjEzNDUsLTEuMzkwNyAtMy4wMTc3LDAuNTYzOCAtMS44MDQ1LDMuMTczNiAwLjk1MTYsMS42NzM2IDIuMzE5LDMuMDY5OCAzLjkyNTQsNC4xMzA5IDIuOTc4MiwxLjk4ODggNi4zNjg2LDMuMTM0NyA5LjkyODYsMy41MjM2IDEuNzQ5MiwwLjIxNDQgMy41MDA3LDAuMTgzOCA1LjI0OTksLTAuMDMwNiB6IgogICBmaWxsPSIjNzc3YWJhIgogICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgIG9wYWNpdHk9IjEiCiAgIHN0cm9rZT0ibm9uZSIKICAgaWQ9InBhdGg3MDIiIC8+CjwvZz4KPGcKICAgb3BhY2l0eT0iMSIKICAgaWQ9Imc3MTAiPgo8cGF0aAogICBkPSJtIDMyLjM5NDUsMjguNzk5OCBjIDEuMTIsMS4xMTY4IDkuNTEwNCwxLjAxNDQgOS45NTg0LDAuMDIyNCAtMiw1LjYxMjggLTkuNDE0NCwzLjI2NCAtOS45NTg0LC0wLjAyMjQgeiIKICAgZmlsbD0iIzU1MmY4MiIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBvcGFjaXR5PSIxIgogICBzdHJva2U9Im5vbmUiCiAgIGlkPSJwYXRoNzA2IiAvPgo8cGF0aAogICBkPSJtIDQwLjY0MDUsMzAuNzE5NSBjIC0wLjA3NjgsMC40MTI4IC0zLjM2MzIsMi4yMTQ0IC02LjA0NDgsMC4xMTIgMCwwIDEuNzk1MiwtMS4xMiA2LjA0NDgsLTAuMTEyIHoiCiAgIGZpbGw9IiNjM2EzY2QiCiAgIGZpbGwtcnVsZT0iZXZlbm9kZCIKICAgb3BhY2l0eT0iMSIKICAgc3Ryb2tlPSJub25lIgogICBpZD0icGF0aDcwOCIgLz4KPC9nPgo8ZwogICBvcGFjaXR5PSIxIgogICBpZD0iZzcxNiI+CjxwYXRoCiAgIGQ9Im0gNDAuMDczLDI2LjY2MjQgYyAtMC4yMzQyLDAuMjk4NSAtMC40MjU5LDAuNjI4MSAtMC41Njk2LDAuOTc5MiAtMC4wMzIsMC4yNDMyIDAuNDY3MiwtMC41Mzc2IDEuMTM5MiwtMC41ODU2IDAuMTMsLTAuMDE1NSAwLjI1NDcsLTAuMDYwNCAwLjM2NDgsLTAuMTMxMiAwLjA1NDEsLTAuMDQzOCAwLjA5MjQsLTAuMTA0IDAuMTA5MiwtMC4xNzE2IDAuMDE2NywtMC4wNjc2IDAuMDExLC0wLjEzODggLTAuMDE2NCwtMC4yMDI4IC0wLjA0MzcsLTAuMDY3OCAtMC4xMDMyLC0wLjEyMzkgLTAuMTczNSwtMC4xNjM1IC0wLjA3MDIsLTAuMDM5NiAtMC4xNDkxLC0wLjA2MTQgLTAuMjI5NywtMC4wNjM3IC0wLjEyNDMsMC4wMDk1IC0wLjI0NTMsMC4wNDQ1IC0wLjM1NTQsMC4xMDI5IC0wLjExMDEsMC4wNTgzIC0wLjIwNywwLjEzODggLTAuMjg0NiwwLjIzNjMgeiIKICAgZmlsbD0iIzU1MmY4MiIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBvcGFjaXR5PSIxIgogICBzdHJva2U9Im5vbmUiCiAgIGlkPSJwYXRoNzEyIiAvPgo8cGF0aAogICBkPSJtIDM3LjQzOTksMjcuNjYzNSBjIC0wLjEzNjIsLTAuMzk5NSAtMC4zMzAzLC0wLjc3NjggLTAuNTc2LC0xLjEyIC0wLjA3NDQsLTAuMTA1OCAtMC4xNjk1LC0wLjE5NTYgLTAuMjc5NSwtMC4yNjM3IC0wLjExLC0wLjA2ODIgLTAuMjMyNiwtMC4xMTM1IC0wLjM2MDUsLTAuMTMzMSAtMC4wOTU5LC0wLjAwMjggLTAuMTkwOSwwLjAxOSAtMC4yNzYsMC4wNjMzIC0wLjA4NTIsMC4wNDQyIC0wLjE1NzYsMC4xMDk0IC0wLjIxMDQsMC4xODk1IC0wLjAzODQsMC4wNjcyIC0wLjA1MTIsMC4xNDYxIC0wLjAzNTksMC4yMjIgMC4wMTUzLDAuMDc1OSAwLjA1NzYsMC4xNDM3IDAuMTE5MSwwLjE5MDggMC4xMTg2LDAuMDg0NSAwLjI1NTgsMC4xMzk0IDAuNCwwLjE2IDAuNzQ4OCwwLjA3NjggMS4yNTQ0LDAuOTYgMS4yMzUyLDAuNjkxMiB6IgogICBmaWxsPSIjNTUyZjgyIgogICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgIG9wYWNpdHk9IjEiCiAgIHN0cm9rZT0ibm9uZSIKICAgaWQ9InBhdGg3MTQiIC8+CjwvZz4KPGcKICAgb3BhY2l0eT0iMSIKICAgaWQ9Imc3MjYiPgo8cGF0aAogICBkPSJtIDQzLjEwOCwxOC41Njg2IGMgMC43MzI4LC0xLjk2NjQgMi4yNzMsLTIuMTU1MyAzLjQ3NTMsLTAuNDI2OSAwLjY0NzMsMSAxLjA0OTEsMi4xMzQzIDEuMTczOCwzLjMxMzQgMC4xNzY5LDEuMTczOCAwLjA3MjEsMi4zNzIgLTAuMzA1OSwzLjQ5ODkgLTAuNzExNCwxLjk2MjggLTIuMjczLDIuMTUxOCAtMy40NzUzLDAuNDI2OCAtMC42NDQyLC0xLjAwMTQgLTEuMDQ1OCwtMi4xMzUgLTEuMTczOCwtMy4zMTM0IC0wLjE3MzUsLTEuMTczOSAtMC4wNjg4LC0yLjM3MTMgMC4zMDU5LC0zLjQ5ODggeiBtIDEuOTEzNywwLjY0NzIgYyAtMC4zNTU3LDAuMDUyNSAtMC42NTQ1LDAuMzkxOSAtMC44MzU5LDAuODk1NyAtMC4zNzM1LDEuMDQ5NyAtMC4yMzgzLDIuNjk0MiAwLjQwMiwzLjYyODQgMC42NDAyLDAuOTM0MiAxLjQyMjgsMC42OTk3IDEuNzc4NSwtMC4zNDk5IDAuMzU1NywtMS4wNDk3IDAuMjM4MywtMi42OTA2IC0wLjQwMTksLTMuNjI4MyAtMC4wODY4LC0wLjE3MzMgLTAuMjIyNiwtMC4zMTgzIC0wLjM5MTEsLTAuNDE3NiAtMC4xNjg0LC0wLjA5OTMgLTAuMzYyNCwtMC4xNDg3IC0wLjU1ODcsLTAuMTQyMyB6IgogICBmaWxsPSIjNTUyZjgyIgogICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgIG9wYWNpdHk9IjEiCiAgIHN0cm9rZT0ibm9uZSIKICAgaWQ9InBhdGg3MTgiIC8+CjxwYXRoCiAgIGQ9Im0gNDMuMzQ2NSwxOC44ODA0IGMgMC42NTkyLC0xLjc5ODQgMi4wNDQ4LC0xLjk3MTIgMy4xMjY0LC0wLjM5MDQgMC41ODIzLDAuOTE0NSAwLjk0MzgsMS45NTIgMS4wNTYsMy4wMzA0IDAuMTU5MSwxLjA3MzUgMC4wNjQ4LDIuMTY5NCAtMC4yNzUyLDMuMiAtMC42NCwxLjc5NTIgLTIuMDQ0OCwxLjk2OCAtMy4xMjY0LDAuMzkwNCAtMC41Nzk2LC0wLjkxNTkgLTAuOTQwOSwtMS45NTI3IC0xLjA1NiwtMy4wMzA0IC0wLjE1NjEsLTEuMDczNyAtMC4wNjE5LC0yLjE2ODggMC4yNzUyLC0zLjIgeiBtIDEuNzIxNiwwLjU5MiBjIC0wLjMyLDAuMDQ4IC0wLjU4ODgsMC4zNTg0IC0wLjc1MiwwLjgxOTIgLTAuMzM2LDAuOTYgLTAuMjE0NCwyLjQ2NCAwLjM2MTYsMy4zMTg0IDAuNTc2LDAuODU0NCAxLjI4LDAuNjQgMS42LC0wLjMyIDAuMzIsLTAuOTYgMC4yMTQ0LC0yLjQ2MDggLTAuMzYxNiwtMy4zMTg0IC0wLjA3ODEsLTAuMTU4NSAtMC4yMDAzLC0wLjI5MTEgLTAuMzUxOCwtMC4zODE5IC0wLjE1MTUsLTAuMDkwOCAtMC4zMjYxLC0wLjEzNiAtMC41MDI2LC0wLjEzMDEgeiIKICAgZmlsbD0iI2ZmZmZmZiIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBvcGFjaXR5PSIxIgogICBzdHJva2U9Im5vbmUiCiAgIGlkPSJwYXRoNzIwIiAvPgo8cGF0aAogICBkPSJtIDQ0Ljc2NzgsMjMuNzU0IGMgLTAuNjgxNiwtMS4wMTc2IC0wLjgyNTYsLTIuODM1MiAtMC40Mjg4LC0zLjk1ODQgMC4zNjE2LC0xLjAyNzIgMS4wODQ4LC0xLjI2MDggMS42OTkyLC0wLjM0MjQgMC42ODQ4LDEuMDE3NiAwLjgyODgsMi44MzUyIDAuNDMyLDMuOTU4NCAtMC4zNjQ4LDEuMDI3MiAtMS4wODQ4LDEuMjYwOCAtMS43MDI0LDAuMzQyNCB6IgogICBmaWxsPSIjNTUyZjgyIgogICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgIG9wYWNpdHk9IjEiCiAgIHN0cm9rZT0ibm9uZSIKICAgaWQ9InBhdGg3MjIiIC8+CjxwYXRoCiAgIGQ9Im0gNDQuOTQ0OSwxOC4wNzYzIGMgLTAuNDY0LDAuMDQxNiAtMC43NzQ0LDAuNzgwOCAtMC42OTEyLDEuNjUxMiAwLjA4MzIsMC44NzA0IDAuNTI0OCwxLjUzMjggMC45ODg4LDEuNDkxMiAwLjQ2NCwtMC4wNDE2IDAuNzcxMiwtMC43ODQgMC42OTEyLC0xLjY1MTIgLTAuMDgsLTAuODY3MiAtMC41MjQ4LC0xLjUzNiAtMC45ODg4LC0xLjQ5MTIgeiIKICAgZmlsbD0iI2ZmZmZmZiIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBvcGFjaXR5PSIxIgogICBzdHJva2U9Im5vbmUiCiAgIGlkPSJwYXRoNzI0IiAvPgo8L2c+CjxnCiAgIG9wYWNpdHk9IjEiCiAgIGlkPSJnNzM2Ij4KPHBhdGgKICAgZD0ibSAzMi4wMzgxLDE4LjA1IGMgLTAuNzA3OSwtMi4zNjI0IC0yLjU2NiwtMi43NDM3IC00LjE3OTksLTAuODI2OCAtMC44NzQzLDEuMTE3MSAtMS40NjIyLDIuNDEzOSAtMS43MTY2LDMuNzg2NSAtMC4zMTQ3LDEuMzY2MyAtMC4yOTQxLDIuNzgzNSAwLjA2MDIsNC4xNDA5IDAuNzA3OCwyLjM2MjQgMi41NjYsMi43NDM3IDQuMTc5OSwwLjgyMzUgMC44NzM4LC0xLjExOTkgMS40NjE2LC0yLjQxODggMS43MTY2LC0zLjc5MzMgMC4zMTQ2LC0xLjM2NTIgMC4yOTQsLTIuNzgxMiAtMC4wNjAyLC00LjEzNzUgeiBtIC0yLjM3ODQsMC41ODA1IGMgMC40MzE4LDAuMDk3OCAwLjc1NzQsMC41MjMxIDAuOTM0NCwxLjEzMzkgMC4zNTM5LDEuMjUyMSAwLjA0NiwzLjE4OTIgLTAuODEwNSw0LjIzMiAtMC44NTY2LDEuMDQyOCAtMS43Njk3LDAuNjc1IC0yLjEyMzYsLTAuNTYzNiAtMC4zNTQsLTEuMjM4NSAtMC4wNjczLC0zLjE4NTggMC43OTYzLC00LjIyODYgMC4zNTM5LC0wLjQ0NTUgMC43NzUxLC0wLjY3NSAxLjIwMzQsLTAuNTczNyB6IgogICBmaWxsPSIjNTUyZjgyIgogICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgIG9wYWNpdHk9IjEiCiAgIHN0cm9rZT0ibm9uZSIKICAgaWQ9InBhdGg3MjgiIC8+CjxwYXRoCiAgIGQ9Im0gMzEuNzQ2NiwxOC4yNTMyIGMgLTAuNjM3MSwtMi4yMjc0IC0yLjMwOTQsLTIuNTg3IC0zLjc2MTksLTAuNzc5NiAtMC43ODY5LDEuMDUzMyAtMS4zMTYsMi4yNzYgLTEuNTQ1LDMuNTcwMiAtMC4yODMyLDEuMjg4MiAtMC4yNjQ2LDIuNjI0MyAwLjA1NDIsMy45MDQyIDAuNjM3MSwyLjIyNzQgMi4zMDk0LDIuNTg3IDMuNzYxOSwwLjc3NjQgMC43ODY1LC0xLjA1NTkgMS4zMTU1LC0yLjI4MDUgMS41NDUsLTMuNTc2NSAwLjI4MzEsLTEuMjg3MSAwLjI2NDYsLTIuNjIyMyAtMC4wNTQyLC0zLjkwMTEgeiBtIC0yLjE0MDYsMC41NDczIGMgMC4zODg2LDAuMDkyMyAwLjY4MTcsMC40OTMyIDAuODQxLDEuMDY5MSAwLjMxODUsMS4xODA1IDAuMDQxNCwzLjAwNyAtMC43Mjk1LDMuOTkwMiAtMC43NzA5LDAuOTgzMiAtMS41OTI3LDAuNjM2NCAtMS45MTEyLC0wLjUzMTQgLTAuMzE4NiwtMS4xNjc4IC0wLjA2MDUsLTMuMDAzOCAwLjcxNjcsLTMuOTg3IDAuMzE4NSwtMC40MiAwLjY5NzYsLTAuNjM2NCAxLjA4MywtMC41NDA5IHoiCiAgIGZpbGw9IiNmZmZmZmYiCiAgIGZpbGwtcnVsZT0iZXZlbm9kZCIKICAgb3BhY2l0eT0iMSIKICAgc3Ryb2tlPSJub25lIgogICBpZD0icGF0aDczMCIgLz4KPHBhdGgKICAgZD0ibSAyOS43NTk1LDIzLjkxNjkgYyAwLjkwODgsLTEuMTYxNiAxLjI0MTYsLTMuMzM3NiAwLjg2MDgsLTQuNzI5NiAtMC4zNDg4LC0xLjI3OTkgLTEuMiwtMS42Mjg3IC0yLjAyMjQsLTAuNTgyMyAtMC45MTIsMS4xNjE1IC0xLjI0NDgsMy4zMzc1IC0wLjg2MDgsNC43Mjk1IDAuMzQ4OCwxLjI4IDEuMTk2OCwxLjYyNTYgMi4wMjI0LDAuNTgyNCB6IgogICBmaWxsPSIjNTUyZjgyIgogICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgIG9wYWNpdHk9IjEiCiAgIHN0cm9rZT0ibm9uZSIKICAgaWQ9InBhdGg3MzIiIC8+CjxwYXRoCiAgIGQ9Im0gMjkuOTc4LDE2Ljk3OTMgYyAwLjU2LDAuMDk5MiAwLjg3MzYsMS4wMzA0IDAuNjk3NiwyLjA4IC0wLjE3NiwxLjA0OTYgLTAuNzc0NCwxLjgyMDggLTEuMzM0NCwxLjcyMTYgLTAuNTYsLTAuMDk5MiAtMC44NjA4LC0xLjAzMzYgLTAuNzAwOCwtMi4wODMyIDAuMTYsLTEuMDQ5NiAwLjc3NDQsLTEuODE3NiAxLjMzNzYsLTEuNzE4NCB6IgogICBmaWxsPSIjZmZmZmZmIgogICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgIG9wYWNpdHk9IjEiCiAgIHN0cm9rZT0ibm9uZSIKICAgaWQ9InBhdGg3MzQiIC8+CjwvZz4KPGcKICAgb3BhY2l0eT0iMSIKICAgaWQ9Imc3NDQiPgo8cGF0aAogICBkPSJtIDUzLjYyNTcsMzYuNjQ5NCBjIDAuNDcwNiwtNmUtNCAwLjkzMDgsMC4xMzgyIDEuMzIyNSwwLjM5OSAwLjM5MTgsMC4yNjA4IDAuNjk3NCwwLjYzMTkgMC44Nzg0LDEuMDY2MyAwLjE4MSwwLjQzNDQgMC4yMjkxLDAuOTEyNyAwLjEzODQsMS4zNzQ1IC0wLjA5MDcsMC40NjE4IC0wLjMxNjMsMC44ODYzIC0wLjY0ODIsMS4yMiAtMC4zMzE4LDAuMzMzNiAtMC43NTUxLDAuNTYxNSAtMS4yMTY0LDAuNjU0NyAtMC40NjEzLDAuMDkzMiAtMC45Mzk5LDAuMDQ3NiAtMS4zNzUzLC0wLjEzMTEgLTAuNDM1MywtMC4xNzg2IC0wLjgwOCwtMC40ODIzIC0xLjA3MDksLTAuODcyNiAtMC4yNjI5LC0wLjM5MDMgLTAuNDA0MiwtMC44NDk4IC0wLjQwNjEsLTEuMzIwNCAtMC4wMDEzLC0wLjMxMzIgMC4wNTkyLC0wLjYyMzUgMC4xNzgxLC0wLjkxMzMgMC4xMTg5LC0wLjI4OTcgMC4yOTM4LC0wLjU1MzIgMC41MTQ3LC0wLjc3NTIgMC4yMjA4LC0wLjIyMjEgMC40ODMzLC0wLjM5ODQgMC43NzI0LC0wLjUxODggMC4yODkxLC0wLjEyMDUgMC41OTkyLC0wLjE4MjcgMC45MTI0LC0wLjE4MzEgeiIKICAgZmlsbD0iIzhiZDRmMyIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBvcGFjaXR5PSIxIgogICBzdHJva2U9Im5vbmUiCiAgIGlkPSJwYXRoNzM4IiAvPgo8cGF0aAogICBkPSJtIDUzLjA2OTMsMzcuNDM5NSBjIDAuMDkzNywwIDAuMTg1MiwwLjAyNzcgMC4yNjMxLDAuMDc5OCAwLjA3NzksMC4wNTIgMC4xMzg2LDAuMTI2IDAuMTc0NSwwLjIxMjUgMC4wMzU4LDAuMDg2NiAwLjA0NTIsMC4xODE4IDAuMDI2OSwwLjI3MzYgLTAuMDE4MywwLjA5MTkgLTAuMDYzNCwwLjE3NjMgLTAuMTI5NiwwLjI0MjUgLTAuMDY2MiwwLjA2NjMgLTAuMTUwNiwwLjExMTQgLTAuMjQyNSwwLjEyOTYgLTAuMDkxOSwwLjAxODMgLTAuMTg3MSwwLjAwODkgLTAuMjczNiwtMC4wMjY5IC0wLjA4NjYsLTAuMDM1OCAtMC4xNjA1LC0wLjA5NjYgLTAuMjEyNiwtMC4xNzQ0IC0wLjA1MiwtMC4wNzc5IC0wLjA3OTgsLTAuMTY5NSAtMC4wNzk4LC0wLjI2MzIgLTRlLTQsLTAuMDYyIDAuMDExNCwtMC4xMjM1IDAuMDM0OSwtMC4xODA5IDAuMDIzNCwtMC4wNTc1IDAuMDU4LC0wLjEwOTcgMC4xMDE4LC0wLjE1MzcgMC4wNDM3LC0wLjA0NDEgMC4wOTU3LC0wLjA3OSAwLjE1MywtMC4xMDI4IDAuMDU3MiwtMC4wMjM5IDAuMTE4NywtMC4wMzYxIDAuMTgwNywtMC4wMzYxIHoiCiAgIGZpbGw9IiNmZmZmZmYiCiAgIGZpbGwtcnVsZT0iZXZlbm9kZCIKICAgb3BhY2l0eT0iMSIKICAgc3Ryb2tlPSJub25lIgogICBpZD0icGF0aDc0MCIgLz4KPHBhdGgKICAgZD0ibSA1Mi42MTIyLDM4Ljg5MjYgYyAwLjA0NjcsMCAwLjA5MTUsMC4wMTg1IDAuMTI0NSwwLjA1MTUgMC4wMzMsMC4wMzMgMC4wNTE1LDAuMDc3OCAwLjA1MTUsMC4xMjQ1IC0wLjAwMzEsMC4wMjI5IC0wLjAxMDcsMC4wNDQ5IC0wLjAyMjQsMC4wNjQ5IC0wLjAxMTcsMC4wMiAtMC4wMjcyLDAuMDM3NCAtMC4wNDU2LDAuMDUxNCAtMC4wMTg0LDAuMDE0IC0wLjAzOTQsMC4wMjQyIC0wLjA2MTgsMC4wMyAtMC4wMjIzLDAuMDA1OSAtMC4wNDU3LDAuMDA3MiAtMC4wNjg2LDAuMDA0MSAtMC4wMzgyLC0wLjAwNDcgLTAuMDczOCwtMC4wMjIxIC0wLjEwMSwtMC4wNDkzIC0wLjAyNzMsLTAuMDI3MyAtMC4wNDQ2LC0wLjA2MjkgLTAuMDQ5MywtMC4xMDExIC0xZS00LC0wLjA0NjEgMC4wMTgsLTAuMDkwNCAwLjA1MDQsLTAuMTIzNCAwLjAzMjMsLTAuMDMyOSAwLjA3NjIsLTAuMDUxOCAwLjEyMjMsLTAuMDUyNiB6IgogICBmaWxsPSIjZmZmZmZmIgogICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgIG9wYWNpdHk9IjEiCiAgIHN0cm9rZT0ibm9uZSIKICAgaWQ9InBhdGg3NDIiIC8+CjwvZz4KPGcKICAgb3BhY2l0eT0iMSIKICAgaWQ9Imc3NTIiPgo8cGF0aAogICBkPSJtIDU0LjYwMjIsNDQuMjUyOSBjIDAuMjY5LDAgMC41MzE5LDAuMDc5OCAwLjc1NTYsMC4yMjkyIDAuMjIzNiwwLjE0OTUgMC4zOTc5LDAuMzYxOSAwLjUwMDksMC42MTA0IDAuMTAyOSwwLjI0ODUgMC4xMjk4LDAuNTIxOSAwLjA3NzQsMC43ODU3IC0wLjA1MjUsMC4yNjM5IC0wLjE4MiwwLjUwNjIgLTAuMzcyMiwwLjY5NjQgLTAuMTkwMiwwLjE5MDIgLTAuNDMyNiwwLjMxOTcgLTAuNjk2NCwwLjM3MjIgLTAuMjYzOCwwLjA1MjUgLTAuNTM3MiwwLjAyNTUgLTAuNzg1OCwtMC4wNzc0IC0wLjI0ODUsLTAuMTAyOSAtMC40NjA5LC0wLjI3NzMgLTAuNjEwMywtMC41MDA5IC0wLjE0OTQsLTAuMjIzNyAtMC4yMjkyLC0wLjQ4NjYgLTAuMjI5MiwtMC43NTU2IDAsLTAuMzYwNyAwLjE0MzMsLTAuNzA2NiAwLjM5ODMsLTAuOTYxNiAwLjI1NTEsLTAuMjU1MSAwLjYwMSwtMC4zOTg0IDAuOTYxNywtMC4zOTg0IHoiCiAgIGZpbGw9IiM4YmQ0ZjMiCiAgIGZpbGwtcnVsZT0iZXZlbm9kZCIKICAgb3BhY2l0eT0iMSIKICAgc3Ryb2tlPSJub25lIgogICBpZD0icGF0aDc0NiIgLz4KPHBhdGgKICAgZD0ibSA1NC40MDAxLDQ0LjU3MzMgYyAwLjA2OTUsNmUtNCAwLjEzNzIsMC4wMjE4IDAuMTk0NywwLjA2MDggMC4wNTc1LDAuMDM5MSAwLjEwMjEsMC4wOTQzIDAuMTI4MiwwLjE1ODcgMC4wMjYyLDAuMDY0MyAwLjAzMjcsMC4xMzUgMC4wMTg4LDAuMjAzMSAtMC4wMTQsMC4wNjggLTAuMDQ3OCwwLjEzMDUgLTAuMDk3MSwwLjE3OTQgLTAuMDQ5NCwwLjA0ODkgLTAuMTEyMSwwLjA4MjEgLTAuMTgwMywwLjA5NTQgLTAuMDY4MiwwLjAxMzMgLTAuMTM4OCwwLjAwNjIgLTAuMjAyOSwtMC4wMjA2IC0wLjA2NDEsLTAuMDI2NyAtMC4xMTg5LC0wLjA3MTggLTAuMTU3NSwtMC4xMjk2IC0wLjAzODUsLTAuMDU3OCAtMC4wNTkxLC0wLjEyNTggLTAuMDU5MSwtMC4xOTUyIDAsLTAuMDQ2NSAwLjAwOTIsLTAuMDkyNiAwLjAyNzEsLTAuMTM1NSAwLjAxNzksLTAuMDQyOSAwLjA0NDEsLTAuMDgxOSAwLjA3NzIsLTAuMTE0NiAwLjAzMywtMC4wMzI3IDAuMDcyMiwtMC4wNTg2IDAuMTE1MiwtMC4wNzYxIDAuMDQzMSwtMC4wMTc1IDAuMDg5MiwtMC4wMjYzIDAuMTM1NywtMC4wMjU4IHoiCiAgIGZpbGw9IiNmZmZmZmYiCiAgIGZpbGwtcnVsZT0iZXZlbm9kZCIKICAgb3BhY2l0eT0iMSIKICAgc3Ryb2tlPSJub25lIgogICBpZD0icGF0aDc0OCIgLz4KPHBhdGgKICAgZD0ibSA1NC4wNjA5LDQ1LjY0ODQgYyAwLjAzNDgsMCAwLjA2ODIsMC4wMTM5IDAuMDkyOCwwLjAzODUgMC4wMjQ2LDAuMDI0NiAwLjAzODQsMC4wNTc5IDAuMDM4NCwwLjA5MjcgMCwwLjAzNDggLTAuMDEzOCwwLjA2ODIgLTAuMDM4NCwwLjA5MjggLTAuMDI0NiwwLjAyNDYgLTAuMDU4LDAuMDM4NCAtMC4wOTI4LDAuMDM4NCAtMC4wMzQ4LDAgLTAuMDY4MiwtMC4wMTM4IC0wLjA5MjgsLTAuMDM4NCAtMC4wMjQ2LC0wLjAyNDYgLTAuMDM4NCwtMC4wNTggLTAuMDM4NCwtMC4wOTI4IDAuMDAxNSwtMC4wMzQzIDAuMDE1OSwtMC4wNjY3IDAuMDQwMSwtMC4wOTEgMC4wMjQzLC0wLjAyNDMgMC4wNTY4LC0wLjAzODYgMC4wOTExLC0wLjA0MDIgeiIKICAgZmlsbD0iI2ZmZmZmZiIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBvcGFjaXR5PSIxIgogICBzdHJva2U9Im5vbmUiCiAgIGlkPSJwYXRoNzUwIiAvPgo8L2c+CjxnCiAgIG9wYWNpdHk9IjEiCiAgIGlkPSJnNzYwIj4KPHBhdGgKICAgZD0ibSAxNS4xODE2LDI5Ljc1OTggYyAwLjQ3MDksMCAwLjkzMTIsMC4xMzk2IDEuMzIyNywwLjQwMTIgMC4zOTE1LDAuMjYxNiAwLjY5NjcsMC42MzM0IDAuODc2OSwxLjA2ODUgMC4xODAxLDAuNDM1IDAuMjI3MywwLjkxMzcgMC4xMzU0LDEuMzc1NSAtMC4wOTE4LDAuNDYxOSAtMC4zMTg2LDAuODg2MSAtMC42NTE1LDEuMjE5IC0wLjMzMywwLjMzMyAtMC43NTcyLDAuNTU5OCAtMS4yMTksMC42NTE2IC0wLjQ2MTksMC4wOTE5IC0wLjk0MDYsMC4wNDQ3IC0xLjM3NTYsLTAuMTM1NSAtMC40MzUsLTAuMTgwMiAtMC44MDY5LC0wLjQ4NTMgLTEuMDY4NSwtMC44NzY4IC0wLjI2MTYsLTAuMzkxNiAtMC40MDEyLC0wLjg1MTkgLTAuNDAxMiwtMS4zMjI3IDAsLTAuNjMxNSAwLjI1MDgsLTEuMjM3IDAuNjk3MywtMS42ODM1IDAuNDQ2NSwtMC40NDY1IDEuMDUyMSwtMC42OTczIDEuNjgzNSwtMC42OTczIHoiCiAgIGZpbGw9IiM4YmQ0ZjMiCiAgIGZpbGwtcnVsZT0iZXZlbm9kZCIKICAgb3BhY2l0eT0iMSIKICAgc3Ryb2tlPSJub25lIgogICBpZD0icGF0aDc1NCIgLz4KPHBhdGgKICAgZD0ibSAxNC42MjIxLDMwLjU1OTYgYyAwLjA5MzQsMCAwLjE4NDcsMC4wMjc2IDAuMjYyNCwwLjA3OTQgMC4wNzc4LDAuMDUxNyAwLjEzODUsMC4xMjUzIDAuMTc0NSwwLjIxMTUgMC4wMzYsMC4wODYyIDAuMDQ1OCwwLjE4MSAwLjAyOCwwLjI3MjcgLTAuMDE3OCwwLjA5MTcgLTAuMDYyMiwwLjE3NjEgLTAuMTI3OCwwLjI0MjYgLTAuMDY1NiwwLjA2NjUgLTAuMTQ5NCwwLjExMjEgLTAuMjQwOSwwLjEzMTEgLTAuMDkxNCwwLjAxOSAtMC4xODY0LDAuMDEwNSAtMC4yNzMxLC0wLjAyNDQgLTAuMDg2NiwtMC4wMzQ4IC0wLjE2MSwtMC4wOTQ1IC0wLjIxMzgsLTAuMTcxNiAtMC4wNTI4LC0wLjA3NyAtMC4wODE3LC0wLjE2NzkgLTAuMDgyOSwtMC4yNjEzIC05ZS00LC0wLjA2MjggMC4wMTA4LC0wLjEyNSAwLjAzNDIsLTAuMTgzMiAwLjAyMzQsLTAuMDU4MiAwLjA1ODEsLTAuMTExMiAwLjEwMjIsLTAuMTU1OSAwLjA0NDEsLTAuMDQ0NiAwLjA5NjYsLTAuMDgwMSAwLjE1NDUsLTAuMTA0MyAwLjA1NzgsLTAuMDI0MiAwLjExOTksLTAuMDM2NiAwLjE4MjcsLTAuMDM2NiB6IgogICBmaWxsPSIjZmZmZmZmIgogICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgIG9wYWNpdHk9IjEiCiAgIHN0cm9rZT0ibm9uZSIKICAgaWQ9InBhdGg3NTYiIC8+CjxwYXRoCiAgIGQ9Im0gMTQuMTY2MywzMiBjIDAuMDM0OCwwIDAuMDY4OCwwLjAxMDMgMC4wOTc3LDAuMDI5NyAwLjAyOSwwLjAxOTMgMC4wNTE1LDAuMDQ2OCAwLjA2NDksMC4wNzg5IDAuMDEzMywwLjAzMjIgMC4wMTY4LDAuMDY3NiAwLjAxLDAuMTAxNyAtMC4wMDY4LDAuMDM0MiAtMC4wMjM2LDAuMDY1NSAtMC4wNDgyLDAuMDkwMSAtMC4wMjQ2LDAuMDI0NyAtMC4wNTYsMC4wNDE0IC0wLjA5MDEsMC4wNDgyIC0wLjAzNDEsMC4wMDY4IC0wLjA2OTUsMC4wMDMzIC0wLjEwMTcsLTAuMDEgLTAuMDMyMSwtMC4wMTMzIC0wLjA1OTYsLTAuMDM1OSAtMC4wNzksLTAuMDY0OCAtMC4wMTkzLC0wLjAyOSAtMC4wMjk2LC0wLjA2MyAtMC4wMjk2LC0wLjA5NzggLTVlLTQsLTAuMDIyNyAwLjAwMzYsLTAuMDQ1MyAwLjAxMTksLTAuMDY2NCAwLjAwODMsLTAuMDIxMSAwLjAyMDcsLTAuMDQwNCAwLjAzNjQsLTAuMDU2NyAwLjAxNTgsLTAuMDE2NCAwLjAzNDYsLTAuMDI5NSAwLjA1NTQsLTAuMDM4NSAwLjAyMDgsLTAuMDA5MSAwLjA0MzIsLTAuMDE0IDAuMDY1OSwtMC4wMTQ0IHoiCiAgIGZpbGw9IiNmZmZmZmYiCiAgIGZpbGwtcnVsZT0iZXZlbm9kZCIKICAgb3BhY2l0eT0iMSIKICAgc3Ryb2tlPSJub25lIgogICBpZD0icGF0aDc1OCIgLz4KPC9nPgo8ZwogICBvcGFjaXR5PSIxIgogICBpZD0iZzc2OCI+CjxwYXRoCiAgIGQ9Im0gMTguMzMwOCwzOC4zMjkxIGMgMC4xNzc5LDAgMC4zNTE3LDAuMDUyNyAwLjQ5OTYsMC4xNTE1IDAuMTQ3OSwwLjA5ODggMC4yNjMxLDAuMjM5MyAwLjMzMTIsMC40MDM2IDAuMDY4MSwwLjE2NDMgMC4wODU5LDAuMzQ1MSAwLjA1MTIsMC41MTk1IC0wLjAzNDcsMC4xNzQ1IC0wLjEyMDQsMC4zMzQ3IC0wLjI0NjEsMC40NjA0IC0wLjEyNTgsMC4xMjU4IC0wLjI4NiwwLjIxMTQgLTAuNDYwNCwwLjI0NjEgLTAuMTc0NSwwLjAzNDcgLTAuMzU1MywwLjAxNjkgLTAuNTE5NiwtMC4wNTExIC0wLjE2NDMsLTAuMDY4MSAtMC4zMDQ3LC0wLjE4MzQgLTAuNDAzNSwtMC4zMzEyIC0wLjA5ODgsLTAuMTQ3OSAtMC4xNTE2LC0wLjMyMTggLTAuMTUxNiwtMC40OTk2IDAsLTAuMjM3NiAwLjA5NDQsLTAuNDY1NSAwLjI2MjUsLTAuNjMzNiAwLjE2OCwtMC4xNjggMC4zOTU5LC0wLjI2MjQgMC42MzM1LC0wLjI2MjQgeiIKICAgZmlsbD0iIzhiZDRmMyIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBvcGFjaXR5PSIxIgogICBzdHJva2U9Im5vbmUiCiAgIGlkPSJwYXRoNzYyIiAvPgo8cGF0aAogICBkPSJtIDE4LjE3NDcsMzguNjg3NSBjIDAuMDQzLDAgMC4wODUxLDAuMDEyOCAwLjEyMDgsMC4wMzY3IDAuMDM1OCwwLjAyMzkgMC4wNjM3LDAuMDU3OSAwLjA4MDIsMC4wOTc3IDAuMDE2NSwwLjAzOTcgMC4wMjA4LDAuMDgzNSAwLjAxMjQsMC4xMjU3IC0wLjAwODQsMC4wNDIyIC0wLjAyOTEsMC4wODEgLTAuMDU5NiwwLjExMTQgLTAuMDMwNCwwLjAzMDQgLTAuMDY5MiwwLjA1MTIgLTAuMTExNCwwLjA1OTYgLTAuMDQyMiwwLjAwODMgLTAuMDg2LDAuMDA0IC0wLjEyNTcsLTAuMDEyNCAtMC4wMzk4LC0wLjAxNjUgLTAuMDczOCwtMC4wNDQ0IC0wLjA5NzcsLTAuMDgwMiAtMC4wMjM5LC0wLjAzNTggLTAuMDM2NiwtMC4wNzc4IC0wLjAzNjYsLTAuMTIwOSAtNWUtNCwtMC4wMjg3IDAuMDA0OSwtMC4wNTcyIDAuMDE1NiwtMC4wODM4IDAuMDEwOCwtMC4wMjY1IDAuMDI2OCwtMC4wNTA3IDAuMDQ3MSwtMC4wNzEgMC4wMjAzLC0wLjAyMDMgMC4wNDQ1LC0wLjAzNjMgMC4wNzExLC0wLjA0NzEgMC4wMjY2LC0wLjAxMDggMC4wNTUxLC0wLjAxNjEgMC4wODM4LC0wLjAxNTcgeiIKICAgZmlsbD0iI2ZmZmZmZiIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBvcGFjaXR5PSIxIgogICBzdHJva2U9Im5vbmUiCiAgIGlkPSJwYXRoNzY0IiAvPgo8cGF0aAogICBkPSJtIDE3Ljk2NjcsMzkuMzU5NCBjIDAuMDE1OCwwIDAuMDMxMywwLjAwNDcgMC4wNDQ1LDAuMDEzNSAwLjAxMzEsMC4wMDg3IDAuMDIzNCwwLjAyMTIgMC4wMjk0LDAuMDM1OSAwLjAwNjEsMC4wMTQ2IDAuMDA3NywwLjAzMDcgMC4wMDQ2LDAuMDQ2MiAtMC4wMDMxLDAuMDE1NSAtMC4wMTA3LDAuMDI5OCAtMC4wMjE5LDAuMDQwOSAtMC4wMTEyLDAuMDExMiAtMC4wMjU1LDAuMDE4OSAtMC4wNDEsMC4wMjE5IC0wLjAxNTUsMC4wMDMxIC0wLjAzMTYsMC4wMDE1IC0wLjA0NjIsLTAuMDA0NSAtMC4wMTQ2LC0wLjAwNjEgLTAuMDI3MSwtMC4wMTYzIC0wLjAzNTksLTAuMDI5NSAtMC4wMDg4LC0wLjAxMzEgLTAuMDEzNSwtMC4wMjg2IC0wLjAxMzUsLTAuMDQ0NCAwLC0wLjAyMTIgMC4wMDg0LC0wLjA0MTYgMC4wMjM1LC0wLjA1NjYgMC4wMTUsLTAuMDE1IDAuMDM1MywtMC4wMjM0IDAuMDU2NSwtMC4wMjM0IHoiCiAgIGZpbGw9IiNmZmZmZmYiCiAgIGZpbGwtcnVsZT0iZXZlbm9kZCIKICAgb3BhY2l0eT0iMSIKICAgc3Ryb2tlPSJub25lIgogICBpZD0icGF0aDc2NiIgLz4KPC9nPgo8ZwogICBvcGFjaXR5PSIxIgogICBpZD0iZzc3NiI+CjxwYXRoCiAgIGQ9Im0gMTUuNzQwOSwzNS44Mzk4IGMgMC4yNjk2LC02ZS00IDAuNTMzMywwLjA3ODcgMC43NTc5LDAuMjI4IDAuMjI0NSwwLjE0OTMgMC4zOTk3LDAuMzYxOCAwLjUwMzUsMC42MTA2IDAuMTAzNywwLjI0ODkgMC4xMzE0LDAuNTIyOSAwLjA3OTQsMC43ODc0IC0wLjA1MiwwLjI2NDYgLTAuMTgxMywwLjUwNzggLTAuMzcxNSwwLjY5ODkgLTAuMTkwMiwwLjE5MTEgLTAuNDMyNywwLjMyMTUgLTAuNjk3MSwwLjM3NDcgLTAuMjY0MywwLjA1MzIgLTAuNTM4NCwwLjAyNjkgLTAuNzg3OCwtMC4wNzU3IC0wLjI0OTMsLTAuMTAyNiAtMC40NjI2LC0wLjI3NjggLTAuNjEyOSwtMC41MDA2IC0wLjE1MDMsLTAuMjIzOSAtMC4yMzA5LC0wLjQ4NzIgLTAuMjMxNSwtMC43NTY5IC01ZS00LC0wLjE3OSAwLjAzNDQsLTAuMzU2MyAwLjEwMjUsLTAuNTIxOSAwLjA2ODEsLTAuMTY1NSAwLjE2ODIsLTAuMzE2IDAuMjk0NSwtMC40NDI5IDAuMTI2MywtMC4xMjY5IDAuMjc2MywtMC4yMjc3IDAuNDQxNSwtMC4yOTY2IDAuMTY1MywtMC4wNjg5IDAuMzQyNCwtMC4xMDQ1IDAuNTIxNSwtMC4xMDUgeiIKICAgZmlsbD0iIzhiZDRmMyIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBvcGFjaXR5PSIxIgogICBzdHJva2U9Im5vbmUiCiAgIGlkPSJwYXRoNzcwIiAvPgo8cGF0aAogICBkPSJtIDE1LjU0MjcsMzYuMTYwMiBjIDAuMDcwMywwIDAuMTM4OSwwLjAyMDggMC4xOTczLDAuMDU5OCAwLjA1ODUsMC4wMzkgMC4xMDQsMC4wOTQ1IDAuMTMwOSwwLjE1OTQgMC4wMjY4LDAuMDY0OSAwLjAzMzksMC4xMzYzIDAuMDIwMiwwLjIwNTMgLTAuMDEzNywwLjA2ODkgLTAuMDQ3NiwwLjEzMjEgLTAuMDk3MiwwLjE4MTggLTAuMDQ5NywwLjA0OTcgLTAuMTEzLDAuMDgzNSAtMC4xODE5LDAuMDk3MiAtMC4wNjg5LDAuMDEzNyAtMC4xNDAzLDAuMDA2NyAtMC4yMDUyLC0wLjAyMDIgLTAuMDY0OSwtMC4wMjY5IC0wLjEyMDQsLTAuMDcyNCAtMC4xNTk0LC0wLjEzMDggLTAuMDM5MSwtMC4wNTg0IC0wLjA1OTksLTAuMTI3MSAtMC4wNTk5LC0wLjE5NzMgMCwtMC4wOTQyIDAuMDM3NCwtMC4xODQ2IDAuMTA0LC0wLjI1MTIgMC4wNjY2LC0wLjA2NjYgMC4xNTcsLTAuMTA0IDAuMjUxMiwtMC4xMDQgeiIKICAgZmlsbD0iI2ZmZmZmZiIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBvcGFjaXR5PSIxIgogICBzdHJva2U9Im5vbmUiCiAgIGlkPSJwYXRoNzcyIiAvPgo8cGF0aAogICBkPSJtIDE1LjIwMDcsMzcuMjM4MyBjIDAuMDM0OCwwIDAuMDY4MSwwLjAxMzggMC4wOTI3LDAuMDM4NCAwLjAyNDcsMC4wMjQ2IDAuMDM4NSwwLjA1OCAwLjAzODUsMC4wOTI4IDAuMDAyNywwLjAxNyAwLjAwMjEsMC4wMzQ0IC0wLjAwMTksMC4wNTEyIC0wLjAwNCwwLjAxNjcgLTAuMDExMywwLjAzMjYgLTAuMDIxNCwwLjA0NjUgLTAuMDEwMSwwLjAxNCAtMC4wMjI4LDAuMDI1OCAtMC4wMzc1LDAuMDM0OSAtMC4wMTQ3LDAuMDA5IC0wLjAzMSwwLjAxNTEgLTAuMDQ4LDAuMDE3OCAtMC4wMzQzLDAuMDA0NyAtMC4wNjksLTAuMDA0IC0wLjA5NywtMC4wMjQzIC0wLjAyOCwtMC4wMjAyIC0wLjA0NzIsLTAuMDUwNSAtMC4wNTM0LC0wLjA4NDUgLTAuMDAzMiwtMC4wMTM3IC0wLjAwMzIsLTAuMDI3OSAwLC0wLjA0MTYgLTVlLTQsLTAuMDE2OCAwLjAwMjQsLTAuMDMzNiAwLjAwODUsLTAuMDQ5MyAwLjAwNiwtMC4wMTU2IDAuMDE1MSwtMC4wMyAwLjAyNjcsLTAuMDQyMiAwLjAxMTYsLTAuMDEyMiAwLjAyNTUsLTAuMDIxOSAwLjA0MDgsLTAuMDI4OCAwLjAxNTQsLTAuMDA2OCAwLjAzMiwtMC4wMTA1IDAuMDQ4OCwtMC4wMTA5IHoiCiAgIGZpbGw9IiNmZmZmZmYiCiAgIGZpbGwtcnVsZT0iZXZlbm9kZCIKICAgb3BhY2l0eT0iMSIKICAgc3Ryb2tlPSJub25lIgogICBpZD0icGF0aDc3NCIgLz4KPC9nPgo8ZwogICBvcGFjaXR5PSIxIgogICBpZD0iZzc4NCI+CjxwYXRoCiAgIGQ9Im0gNDUuNTk0LDUzLjYwOTQgYyAtMC4yNTg5LDAgLTAuNTExOSwwLjA3NjcgLTAuNzI3MiwwLjIyMDUgLTAuMjE1MiwwLjE0MzkgLTAuMzgzLDAuMzQ4MyAtMC40ODIsMC41ODc0IC0wLjA5OTEsMC4yMzkyIC0wLjEyNSwwLjUwMjMgLTAuMDc0NSwwLjc1NjIgMC4wNTA1LDAuMjUzOSAwLjE3NTIsMC40ODcxIDAuMzU4MiwwLjY3MDEgMC4xODMsMC4xODMxIDAuNDE2MiwwLjMwNzcgMC42NzAxLDAuMzU4MiAwLjI1MzksMC4wNTA1IDAuNTE3MSwwLjAyNDYgMC43NTYyLC0wLjA3NDQgMC4yMzkyLC0wLjA5OTEgMC40NDM2LC0wLjI2NjkgMC41ODc0LC0wLjQ4MjEgMC4xNDM4LC0wLjIxNTIgMC4yMjA1LC0wLjQ2ODMgMC4yMjA1LC0wLjcyNzEgMCwtMC4zNDcxIC0wLjEzNzgsLTAuNjggLTAuMzgzMywtMC45MjU1IC0wLjI0NTQsLTAuMjQ1NCAtMC41NzgzLC0wLjM4MzMgLTAuOTI1NCwtMC4zODMzIHoiCiAgIGZpbGw9IiM4YmQ0ZjMiCiAgIGZpbGwtcnVsZT0iZXZlbm9kZCIKICAgb3BhY2l0eT0iMSIKICAgc3Ryb2tlPSJub25lIgogICBpZD0icGF0aDc3OCIgLz4KPHBhdGgKICAgZD0ibSA0NS45MDE4LDU0LjA1MDggYyAtMC4wNTEzLDAgLTAuMTAxNCwwLjAxNTIgLTAuMTQ0LDAuMDQzNyAtMC4wNDI3LDAuMDI4NCAtMC4wNzU5LDAuMDY4OSAtMC4wOTU1LDAuMTE2MyAtMC4wMTk2LDAuMDQ3NCAtMC4wMjQ3LDAuMDk5NSAtMC4wMTQ3LDAuMTQ5NyAwLjAxLDAuMDUwMyAwLjAzNDYsMC4wOTY1IDAuMDcwOSwwLjEzMjggMC4wMzYyLDAuMDM2MiAwLjA4MjQsMC4wNjA5IDAuMTMyNywwLjA3MDkgMC4wNTAzLDAuMDEgMC4xMDI0LDAuMDA0OSAwLjE0OTgsLTAuMDE0NyAwLjA0NzMsLTAuMDE5NyAwLjA4NzgsLTAuMDUyOSAwLjExNjMsLTAuMDk1NSAwLjAyODUsLTAuMDQyNiAwLjA0MzcsLTAuMDkyOCAwLjA0MzcsLTAuMTQ0IDAsLTAuMDY4OCAtMC4wMjczLC0wLjEzNDcgLTAuMDc1OSwtMC4xODMzIC0wLjA0ODcsLTAuMDQ4NiAtMC4xMTQ2LC0wLjA3NTkgLTAuMTgzMywtMC4wNzU5IHoiCiAgIGZpbGw9IiNmZmZmZmYiCiAgIGZpbGwtcnVsZT0iZXZlbm9kZCIKICAgb3BhY2l0eT0iMSIKICAgc3Ryb2tlPSJub25lIgogICBpZD0icGF0aDc4MCIgLz4KPHBhdGgKICAgZD0ibSA0Ni4xNTA4LDU0Ljg0MTggYyAtMC4wMjUsMC4wMDE1IC0wLjA0ODYsMC4wMTIxIC0wLjA2NjIsMC4wMjk4IC0wLjAxNzcsMC4wMTc3IC0wLjAyODMsMC4wNDEyIC0wLjAyOTksMC4wNjYyIC00ZS00LDAuMDEyNyAwLjAwMTgsMC4wMjU0IDAuMDA2NCwwLjAzNzMgMC4wMDQ3LDAuMDExOCAwLjAxMTgsMC4wMjI2IDAuMDIwOCwwLjAzMTYgMC4wMDksMC4wMDkgMC4wMTk3LDAuMDE2IDAuMDMxNiwwLjAyMDcgMC4wMTE4LDAuMDA0NyAwLjAyNDUsMC4wMDY4IDAuMDM3MywwLjAwNjQgMC4wMTIxLDRlLTQgMC4wMjQzLC0wLjAwMTYgMC4wMzU3LC0wLjAwNTggMC4wMTE0LC0wLjAwNDMgMC4wMjE5LC0wLjAxMDggMC4wMzA4LC0wLjAxOTEgMC4wMDg5LC0wLjAwODMgMC4wMTYxLC0wLjAxODMgMC4wMjEyLC0wLjAyOTQgMC4wMDUsLTAuMDExMSAwLjAwNzgsLTAuMDIzMSAwLjAwODMsLTAuMDM1MyA0ZS00LC0wLjAxMjcgLTAuMDAxOCwtMC4wMjU0IC0wLjAwNjQsLTAuMDM3MyAtMC4wMDQ3LC0wLjAxMTggLTAuMDExOCwtMC4wMjI2IC0wLjAyMDgsLTAuMDMxNiAtMC4wMDksLTAuMDA5IC0wLjAxOTcsLTAuMDE2IC0wLjAzMTYsLTAuMDIwNyAtMC4wMTE4LC0wLjAwNDcgLTAuMDI0NSwtMC4wMDY4IC0wLjAzNzIsLTAuMDA2NCB6IgogICBmaWxsPSIjZmZmZmZmIgogICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgIG9wYWNpdHk9IjEiCiAgIHN0cm9rZT0ibm9uZSIKICAgaWQ9InBhdGg3ODIiIC8+CjwvZz4KPGcKICAgb3BhY2l0eT0iMSIKICAgaWQ9Imc3OTIiPgo8cGF0aAogICBkPSJtIDQ0LjExLDU2LjA1NzYgYyAtMC4wOTc1LDAgLTAuMTkyOCwwLjAyODkgLTAuMjczOCwwLjA4MzEgLTAuMDgxLDAuMDU0MSAtMC4xNDQyLDAuMTMxMSAtMC4xODE1LDAuMjIxMSAtMC4wMzczLDAuMDkwMSAtMC4wNDcxLDAuMTg5MiAtMC4wMjgsMC4yODQ4IDAuMDE5LDAuMDk1NSAwLjA2NTksMC4xODM0IDAuMTM0OCwwLjI1MjMgMC4wNjg5LDAuMDY4OSAwLjE1NjgsMC4xMTU4IDAuMjUyMywwLjEzNDggMC4wOTU2LDAuMDE5MSAwLjE5NDcsMC4wMDkzIDAuMjg0OCwtMC4wMjggMC4wOSwtMC4wMzczIDAuMTY3LC0wLjEwMDUgMC4yMjExLC0wLjE4MTUgMC4wNTQyLC0wLjA4MSAwLjA4MzEsLTAuMTc2MyAwLjA4MzEsLTAuMjczOCAwLC0wLjEzMDcgLTAuMDUxOSwtMC4yNTYgLTAuMTQ0NCwtMC4zNDg0IEMgNDQuMzY2LDU2LjEwOTUgNDQuMjQwNyw1Ni4wNTc2IDQ0LjExLDU2LjA1NzYgWiIKICAgZmlsbD0iIzhiZDRmMyIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBvcGFjaXR5PSIxIgogICBzdHJva2U9Im5vbmUiCiAgIGlkPSJwYXRoNzg2IiAvPgo8cGF0aAogICBkPSJtIDQ0LjE5NjgsNTYuMjUzMyBjIC0wLjAzMTgsLTAuMDA0NyAtMC4wNjQxLDAuMDAzIC0wLjA5MDMsMC4wMjE0IC0wLjAyNjIsMC4wMTg1IC0wLjA0NDMsMC4wNDY0IC0wLjA1MDUsMC4wNzc4IC0wLjAwNDcsMC4wMzIyIDAuMDAzNCwwLjA2NDkgMC4wMjI2LDAuMDkxMiAwLjAxOTEsMC4wMjYzIDAuMDQ3NywwLjA0NDEgMC4wNzk4LDAuMDQ5NiBoIDAuMDM4NCBjIDAuMDI4NCwtMC4wMDQ3IDAuMDU0MywtMC4wMTkzIDAuMDczLC0wLjA0MTMgMC4wMTg3LC0wLjAyMTkgMC4wMjg5LC0wLjA0OTggMC4wMjg5LC0wLjA3ODcgMCwtMC4wMjg4IC0wLjAxMDIsLTAuMDU2NyAtMC4wMjg5LC0wLjA3ODcgLTAuMDE4NywtMC4wMjIgLTAuMDQ0NiwtMC4wMzY2IC0wLjA3MywtMC4wNDEzIHoiCiAgIGZpbGw9IiNmZmZmZmYiCiAgIGZpbGwtcnVsZT0iZXZlbm9kZCIKICAgb3BhY2l0eT0iMSIKICAgc3Ryb2tlPSJub25lIgogICBpZD0icGF0aDc4OCIgLz4KPHBhdGgKICAgZD0ibSA0NC4zMTI0LDU2LjYxNzIgYyAtMC4wMDg5LDAgLTAuMDE3NSwwLjAwMjYgLTAuMDI0OSwwLjAwNzUgLTAuMDA3NCwwLjAwNSAtMC4wMTMxLDAuMDEyIC0wLjAxNjUsMC4wMjAxIC0wLjAwMzQsMC4wMDgyIC0wLjAwNDMsMC4wMTcyIC0wLjAwMjYsMC4wMjU5IDAuMDAxOCwwLjAwODcgMC4wMDYsMC4wMTY3IDAuMDEyMywwLjAyMyAwLjAwNjMsMC4wMDYyIDAuMDE0MiwwLjAxMDUgMC4wMjI5LDAuMDEyMiAwLjAwODcsMC4wMDE4IDAuMDE3Nyw5ZS00IDAuMDI1OSwtMC4wMDI1IDAuMDA4MiwtMC4wMDM0IDAuMDE1MiwtMC4wMDkyIDAuMDIwMSwtMC4wMTY1IDAuMDA1LC0wLjAwNzQgMC4wMDc2LC0wLjAxNjEgMC4wMDc2LC0wLjAyNDkgMCwtMC4wMTE5IC0wLjAwNDcsLTAuMDIzMyAtMC4wMTMxLC0wLjAzMTcgLTAuMDA4NCwtMC4wMDg0IC0wLjAxOTgsLTAuMDEzMSAtMC4wMzE3LC0wLjAxMzEgeiIKICAgZmlsbD0iI2ZmZmZmZiIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBvcGFjaXR5PSIxIgogICBzdHJva2U9Im5vbmUiCiAgIGlkPSJwYXRoNzkwIiAvPgo8L2c+CjxnCiAgIG9wYWNpdHk9IjEiCiAgIGlkPSJnODAwIj4KPHBhdGgKICAgZD0ibSA0NS4wNTkzLDU3Ljc4NTIgYyAtMC4xNDgxLDAgLTAuMjkyOCwwLjA0MzkgLTAuNDE2LDAuMTI2MiAtMC4xMjMxLDAuMDgyMiAtMC4yMTkxLDAuMTk5MiAtMC4yNzU4LDAuMzM2IC0wLjA1NjYsMC4xMzY4IC0wLjA3MTUsMC4yODc0IC0wLjA0MjYsMC40MzI2IDAuMDI4OSwwLjE0NTMgMC4xMDAyLDAuMjc4NyAwLjIwNSwwLjM4MzQgMC4xMDQ3LDAuMTA0OCAwLjIzODEsMC4xNzYxIDAuMzgzNCwwLjIwNSAwLjE0NTIsMC4wMjg5IDAuMjk1OCwwLjAxNCAwLjQzMjYsLTAuMDQyNiAwLjEzNjgsLTAuMDU2NyAwLjI1MzgsLTAuMTUyNyAwLjMzNiwtMC4yNzU4IDAuMDgyMywtMC4xMjMyIDAuMTI2MiwtMC4yNjc5IDAuMTI2MiwtMC40MTYgMCwtMC4xOTg2IC0wLjA3ODgsLTAuMzg5MSAtMC4yMTkzLC0wLjUyOTUgLTAuMTQwNCwtMC4xNDA1IC0wLjMzMDksLTAuMjE5MyAtMC41Mjk1LC0wLjIxOTMgeiIKICAgZmlsbD0iIzhiZDRmMyIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBvcGFjaXR5PSIxIgogICBzdHJva2U9Im5vbmUiCiAgIGlkPSJwYXRoNzk0IiAvPgo8cGF0aAogICBkPSJtIDQ1LjE2ODYsNTcuOTYxMiBjIC0wLjA1MSwwIC0wLjA5OTgsMC4wMjAyIC0wLjEzNTgsMC4wNTYyIC0wLjAzNiwwLjAzNiAtMC4wNTYyLDAuMDg0OSAtMC4wNTYyLDAuMTM1OCAwLDAuMDM4NiAwLjAxMTQsMC4wNzY0IDAuMDMyOSwwLjEwODUgMC4wMjE0LDAuMDMyMSAwLjA1MTksMC4wNTcxIDAuMDg3NiwwLjA3MTggMC4wMzU2LDAuMDE0OCAwLjA3NDksMC4wMTg3IDAuMTEyNywwLjAxMTIgMC4wMzc5LC0wLjAwNzYgMC4wNzI3LC0wLjAyNjIgMC4xLC0wLjA1MzUgMC4wMjczLC0wLjAyNzMgMC4wNDU5LC0wLjA2MiAwLjA1MzQsLTAuMDk5OSAwLjAwNzYsLTAuMDM3OSAwLjAwMzcsLTAuMDc3MSAtMC4wMTExLC0wLjExMjggLTAuMDE0OCwtMC4wMzU3IC0wLjAzOTgsLTAuMDY2MSAtMC4wNzE5LC0wLjA4NzYgLTAuMDMyMSwtMC4wMjE0IC0wLjA2OTgsLTAuMDMyOSAtMC4xMDg0LC0wLjAzMjkgeiIKICAgZmlsbD0iI2ZmZmZmZiIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBvcGFjaXR5PSIxIgogICBzdHJva2U9Im5vbmUiCiAgIGlkPSJwYXRoNzk2IiAvPgo8cGF0aAogICBkPSJtIDQ1LjM1NzUsNTguNTU5NyBjIC0wLjAwOTUsLTAuMDAyNCAtMC4wMTk0LC0wLjAwMjcgLTAuMDI5LC0xMGUtNCAtMC4wMDk2LDAuMDAxNyAtMC4wMTg4LDAuMDA1MyAtMC4wMjY5LDAuMDEwNyAtMC4wMDgxLDAuMDA1NSAtMC4wMTUsMC4wMTI1IC0wLjAyMDMsMC4wMjA3IC0wLjAwNTMsMC4wMDgzIC0wLjAwODcsMC4wMTc1IC0wLjAxMDIsMC4wMjcyIC0wLjAwMzksMC4wMTg2IC00ZS00LDAuMDM4IDAuMDA5NywwLjA1NDEgMC4wMTAyLDAuMDE2MSAwLjAyNjIsMC4wMjc3IDAuMDQ0NywwLjAzMjMgaCAwLjAzMiBjIDAuMDE4NiwwIDAuMDM2NSwtMC4wMDc1IDAuMDQ5NywtMC4wMjA3IDAuMDEzMiwtMC4wMTMyIDAuMDIwNywtMC4wMzExIDAuMDIwNywtMC4wNDk3IDRlLTQsLTAuMDA5MyAtMTBlLTQsLTAuMDE4NSAtMC4wMDQyLC0wLjAyNzIgLTAuMDAzMSwtMC4wMDg3IC0wLjAwNzksLTAuMDE2NyAtMC4wMTQyLC0wLjAyMzYgLTAuMDA2MiwtMC4wMDY4IC0wLjAxMzcsLTAuMDEyNCAtMC4wMjIxLC0wLjAxNjMgLTAuMDA4NCwtMC4wMDM5IC0wLjAxNzUsLTAuMDA2MSAtMC4wMjY3LC0wLjAwNjUgeiIKICAgZmlsbD0iI2ZmZmZmZiIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBvcGFjaXR5PSIxIgogICBzdHJva2U9Im5vbmUiCiAgIGlkPSJwYXRoNzk4IiAvPgo8L2c+CjxnCiAgIG9wYWNpdHk9IjEiCiAgIGlkPSJnODE1Ij4KPGcKICAgb3BhY2l0eT0iMSIKICAgaWQ9Imc4MTEiPgo8dXNlCiAgIGZpbGw9InVybCgjTGluZWFyR3JhZGllbnRfNikiCiAgIGZpbGwtcnVsZT0ibm9uemVybyIKICAgc3Ryb2tlPSJub25lIgogICB4bGluazpocmVmPSIjRmlsbF83IgogICBpZD0idXNlODAyIgogICBzdHlsZT0iZmlsbDp1cmwoI0xpbmVhckdyYWRpZW50XzYpIiAvPgo8bWFzawogICBoZWlnaHQ9IjExLjA5MDIiCiAgIGlkPSJTdHJva2VNYXNrXzciCiAgIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgIHdpZHRoPSIxNy43NzgzIgogICB4PSI0LjQyMzQxIgogICB5PSIxOC43MzgyIj4KPHJlY3QKICAgZmlsbD0iI2ZmZmZmZiIKICAgaGVpZ2h0PSIxMS4wOTAyIgogICBzdHJva2U9Im5vbmUiCiAgIHdpZHRoPSIxNy43NzgyOTkiCiAgIHg9IjQuNDIzNDA5OSIKICAgeT0iMTguNzM4MTk5IgogICBpZD0icmVjdDgwNCIgLz4KPHVzZQogICBmaWxsPSIjMDAwMDAwIgogICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgIHN0cm9rZT0ibm9uZSIKICAgeGxpbms6aHJlZj0iI0ZpbGxfNyIKICAgaWQ9InVzZTgwNiIgLz4KPC9tYXNrPgo8dXNlCiAgIGZpbGw9Im5vbmUiCiAgIG1hc2s9InVybCgjU3Ryb2tlTWFza183KSIKICAgc3Ryb2tlPSIjNTUyZjgyIgogICBzdHJva2UtbGluZWNhcD0iYnV0dCIKICAgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciIKICAgc3Ryb2tlLXdpZHRoPSIwLjk2IgogICB4bGluazpocmVmPSIjRmlsbF83IgogICBpZD0idXNlODA5IiAvPgo8L2c+CjxwYXRoCiAgIGQ9Im0gMTYuMDI1OSwyMS4xOTk4IGMgMCwwIC02LjY1MTUzLDcuMjgwNCAtMTAuNTM5NTQsNy40ODUyIC0wLjE0NCwwLjMyIC0wLjI2MDE3LDAuNTc3OCAtMC4zMjQxNywwLjc2MDIgNC4yNTkyMSwwLjAxOTIgNy4zNDY5MSwtMC42NDg2IDkuNjI1MzEsLTEuNTgzIDIuMTk1MiwtMC44OTYgMy41OTM2LC0yLjA0NDggNC40NDgsLTMuMDc4NCAwLjg1NDQsLTEuMDMzNiAxLjA4MjUsLTEuODk5NyAxLjA4NTcsLTIuMzE1NyAwLjAwNjQsLTAuMDM5MiAwLjAyMzksLTAuMTI4MiAwLjAxNzUsLTAuMTY3NCAtMC4zMiwtMC43NjggMC43Nzg0LC0xLjc3OTMgMS4yMDcyLC0yLjE4MjUgLTAuMTUwNCwtMC4xNjMyIC0wLjQzMzUsLTAuNTE1MyAtMC42ODMxLC0wLjgxNjEgLTIuMzc5MiwtMC4wNTg2IC0yLjg2NzcsLTAuNDQ4OCAtNC44MzA1LDEuODg0OSAtMS45NjI4LDIuMzMzNiAtMC4wMDY0LDAuMDEyOCAtMC4wMDY0LDAuMDEyOCB6IgogICBmaWxsPSIjNzc3YWJhIgogICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgIG9wYWNpdHk9IjEiCiAgIHN0cm9rZT0ibm9uZSIKICAgaWQ9InBhdGg4MTMiIC8+CjwvZz4KPGcKICAgb3BhY2l0eT0iMSIKICAgaWQ9Imc4MzAiPgo8ZwogICBvcGFjaXR5PSIxIgogICBpZD0iZzgyNiI+Cjx1c2UKICAgZmlsbD0idXJsKCNMaW5lYXJHcmFkaWVudF83KSIKICAgZmlsbC1ydWxlPSJub256ZXJvIgogICBzdHJva2U9Im5vbmUiCiAgIHhsaW5rOmhyZWY9IiNGaWxsXzgiCiAgIGlkPSJ1c2U4MTciCiAgIHN0eWxlPSJmaWxsOnVybCgjTGluZWFyR3JhZGllbnRfNykiIC8+CjxtYXNrCiAgIGhlaWdodD0iMTQuMzM5IgogICBpZD0iU3Ryb2tlTWFza184IgogICBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICB3aWR0aD0iMTYuNTMxNiIKICAgeD0iNi41OTM1MiIKICAgeT0iMi4wMzk1NiI+CjxyZWN0CiAgIGZpbGw9IiNmZmZmZmYiCiAgIGhlaWdodD0iMTQuMzM5IgogICBzdHJva2U9Im5vbmUiCiAgIHdpZHRoPSIxNi41MzE2MDEiCiAgIHg9IjYuNTkzNTIwMiIKICAgeT0iMi4wMzk1NjAxIgogICBpZD0icmVjdDgxOSIgLz4KPHVzZQogICBmaWxsPSIjMDAwMDAwIgogICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgIHN0cm9rZT0ibm9uZSIKICAgeGxpbms6aHJlZj0iI0ZpbGxfOCIKICAgaWQ9InVzZTgyMSIgLz4KPC9tYXNrPgo8dXNlCiAgIGZpbGw9Im5vbmUiCiAgIG1hc2s9InVybCgjU3Ryb2tlTWFza184KSIKICAgc3Ryb2tlPSIjNTUyZjgyIgogICBzdHJva2UtbGluZWNhcD0iYnV0dCIKICAgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciIKICAgc3Ryb2tlLXdpZHRoPSIwLjk2IgogICB4bGluazpocmVmPSIjRmlsbF84IgogICBpZD0idXNlODI0IiAvPgo8L2c+CjxwYXRoCiAgIGQ9Im0gMjEuNDg4MywxNC42NCBjIDAsMCAtOS43NDA4LC0xMC4zODA3NSAtMTMuOTE5OTYsLTExLjkwMDc1IDAsMCAzLjYxNTk2LDAuNDk5MiA1LjU4MDc2LDEuMDM2OCAtMS45NDk4LC0wLjYyMzY2IC0zLjk1OTc3LC0xLjA0MDg4IC01Ljk5Njc2LC0xLjI0NDggMC4yMTEyLDEuMjggMS4zNDQsNi45MjQ4IDUuNDA0NzYsOS42OTkyNSAzLjQ2ODIsMi44NTU1IDcuMDk3OSwzLjcxMDIgOC43OTM4LDMuNjg4IDAuNTIzNCwtMC4xMDEgMC44OTY0LC0wLjU1OTkgMC44ODYsLTAuNTQ1OSAtMC4wMTYxLDAuMDA4NCAtMC42MjIsLTAuNTcxMiAtMC43NDg2LC0wLjczMjYgeiIKICAgZmlsbD0iIzc3N2FiYSIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBvcGFjaXR5PSIxIgogICBzdHJva2U9Im5vbmUiCiAgIGlkPSJwYXRoODI4IiAvPgo8L2c+CjxnCiAgIG9wYWNpdHk9IjEiCiAgIGlkPSJnODQ1Ij4KPGcKICAgb3BhY2l0eT0iMSIKICAgaWQ9Imc4NDEiPgo8dXNlCiAgIGZpbGw9InVybCgjTGluZWFyR3JhZGllbnRfOCkiCiAgIGZpbGwtcnVsZT0ibm9uemVybyIKICAgc3Ryb2tlPSJub25lIgogICB4bGluazpocmVmPSIjRmlsbF85IgogICBpZD0idXNlODMyIgogICBzdHlsZT0iZmlsbDp1cmwoI0xpbmVhckdyYWRpZW50XzgpIiAvPgo8bWFzawogICBoZWlnaHQ9IjkuMTU4MzEiCiAgIGlkPSJTdHJva2VNYXNrXzkiCiAgIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgIHdpZHRoPSIyMS45MTY2IgogICB4PSIxLjEzNDExIgogICB5PSIxMi4xNjgzIj4KPHJlY3QKICAgZmlsbD0iI2ZmZmZmZiIKICAgaGVpZ2h0PSI5LjE1ODMwOTkiCiAgIHN0cm9rZT0ibm9uZSIKICAgd2lkdGg9IjIxLjkxNjU5OSIKICAgeD0iMS4xMzQxMSIKICAgeT0iMTIuMTY4MyIKICAgaWQ9InJlY3Q4MzQiIC8+Cjx1c2UKICAgZmlsbD0iIzAwMDAwMCIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBzdHJva2U9Im5vbmUiCiAgIHhsaW5rOmhyZWY9IiNGaWxsXzkiCiAgIGlkPSJ1c2U4MzYiIC8+CjwvbWFzaz4KPHVzZQogICBmaWxsPSJub25lIgogICBtYXNrPSJ1cmwoI1N0cm9rZU1hc2tfOSkiCiAgIHN0cm9rZT0iIzU1MmY4MiIKICAgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiCiAgIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiCiAgIHN0cm9rZS13aWR0aD0iMC45NiIKICAgeGxpbms6aHJlZj0iI0ZpbGxfOSIKICAgaWQ9InVzZTgzOSIgLz4KPC9nPgo8cGF0aAogICBkPSJtIDIwLjM2MjYsMTYuODc4NCBjIDAsMCAtMTUuMTE5NDYsLTEuMDU4IC0xOC4yMzYyNiwtMC40MDg0IDAuNjM0NTUsLTAuNTMwMSAxLjI5Nzk2LC0xLjAyNDggMS45ODcyLC0xLjQ4MTYgLTAuNzkzOTQsMC40NjQxIC0xLjU2MTAzLDAuOTcyNiAtMi4yOTc2LDEuNTIzMiAxLjI4LDEuMTQ1NiA5LjE3NzU2LDcuNTIgMTguODE5MTYsMi4zMiAxLjk1NjEsLTEuMjg3MiAxLjk2NDksLTEuMzYwMiAxLjk0NDksLTEuMzQ1NCAtMC4wMiwwLjAxNDcgLTAuNzQ1MSwtMC40NDIxIC0yLjIwMzksLTAuNjAxNiB6IgogICBmaWxsPSIjNzc3YWJhIgogICBmaWxsLXJ1bGU9ImV2ZW5vZGQiCiAgIG9wYWNpdHk9IjEiCiAgIHN0cm9rZT0ibm9uZSIKICAgaWQ9InBhdGg4NDMiIC8+CjwvZz4KPGcKICAgaWQ9Imc0MzYxIgogICBzdHlsZT0iZGlzcGxheTppbmxpbmUiPjxwYXRoCiAgICAgZD0ibSAyMi44NzUyLDE0LjYyMTIgYyAwLjAyNDgsLTEuNDA1NiAyLjYyNCwtNi4zOTgyMSAtMC44ODM3LC0zLjkxNTUgLTIuMDAxLDEuNDE2MyAwLjkwNDUsMy45MTggMC44ODM3LDMuOTE1NSB6IgogICAgIGZpbGw9InVybCgjTGluZWFyR3JhZGllbnRfOSkiCiAgICAgZmlsbC1ydWxlPSJub256ZXJvIgogICAgIG9wYWNpdHk9IjEiCiAgICAgc3Ryb2tlPSJub25lIgogICAgIGlkPSJwYXRoODQ3IgogICAgIGlua3NjYXBlOmxhYmVsPSJwYXRoODQ3IgogICAgIHN0eWxlPSJjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjTGluZWFyR3JhZGllbnRfOSk7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kIiAvPjxnCiAgICAgb3BhY2l0eT0iMSIKICAgICBpZD0iZzg1OCI+Cjx1c2UKICAgZmlsbD0idXJsKCNMaW5lYXJHcmFkaWVudF8xMCkiCiAgIGZpbGwtcnVsZT0ibm9uemVybyIKICAgc3Ryb2tlPSJub25lIgogICB4bGluazpocmVmPSIjRmlsbF8xMCIKICAgaWQ9InVzZTg0OSIKICAgc3R5bGU9ImZpbGw6dXJsKCNMaW5lYXJHcmFkaWVudF8xMCkiIC8+CjxtYXNrCiAgIGhlaWdodD0iOC41Njg2IgogICBpZD0iU3Ryb2tlTWFza18xMCIKICAgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgd2lkdGg9IjYuNzQyNjMiCiAgIHg9IjE5Ljk3MDQiCiAgIHk9IjExLjU5ODYiPgo8cmVjdAogICBmaWxsPSIjZmZmZmZmIgogICBoZWlnaHQ9IjguNTY4NTk5NyIKICAgc3Ryb2tlPSJub25lIgogICB3aWR0aD0iNi43NDI2MyIKICAgeD0iMTkuOTcwNCIKICAgeT0iMTEuNTk4NiIKICAgaWQ9InJlY3Q4NTEiIC8+Cjx1c2UKICAgZmlsbD0iIzAwMDAwMCIKICAgZmlsbC1ydWxlPSJldmVub2RkIgogICBzdHJva2U9Im5vbmUiCiAgIHhsaW5rOmhyZWY9IiNGaWxsXzEwIgogICBpZD0idXNlODUzIiAvPgo8L21hc2s+Cjx1c2UKICAgZmlsbD0ibm9uZSIKICAgbWFzaz0idXJsKCNTdHJva2VNYXNrXzEwKSIKICAgc3Ryb2tlPSIjNTUyZjgyIgogICBzdHJva2UtbGluZWNhcD0iYnV0dCIKICAgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciIKICAgc3Ryb2tlLXdpZHRoPSIwLjk2IgogICB4bGluazpocmVmPSIjRmlsbF8xMCIKICAgaWQ9InVzZTg1NiIgLz4KPC9nPjxwYXRoCiAgICAgZD0ibSAyMy42MzY3LDEyLjgzNzggYyAtMC4wMDMyLDAgLTEuMzgzNCwwLjUxNzYgLTEuNDk4MSwwLjk1MDUgLTAuMTE0NywwLjQzMjkgMC4zODU1LDEuNjU4NSAwLjM4NTUsMS42NTg1IGwgMC4wNTc0LDAuMTQ2NCAtMC4xMjExLDAuMDk4NyBjIC0wLjAwNjQsMC4wMDMyIC0xLjk1NzcsMS43MjA0IC0xLjgyNzEsMi4yOTY2IDAuMTU2MSwwLjY0NjIgMS44NTI3LDIuNDY4NSAxLjg1MjcsMi40Njg1IDAsMCA0LjQ2NjcsLTEuMzQ5NSA1LjA0OSwtNC4xNzU1IDAuNTMxNiwtMi41Nzk2IC0zLjQ3MDYsLTUuMDczNSAtNC4zMTQyLC00Ljc3NzggLTAuMDQ3LDAuMDE2NSAtMS43ODA0LDAuNzA4MyAtMS43MDIxLDEuNDczIDAuMDQyMSwwLjQxMDkgMC43MzA5LC0wLjM0MTQgMi4xMTgsLTAuMTM4OSB6IgogICAgIGZpbGw9InVybCgjTGluZWFyR3JhZGllbnRfMTEpIgogICAgIGZpbGwtcnVsZT0ibm9uemVybyIKICAgICBvcGFjaXR5PSIxIgogICAgIHN0cm9rZT0ibm9uZSIKICAgICBpZD0icGF0aDg2MCIKICAgICBzdHlsZT0iZmlsbDp1cmwoI0xpbmVhckdyYWRpZW50XzExKSIgLz48L2c+CjwvZz4KPC9zdmc+Cg=="
diff --git a/examples/helm-charts/zarf.yaml b/examples/helm-charts/zarf.yaml
index 2f585162a2..e5e3757717 100644
--- a/examples/helm-charts/zarf.yaml
+++ b/examples/helm-charts/zarf.yaml
@@ -1,91 +1,90 @@
kind: ZarfPackageConfig
metadata:
name: helm-charts
- description: Example showcasing mutiple ways to deploy helm charts
+ description: Example showcasing multiple ways to deploy helm charts
version: 0.0.1
components:
- - name: demo-helm-local-chart
- required: false
+ - name: demo-helm-charts
+ required: true
charts:
- - name: podinfo
+ # Charts are organized in a list with unique chart names per component - note that a Zarf chart name does not need to match the chart name in a Chart.yaml
+ - name: podinfo-local
version: 6.4.0
namespace: podinfo-from-local-chart
+ # In this case `localPath` will load the podinfo chart that is located in the `chart` directory
localPath: chart
- images:
- - ghcr.io/stefanprodan/podinfo:6.4.0
- actions:
- onDeploy:
- after:
- - wait:
- cluster:
- kind: deployment
- name: podinfo
- namespace: podinfo-from-local-chart
- condition: available
+ valuesFiles:
+ - values.yaml
+ # Variables are used to override the default values in the chart
+ # This can be overridden by the user at deployment time with the `--set` flag
+ variables:
+ - name: REPLICA_COUNT
+ description: "Override the number of pod replicas"
+ path: replicaCount
- - name: demo-helm-git-chart
- required: false
- charts:
- - name: podinfo
+ - name: podinfo-oci
+ version: 6.4.0
+ namespace: podinfo-from-oci
+ # In this case `url` will load the helm chart located in the podinfo OCI repository
+ url: oci://ghcr.io/stefanprodan/charts/podinfo
+ valuesFiles:
+ - values.yaml
+
+ - name: podinfo-git
version: 6.4.0
namespace: podinfo-from-git
+ # In this case `url` will load the helm chart located in the podinfo git repository
url: https://github.com/stefanprodan/podinfo.git
+ # By default git will look in the root of the git repository but you can define a sub directory with `gitPath`
gitPath: charts/podinfo
+ valuesFiles:
+ - values.yaml
+
+ - name: podinfo-repo
+ version: 6.4.0
+ namespace: podinfo-from-repo
+ # In this case `url` will load the helm chart located in the podinfo helm repository
+ url: https://stefanprodan.github.io/podinfo
+ # By default the chart `name` will be what is used to search a repository but since Zarf chart names must be unique per-component you can override this with `repoName`
+ repoName: podinfo
+ # By default the release name will be the chart name, but you can override this with the `releaseName` key
+ releaseName: cool-release-name
+ valuesFiles:
+ - values.yaml
images:
- ghcr.io/stefanprodan/podinfo:6.4.0
+ # This is the cosign signature for the podinfo image for image signature verification
+ - ghcr.io/stefanprodan/podinfo:sha256-57a654ace69ec02ba8973093b6a786faa15640575fbf0dbb603db55aca2ccec8.sig
actions:
onDeploy:
after:
- wait:
cluster:
kind: deployment
- namespace: podinfo-from-git
- name: podinfo
+ name: podinfo-local
+ namespace: podinfo-from-local-chart
condition: available
-
- - name: demo-helm-oci-chart
- required: false
- charts:
- - name: podinfo
- version: 6.4.0
- namespace: podinfo-from-oci
- url: oci://ghcr.io/stefanprodan/charts/podinfo
- images:
- - ghcr.io/stefanprodan/podinfo:6.4.0
- actions:
- onDeploy:
- after:
- wait:
cluster:
- kind: pod
- name: app.kubernetes.io/name=podinfo
+ kind: deployment
+ name: podinfo-oci
namespace: podinfo-from-oci
- condition: ready
+ condition: available
- wait:
cluster:
kind: deployment
- # note this version is the same as the chart version
- name: app.kubernetes.io/version=6.4.0
- namespace: podinfo-from-oci
+ name: podinfo-git
+ namespace: podinfo-from-git
condition: available
-
- - name: demo-helm-alt-release-name
- required: false
- charts:
- - name: podinfo
- version: 6.4.0
- namespace: helm-alt-release-name
- url: https://stefanprodan.github.io/podinfo
- releaseName: cool-name
- images:
- - ghcr.io/stefanprodan/podinfo:6.4.0
- actions:
- onDeploy:
- after:
- wait:
cluster:
- kind: pod
- name: app.kubernetes.io/name=cool-name-podinfo
- namespace: helm-alt-release-name
- condition: ready
+ kind: deployment
+ name: cool-release-name-podinfo
+ namespace: podinfo-from-repo
+ condition: available
+
+# YAML keys starting with `x-` are custom keys that are ignored by the Zarf CLI
+# The `x-mdx` key is used to render the markdown content for https://docs.zarf.dev/ref/examples
+x-mdx: |
+ This example shows the many ways you can deploy Helm Charts with Zarf. To learn more about how `charts` work in Zarf, see the [Helm Charts section](/ref/components/#helm-charts) of the package components documentation.
diff --git a/examples/kiwix/README.md b/examples/kiwix/README.md
deleted file mode 100644
index ba8eb4aef9..0000000000
--- a/examples/kiwix/README.md
+++ /dev/null
@@ -1,26 +0,0 @@
-import ExampleYAML from "@site/src/components/ExampleYAML";
-
-# Data Injections (Kiwix)
-
-This example shows Zarf's ability to inject data into a container running in a pod, in this case to initialize a [Kiwix server](https://www.kiwix.org/en/) to allow offline viewing of documentation and wiki pages.
-
-
-Data injections allow for data that is not included in the container image to be injected at deploy time and are declared using the `dataInjections` key within a component. Once the specified container is started, Zarf will copy the files and folders from the specified source into the specified container and path.
-
-:::caution
-
-Data injections depend on the `tar` (and for `compress`, `gzip`) executables and their implementation across operating systems. Between macOS and Linux there is general agreement on how these utilities should function, however on Windows you may see issues enabling compression.
-
-To resolve this you can either disable compression or use the GNU core-utils version of `tar` and `gzip`.
-
-:::
-
-## `zarf.yaml` {#zarf.yaml}
-
-:::info
-
-To view the example in its entirety, select the `Edit this page` link below the article and select the parent folder.
-
-:::
-
-
diff --git a/examples/kiwix/manifests/deployment.yaml b/examples/kiwix/manifests/deployment.yaml
index 679d7a66d7..e187c684e6 100644
--- a/examples/kiwix/manifests/deployment.yaml
+++ b/examples/kiwix/manifests/deployment.yaml
@@ -15,6 +15,7 @@ spec:
app: kiwix-serve
spec:
# Kiwix can hot-load files from the filesystem, but if your application cannot, this example shows how you can use an initContainer to bootstrap the injected files.
+ # It's necessary to include the ###ZARF_DATA_INJECTION_MARKER### somewhere in the podspec, otherwise data injections will not occur.
initContainers:
- name: data-loader
image: alpine:3.18
diff --git a/examples/kiwix/zarf.yaml b/examples/kiwix/zarf.yaml
index 8f3a300312..bb91def028 100644
--- a/examples/kiwix/zarf.yaml
+++ b/examples/kiwix/zarf.yaml
@@ -33,7 +33,22 @@ components:
onCreate:
before:
# Download a .zim file of a DevOps Stack Exchange snapshot into the data directory for use with Kiwix
- - cmd: curl https://zarf-examples.s3.amazonaws.com/devops.stackexchange.com_en_all_2023-05.zim -o zim-data/devops.stackexchange.com_en_all_2023-05.zim
+ - cmd: curl https://zarf-remote.s3.us-east-2.amazonaws.com/testdata/devops.stackexchange.com_en_all_2023-05.zim -o zim-data/devops.stackexchange.com_en_all_2023-05.zim
# Below are some more examples of *.zim files of available content:
# https://library.kiwix.org/?lang=eng
# NOTE: If `zarf package create`ing regularly you should mirror content to a web host you control to be a friendly neighbor
+
+# YAML keys starting with `x-` are custom keys that are ignored by the Zarf CLI
+# The `x-mdx` key is used to render the markdown content for https://docs.zarf.dev/ref/examples
+x-mdx: |
+ This example shows Zarf's ability to inject data into a container running in a pod, in this case to initialize a [Kiwix server](https://www.kiwix.org/en/) to allow offline viewing of documentation and wiki pages.
+
+ Data injections allow for data that is not included in the container image to be injected at deploy time and are declared using the `dataInjections` key within a component. Once the specified container is started, Zarf will copy the files and folders from the specified source into the specified container and path.
+
+ :::caution
+
+ Data injections depend on the `tar` (and for `compress`, `gzip`) executables and their implementation across operating systems. Between macOS and Linux there is general agreement on how these utilities should function, however on Windows you may see issues enabling compression.
+
+ To resolve this you can either disable compression or use the GNU core-utils version of `tar` and `gzip`.
+
+ :::
diff --git a/examples/longhorn/README.md b/examples/longhorn/README.md
deleted file mode 100644
index a9c24c76d2..0000000000
--- a/examples/longhorn/README.md
+++ /dev/null
@@ -1,27 +0,0 @@
-import ExampleYAML from '@site/src/components/ExampleYAML';
-
-# Longhorn
-
-This example shows you how to deploy [Longhorn](https://longhorn.io/) using Zarf.
-
-Before deploying Longhorn make sure your nodes are configured with the [Longhorn Installation Requirements](https://longhorn.io/docs/1.4.0/deploy/install/#installation-requirements).
-
-You will need [open-iscsi](https://longhorn.io/docs/1.4.0/deploy/install/#installing-open-iscsi) installed.
-
-If you wish to support RWX access modes you'll need to install an [NFSv4 client](https://longhorn.io/docs/1.4.0/deploy/install/#installing-nfsv4-client) on each node.
-
-If you're working with K3s, there is extra setup required. See [Longhorn CSI on K3s](https://longhorn.io/docs/1.4.0/advanced-resources/os-distro-specific/csi-on-k3s/).
-
-The values file from this example was pulled using the directions at [Customizing Default Settings](https://longhorn.io/docs/1.4.0/advanced-resources/deploy/customizing-default-settings/#using-helm) as the path for kubelet needs to be set for K3s as per [Longhorn CSI on K3s](https://longhorn.io/docs/1.4.0/advanced-resources/os-distro-specific/csi-on-k3s/)
-
-You do not need to use the values file and can remove it from the Zarf package configuration if you're not using K3s and don't need that variable set.
-
-## `zarf.yaml` {#zarf.yaml}
-
-:::info
-
-To view the example in its entirety, select the `Edit this page` link below the article and select the parent folder.
-
-:::
-
-
diff --git a/examples/longhorn/values.yaml b/examples/longhorn/values.yaml
index 3f4b5a46f5..2398307d6a 100644
--- a/examples/longhorn/values.yaml
+++ b/examples/longhorn/values.yaml
@@ -98,7 +98,7 @@ persistence:
removeSnapshotsDuringFilesystemTrim: ignored # "enabled" or "disabled" otherwise
csi:
- kubeletRootDir: "/var/lib/kubelet"
+ kubeletRootDir: "/var/lib/kubelet"
attacherReplicaCount: ~
provisionerReplicaCount: ~
resizerReplicaCount: ~
diff --git a/examples/longhorn/zarf.yaml b/examples/longhorn/zarf.yaml
index b447e8debe..5aa299d573 100644
--- a/examples/longhorn/zarf.yaml
+++ b/examples/longhorn/zarf.yaml
@@ -21,8 +21,10 @@ components:
after:
- cmd: |
export PATH=$PATH:./
- awk '{gsub(/kubectl /, "./zarf tools kubectl ")} 1' ./environment_check.sh > tmp && mv tmp ./environment_check.sh
- awk '{gsub(/"kubectl" /, "")} 1' ./environment_check.sh > tmp && mv tmp ./environment_check.sh
+ awk '{gsub(/kubectl /, "./zarf tools kubectl ")} 1' ./environment_check.sh > tmp
+ mv tmp ./environment_check.sh
+ awk '{gsub(/"kubectl" /, "")} 1' ./environment_check.sh > tmp
+ mv tmp ./environment_check.sh
chmod +x ./environment_check.sh
./environment_check.sh
- name: longhorn
@@ -32,7 +34,7 @@ components:
# Set the delete confirmation flag for Longhorn
onRemove:
before:
- - cmd: "./zarf tools kubectl -n longhorn-system patch -p '{\"value\": \"true\"}' --type=merge lhs deleting-confirmation-flag"
+ - cmd: './zarf tools kubectl -n longhorn-system patch -p ''{"value": "true"}'' --type=merge lhs deleting-confirmation-flag'
manifests:
- name: longhorn-connect
namespace: longhorn-system
@@ -40,11 +42,11 @@ components:
- connect.yaml
charts:
- name: longhorn
- url: https://charts.longhorn.io
+ url: https://charts.longhorn.io
version: 1.4.0
namespace: longhorn-system
valuesFiles:
- - values.yaml
+ - values.yaml
images:
- longhornio/csi-attacher:v3.4.0
- longhornio/csi-provisioner:v2.1.2
@@ -59,3 +61,20 @@ components:
- longhornio/longhorn-share-manager:v1.4.0
- longhornio/longhorn-ui:v1.4.0
- longhornio/support-bundle-kit:v0.0.17
+
+# YAML keys starting with `x-` are custom keys that are ignored by the Zarf CLI
+# The `x-mdx` key is used to render the markdown content for https://docs.zarf.dev/ref/examples
+x-mdx: |
+ This example shows you how to deploy [Longhorn](https://longhorn.io/) using Zarf.
+
+ Before deploying Longhorn make sure your nodes are configured with the [Longhorn Installation Requirements](https://longhorn.io/docs/latest/deploy/install/#installation-requirements).
+
+ You will need [open-iscsi](https://longhorn.io/docs/latest/deploy/install/#installing-open-iscsi) installed.
+
+ If you wish to support RWX access modes you'll need to install an [NFSv4 client](https://longhorn.io/docs/latest/deploy/install/#installing-nfsv4-client) on each node.
+
+ If you're working with K3s, there is extra setup required. See [Longhorn CSI on K3s](https://longhorn.io/docs/latest/advanced-resources/os-distro-specific/csi-on-k3s/).
+
+ The values file from this example was pulled using the directions at [Customizing Default Settings](https://longhorn.io/docs/latest/advanced-resources/deploy/customizing-default-settings/#using-helm) as the path for kubelet needs to be set for K3s as per [Longhorn CSI on K3s](https://longhorn.io/docs/latest/advanced-resources/os-distro-specific/csi-on-k3s/)
+
+ You do not need to use the values file and can remove it from the Zarf package configuration if you're not using K3s and don't need that variable set.
diff --git a/examples/manifests/README.md b/examples/manifests/README.md
deleted file mode 100644
index ff27268470..0000000000
--- a/examples/manifests/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-import ExampleYAML from "@site/src/components/ExampleYAML";
-
-# Manifests
-
-This example shows you how to specify Kubernetes resources in a component's `manifests` list. These files can either be local or remote and under the hood Zarf will wrap them in an auto-generated helm chart to manage their install, rollback, and uninstall logic.
-
-## `zarf.yaml` {#zarf.yaml}
-
-:::info
-
-To view the example in its entirety, select the `Edit this page` link below the article and select the parent folder.
-
-:::
-
-
diff --git a/examples/manifests/zarf.yaml b/examples/manifests/zarf.yaml
index cb363312c0..092f6ca684 100644
--- a/examples/manifests/zarf.yaml
+++ b/examples/manifests/zarf.yaml
@@ -14,15 +14,15 @@ components:
- httpd-deployment.yaml
actions:
onDeploy:
- # the following checks were computed by viewing the success state of the package deployment
- # and creating `wait` actions that match
+ # the following checks were computed by viewing the success state of the package deployment
+ # and creating `wait` actions that match
after:
- wait:
cluster:
kind: deployment
name: httpd-deployment
namespace: httpd
- condition: '{.status.readyReplicas}=2'
+ condition: "{.status.readyReplicas}=2"
# image discovery is supported in all manifests and charts using:
# zarf prepare find-images
images:
@@ -40,8 +40,8 @@ components:
# zarf prepare sha256sum https://k8s.io/examples/application/deployment.yaml
actions:
onDeploy:
- # the following checks were computed by viewing the success state of the package deployment
- # and creating `wait` actions that match
+ # the following checks were computed by viewing the success state of the package deployment
+ # and creating `wait` actions that match
after:
- wait:
cluster:
@@ -66,8 +66,8 @@ components:
# ensure that the kustomization is not changed in a way that breaks your deployment.
actions:
onDeploy:
- # the following checks were computed by viewing the success state of the package deployment
- # and creating `wait` actions that match
+ # the following checks were computed by viewing the success state of the package deployment
+ # and creating `wait` actions that match
after:
- wait:
cluster:
@@ -79,3 +79,10 @@ components:
# zarf prepare find-images
images:
- ghcr.io/stefanprodan/podinfo:6.4.0
+
+# YAML keys starting with `x-` are custom keys that are ignored by the Zarf CLI
+# The `x-mdx` key is used to render the markdown content for https://docs.zarf.dev/ref/examples
+x-mdx: |
+ This example shows you how to specify Kubernetes resources in a component's `manifests` list. These files can either be local or remote and under the hood Zarf will wrap them in an auto-generated helm chart to manage their install, rollback, and uninstall logic.
+
+ To learn more about how `manifests` work in Zarf, see the [Kubernetes Manifests section](/ref/components/#kubernetes-manifests) of the package components documentation.
diff --git a/examples/package-flavors/pod.yaml b/examples/package-flavors/pod.yaml
new file mode 100644
index 0000000000..e7211dcd6d
--- /dev/null
+++ b/examples/package-flavors/pod.yaml
@@ -0,0 +1,18 @@
+apiVersion: v1
+kind: Pod
+metadata:
+ name: enterprise-linux
+ labels:
+ app: enterprise-linux
+spec:
+ containers:
+ - name: enterprise-linux-container
+ image: "###ZARF_VAR_IMAGE###"
+ command: [ "sh", "-c", "while true; do ls; sleep 1; done"]
+ resources:
+ requests:
+ memory: "32Mi"
+ cpu: "50m"
+ limits:
+ memory: "128Mi"
+ cpu: "250m"
diff --git a/examples/package-flavors/zarf.yaml b/examples/package-flavors/zarf.yaml
new file mode 100644
index 0000000000..cbb735e66d
--- /dev/null
+++ b/examples/package-flavors/zarf.yaml
@@ -0,0 +1,78 @@
+kind: ZarfPackageConfig
+metadata:
+ name: package-flavors
+ description: Simple example to show how to use the `only.flavor` key to build package variants.
+ version: 1.0.0
+
+components:
+ - name: image
+ required: true
+ description: "Sets the Enterprise Linux flavor to Rocky Linux"
+ only:
+ flavor: rocky-road
+ images:
+ - rockylinux:9-minimal
+ actions:
+ onDeploy:
+ before:
+ - cmd: echo "rockylinux:9-minimal"
+ setVariables:
+ - name: IMAGE
+
+ - name: image
+ required: true
+ description: "Sets the Enterprise Linux flavor to Oracle Linux"
+ only:
+ flavor: oracle-cookie-crunch
+ images:
+ - oraclelinux:9-slim
+ actions:
+ onDeploy:
+ before:
+ - cmd: echo "oraclelinux:9-slim"
+ setVariables:
+ - name: IMAGE
+
+ - name: image
+ required: true
+ description: "Sets the Enterprise Linux flavor to Alma Linux"
+ only:
+ flavor: vanilla-alma-nd
+ images:
+ - almalinux:9-minimal
+ actions:
+ onDeploy:
+ before:
+ - cmd: echo "almalinux:9-minimal"
+ setVariables:
+ - name: IMAGE
+
+ - name: image
+ required: true
+ description: "Sets the Enterprise Linux flavor to OpenSUSE"
+ only:
+ flavor: strawberry-suse
+ images:
+ - opensuse/leap:15
+ actions:
+ onDeploy:
+ before:
+ - cmd: echo "opensuse/leap:15"
+ setVariables:
+ - name: IMAGE
+
+ - name: pod
+ description: "The pod that runs the specified flavor of Enterprise Linux"
+ required: true
+ manifests:
+ - name: enterprise-linux
+ namespace: enterprise-linux
+ files:
+ - pod.yaml
+
+# YAML keys starting with `x-` are custom keys that are ignored by the Zarf CLI
+# The `x-mdx` key is used to render the markdown content for https://docs.zarf.dev/ref/examples
+x-mdx: |
+ This example demonstrates how to define variants of packages within the same package definition. This can be combined with [Composable Packages](/ref/examples/composable-packages/) to build up packages and include the necessary [merge overrides](/ref/components/#merge-strategies) for each variant.
+
+ Given package flavors are built by specifying the `--flavor` flag on `zarf package create`. This will include any components that match that flavor or that do not specify a flavor. If a component specifies a flavor and the package is built without that flavor, the component will be excluded from the package.
diff --git a/examples/podinfo-flux/README.md b/examples/podinfo-flux/README.md
deleted file mode 100644
index d9a00d33c9..0000000000
--- a/examples/podinfo-flux/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-import ExampleYAML from "@site/src/components/ExampleYAML";
-
-# Flux (with Podinfo)
-
-This example demonstrates how to use flux with Zarf to deploy the `stefanprodan/podinfo` app using GitOps.
-
-It uses a vanilla configuration of flux with upstream containers.
-
-If you want to learn more about how Zarf handles `git` repositories, see the [git-data](../git-data/) example.
-
-## `zarf.yaml` {#zarf.yaml}
-
-:::info
-
-To view the example in its entirety, select the `Edit this page` link below the article and select the parent folder.
-
-:::
-
-
diff --git a/examples/podinfo-flux/flux-install.yaml b/examples/podinfo-flux/flux-install.yaml
deleted file mode 100644
index 50128a3b4e..0000000000
--- a/examples/podinfo-flux/flux-install.yaml
+++ /dev/null
@@ -1,4195 +0,0 @@
----
-# This manifest was generated by flux. DO NOT EDIT.
-# Flux Version: v0.33.0
-# Components: source-controller,kustomize-controller
-apiVersion: v1
-kind: Namespace
-metadata:
- labels:
- app.kubernetes.io/instance: flux-system
- app.kubernetes.io/part-of: flux
- app.kubernetes.io/version: v0.33.0
- pod-security.kubernetes.io/warn: restricted
- pod-security.kubernetes.io/warn-version: latest
- name: flux-system
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
- annotations:
- controller-gen.kubebuilder.io/version: v0.7.0
- creationTimestamp: null
- labels:
- app.kubernetes.io/instance: flux-system
- app.kubernetes.io/part-of: flux
- app.kubernetes.io/version: v0.33.0
- name: buckets.source.toolkit.fluxcd.io
-spec:
- group: source.toolkit.fluxcd.io
- names:
- kind: Bucket
- listKind: BucketList
- plural: buckets
- singular: bucket
- scope: Namespaced
- versions:
- - additionalPrinterColumns:
- - jsonPath: .spec.endpoint
- name: Endpoint
- type: string
- - jsonPath: .status.conditions[?(@.type=="Ready")].status
- name: Ready
- type: string
- - jsonPath: .status.conditions[?(@.type=="Ready")].message
- name: Status
- type: string
- - jsonPath: .metadata.creationTimestamp
- name: Age
- type: date
- name: v1beta1
- schema:
- openAPIV3Schema:
- description: Bucket is the Schema for the buckets API
- properties:
- apiVersion:
- description: 'APIVersion defines the versioned schema of this representation
- of an object. Servers should convert recognized schemas to the latest
- internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
- type: string
- kind:
- description: 'Kind is a string value representing the REST resource this
- object represents. Servers may infer this from the endpoint the client
- submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
- type: string
- metadata:
- type: object
- spec:
- description: BucketSpec defines the desired state of an S3 compatible
- bucket
- properties:
- accessFrom:
- description: AccessFrom defines an Access Control List for allowing
- cross-namespace references to this object.
- properties:
- namespaceSelectors:
- description: NamespaceSelectors is the list of namespace selectors
- to which this ACL applies. Items in this list are evaluated
- using a logical OR operation.
- items:
- description: NamespaceSelector selects the namespaces to which
- this ACL applies. An empty map of MatchLabels matches all
- namespaces in a cluster.
- properties:
- matchLabels:
- additionalProperties:
- type: string
- description: MatchLabels is a map of {key,value} pairs.
- A single {key,value} in the matchLabels map is equivalent
- to an element of matchExpressions, whose key field is
- "key", the operator is "In", and the values array contains
- only "value". The requirements are ANDed.
- type: object
- type: object
- type: array
- required:
- - namespaceSelectors
- type: object
- bucketName:
- description: The bucket name.
- type: string
- endpoint:
- description: The bucket endpoint address.
- type: string
- ignore:
- description: Ignore overrides the set of excluded patterns in the
- .sourceignore format (which is the same as .gitignore). If not provided,
- a default will be used, consult the documentation for your version
- to find out what those are.
- type: string
- insecure:
- description: Insecure allows connecting to a non-TLS S3 HTTP endpoint.
- type: boolean
- interval:
- description: The interval at which to check for bucket updates.
- type: string
- provider:
- default: generic
- description: The S3 compatible storage provider name, default ('generic').
- enum:
- - generic
- - aws
- - gcp
- type: string
- region:
- description: The bucket region.
- type: string
- secretRef:
- description: The name of the secret containing authentication credentials
- for the Bucket.
- properties:
- name:
- description: Name of the referent.
- type: string
- required:
- - name
- type: object
- suspend:
- description: This flag tells the controller to suspend the reconciliation
- of this source.
- type: boolean
- timeout:
- default: 60s
- description: The timeout for download operations, defaults to 60s.
- type: string
- required:
- - bucketName
- - endpoint
- - interval
- type: object
- status:
- default:
- observedGeneration: -1
- description: BucketStatus defines the observed state of a bucket
- properties:
- artifact:
- description: Artifact represents the output of the last successful
- Bucket sync.
- properties:
- checksum:
- description: Checksum is the SHA256 checksum of the artifact.
- type: string
- lastUpdateTime:
- description: LastUpdateTime is the timestamp corresponding to
- the last update of this artifact.
- format: date-time
- type: string
- path:
- description: Path is the relative file path of this artifact.
- type: string
- revision:
- description: Revision is a human readable identifier traceable
- in the origin source system. It can be a Git commit SHA, Git
- tag, a Helm index timestamp, a Helm chart version, etc.
- type: string
- url:
- description: URL is the HTTP address of this artifact.
- type: string
- required:
- - path
- - url
- type: object
- conditions:
- description: Conditions holds the conditions for the Bucket.
- items:
- description: "Condition contains details for one aspect of the current
- state of this API Resource. --- This struct is intended for direct
- use as an array at the field path .status.conditions. For example,
- \n \ttype FooStatus struct{ \t // Represents the observations
- of a foo's current state. \t // Known .status.conditions.type
- are: \"Available\", \"Progressing\", and \"Degraded\" \t //
- +patchMergeKey=type \t // +patchStrategy=merge \t // +listType=map
- \t // +listMapKey=type \t Conditions []metav1.Condition
- `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
- protobuf:\"bytes,1,rep,name=conditions\"` \n \t // other fields
- \t}"
- properties:
- lastTransitionTime:
- description: lastTransitionTime is the last time the condition
- transitioned from one status to another. This should be when
- the underlying condition changed. If that is not known, then
- using the time when the API field changed is acceptable.
- format: date-time
- type: string
- message:
- description: message is a human readable message indicating
- details about the transition. This may be an empty string.
- maxLength: 32768
- type: string
- observedGeneration:
- description: observedGeneration represents the .metadata.generation
- that the condition was set based upon. For instance, if .metadata.generation
- is currently 12, but the .status.conditions[x].observedGeneration
- is 9, the condition is out of date with respect to the current
- state of the instance.
- format: int64
- minimum: 0
- type: integer
- reason:
- description: reason contains a programmatic identifier indicating
- the reason for the condition's last transition. Producers
- of specific condition types may define expected values and
- meanings for this field, and whether the values are considered
- a guaranteed API. The value should be a CamelCase string.
- This field may not be empty.
- maxLength: 1024
- minLength: 1
- pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
- type: string
- status:
- description: status of the condition, one of True, False, Unknown.
- enum:
- - "True"
- - "False"
- - Unknown
- type: string
- type:
- description: type of condition in CamelCase or in foo.example.com/CamelCase.
- --- Many .condition.type values are consistent across resources
- like Available, but because arbitrary conditions can be useful
- (see .node.status.conditions), the ability to deconflict is
- important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
- maxLength: 316
- pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
- type: string
- required:
- - lastTransitionTime
- - message
- - reason
- - status
- - type
- type: object
- type: array
- lastHandledReconcileAt:
- description: LastHandledReconcileAt holds the value of the most recent
- reconcile request value, so a change of the annotation value can
- be detected.
- type: string
- observedGeneration:
- description: ObservedGeneration is the last observed generation.
- format: int64
- type: integer
- url:
- description: URL is the download link for the artifact output of the
- last Bucket sync.
- type: string
- type: object
- type: object
- served: true
- storage: false
- subresources:
- status: {}
- - additionalPrinterColumns:
- - jsonPath: .spec.endpoint
- name: Endpoint
- type: string
- - jsonPath: .metadata.creationTimestamp
- name: Age
- type: date
- - jsonPath: .status.conditions[?(@.type=="Ready")].status
- name: Ready
- type: string
- - jsonPath: .status.conditions[?(@.type=="Ready")].message
- name: Status
- type: string
- name: v1beta2
- schema:
- openAPIV3Schema:
- description: Bucket is the Schema for the buckets API.
- properties:
- apiVersion:
- description: 'APIVersion defines the versioned schema of this representation
- of an object. Servers should convert recognized schemas to the latest
- internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
- type: string
- kind:
- description: 'Kind is a string value representing the REST resource this
- object represents. Servers may infer this from the endpoint the client
- submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
- type: string
- metadata:
- type: object
- spec:
- description: BucketSpec specifies the required configuration to produce
- an Artifact for an object storage bucket.
- properties:
- accessFrom:
- description: 'AccessFrom specifies an Access Control List for allowing
- cross-namespace references to this object. NOTE: Not implemented,
- provisional as of https://github.com/fluxcd/flux2/pull/2092'
- properties:
- namespaceSelectors:
- description: NamespaceSelectors is the list of namespace selectors
- to which this ACL applies. Items in this list are evaluated
- using a logical OR operation.
- items:
- description: NamespaceSelector selects the namespaces to which
- this ACL applies. An empty map of MatchLabels matches all
- namespaces in a cluster.
- properties:
- matchLabels:
- additionalProperties:
- type: string
- description: MatchLabels is a map of {key,value} pairs.
- A single {key,value} in the matchLabels map is equivalent
- to an element of matchExpressions, whose key field is
- "key", the operator is "In", and the values array contains
- only "value". The requirements are ANDed.
- type: object
- type: object
- type: array
- required:
- - namespaceSelectors
- type: object
- bucketName:
- description: BucketName is the name of the object storage bucket.
- type: string
- endpoint:
- description: Endpoint is the object storage address the BucketName
- is located at.
- type: string
- ignore:
- description: Ignore overrides the set of excluded patterns in the
- .sourceignore format (which is the same as .gitignore). If not provided,
- a default will be used, consult the documentation for your version
- to find out what those are.
- type: string
- insecure:
- description: Insecure allows connecting to a non-TLS HTTP Endpoint.
- type: boolean
- interval:
- description: Interval at which to check the Endpoint for updates.
- type: string
- provider:
- default: generic
- description: Provider of the object storage bucket. Defaults to 'generic',
- which expects an S3 (API) compatible object storage.
- enum:
- - generic
- - aws
- - gcp
- - azure
- type: string
- region:
- description: Region of the Endpoint where the BucketName is located
- in.
- type: string
- secretRef:
- description: SecretRef specifies the Secret containing authentication
- credentials for the Bucket.
- properties:
- name:
- description: Name of the referent.
- type: string
- required:
- - name
- type: object
- suspend:
- description: Suspend tells the controller to suspend the reconciliation
- of this Bucket.
- type: boolean
- timeout:
- default: 60s
- description: Timeout for fetch operations, defaults to 60s.
- type: string
- required:
- - bucketName
- - endpoint
- - interval
- type: object
- status:
- default:
- observedGeneration: -1
- description: BucketStatus records the observed state of a Bucket.
- properties:
- artifact:
- description: Artifact represents the last successful Bucket reconciliation.
- properties:
- checksum:
- description: Checksum is the SHA256 checksum of the Artifact file.
- type: string
- lastUpdateTime:
- description: LastUpdateTime is the timestamp corresponding to
- the last update of the Artifact.
- format: date-time
- type: string
- metadata:
- additionalProperties:
- type: string
- description: Metadata holds upstream information such as OCI annotations.
- type: object
- path:
- description: Path is the relative file path of the Artifact. It
- can be used to locate the file in the root of the Artifact storage
- on the local file system of the controller managing the Source.
- type: string
- revision:
- description: Revision is a human-readable identifier traceable
- in the origin source system. It can be a Git commit SHA, Git
- tag, a Helm chart version, etc.
- type: string
- size:
- description: Size is the number of bytes in the file.
- format: int64
- type: integer
- url:
- description: URL is the HTTP address of the Artifact as exposed
- by the controller managing the Source. It can be used to retrieve
- the Artifact for consumption, e.g. by another controller applying
- the Artifact contents.
- type: string
- required:
- - path
- - url
- type: object
- conditions:
- description: Conditions holds the conditions for the Bucket.
- items:
- description: "Condition contains details for one aspect of the current
- state of this API Resource. --- This struct is intended for direct
- use as an array at the field path .status.conditions. For example,
- \n \ttype FooStatus struct{ \t // Represents the observations
- of a foo's current state. \t // Known .status.conditions.type
- are: \"Available\", \"Progressing\", and \"Degraded\" \t //
- +patchMergeKey=type \t // +patchStrategy=merge \t // +listType=map
- \t // +listMapKey=type \t Conditions []metav1.Condition
- `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
- protobuf:\"bytes,1,rep,name=conditions\"` \n \t // other fields
- \t}"
- properties:
- lastTransitionTime:
- description: lastTransitionTime is the last time the condition
- transitioned from one status to another. This should be when
- the underlying condition changed. If that is not known, then
- using the time when the API field changed is acceptable.
- format: date-time
- type: string
- message:
- description: message is a human readable message indicating
- details about the transition. This may be an empty string.
- maxLength: 32768
- type: string
- observedGeneration:
- description: observedGeneration represents the .metadata.generation
- that the condition was set based upon. For instance, if .metadata.generation
- is currently 12, but the .status.conditions[x].observedGeneration
- is 9, the condition is out of date with respect to the current
- state of the instance.
- format: int64
- minimum: 0
- type: integer
- reason:
- description: reason contains a programmatic identifier indicating
- the reason for the condition's last transition. Producers
- of specific condition types may define expected values and
- meanings for this field, and whether the values are considered
- a guaranteed API. The value should be a CamelCase string.
- This field may not be empty.
- maxLength: 1024
- minLength: 1
- pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
- type: string
- status:
- description: status of the condition, one of True, False, Unknown.
- enum:
- - "True"
- - "False"
- - Unknown
- type: string
- type:
- description: type of condition in CamelCase or in foo.example.com/CamelCase.
- --- Many .condition.type values are consistent across resources
- like Available, but because arbitrary conditions can be useful
- (see .node.status.conditions), the ability to deconflict is
- important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
- maxLength: 316
- pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
- type: string
- required:
- - lastTransitionTime
- - message
- - reason
- - status
- - type
- type: object
- type: array
- lastHandledReconcileAt:
- description: LastHandledReconcileAt holds the value of the most recent
- reconcile request value, so a change of the annotation value can
- be detected.
- type: string
- observedGeneration:
- description: ObservedGeneration is the last observed generation of
- the Bucket object.
- format: int64
- type: integer
- url:
- description: URL is the dynamic fetch link for the latest Artifact.
- It is provided on a "best effort" basis, and using the precise BucketStatus.Artifact
- data is recommended.
- type: string
- type: object
- type: object
- served: true
- storage: true
- subresources:
- status: {}
-status:
- acceptedNames:
- kind: ""
- plural: ""
- conditions: []
- storedVersions: []
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
- annotations:
- controller-gen.kubebuilder.io/version: v0.7.0
- creationTimestamp: null
- labels:
- app.kubernetes.io/instance: flux-system
- app.kubernetes.io/part-of: flux
- app.kubernetes.io/version: v0.33.0
- name: gitrepositories.source.toolkit.fluxcd.io
-spec:
- group: source.toolkit.fluxcd.io
- names:
- kind: GitRepository
- listKind: GitRepositoryList
- plural: gitrepositories
- shortNames:
- - gitrepo
- singular: gitrepository
- scope: Namespaced
- versions:
- - additionalPrinterColumns:
- - jsonPath: .spec.url
- name: URL
- type: string
- - jsonPath: .status.conditions[?(@.type=="Ready")].status
- name: Ready
- type: string
- - jsonPath: .status.conditions[?(@.type=="Ready")].message
- name: Status
- type: string
- - jsonPath: .metadata.creationTimestamp
- name: Age
- type: date
- name: v1beta1
- schema:
- openAPIV3Schema:
- description: GitRepository is the Schema for the gitrepositories API
- properties:
- apiVersion:
- description: 'APIVersion defines the versioned schema of this representation
- of an object. Servers should convert recognized schemas to the latest
- internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
- type: string
- kind:
- description: 'Kind is a string value representing the REST resource this
- object represents. Servers may infer this from the endpoint the client
- submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
- type: string
- metadata:
- type: object
- spec:
- description: GitRepositorySpec defines the desired state of a Git repository.
- properties:
- accessFrom:
- description: AccessFrom defines an Access Control List for allowing
- cross-namespace references to this object.
- properties:
- namespaceSelectors:
- description: NamespaceSelectors is the list of namespace selectors
- to which this ACL applies. Items in this list are evaluated
- using a logical OR operation.
- items:
- description: NamespaceSelector selects the namespaces to which
- this ACL applies. An empty map of MatchLabels matches all
- namespaces in a cluster.
- properties:
- matchLabels:
- additionalProperties:
- type: string
- description: MatchLabels is a map of {key,value} pairs.
- A single {key,value} in the matchLabels map is equivalent
- to an element of matchExpressions, whose key field is
- "key", the operator is "In", and the values array contains
- only "value". The requirements are ANDed.
- type: object
- type: object
- type: array
- required:
- - namespaceSelectors
- type: object
- gitImplementation:
- default: go-git
- description: Determines which git client library to use. Defaults
- to go-git, valid values are ('go-git', 'libgit2').
- enum:
- - go-git
- - libgit2
- type: string
- ignore:
- description: Ignore overrides the set of excluded patterns in the
- .sourceignore format (which is the same as .gitignore). If not provided,
- a default will be used, consult the documentation for your version
- to find out what those are.
- type: string
- include:
- description: Extra git repositories to map into the repository
- items:
- description: GitRepositoryInclude defines a source with a from and
- to path.
- properties:
- fromPath:
- description: The path to copy contents from, defaults to the
- root directory.
- type: string
- repository:
- description: Reference to a GitRepository to include.
- properties:
- name:
- description: Name of the referent.
- type: string
- required:
- - name
- type: object
- toPath:
- description: The path to copy contents to, defaults to the name
- of the source ref.
- type: string
- required:
- - repository
- type: object
- type: array
- interval:
- description: The interval at which to check for repository updates.
- type: string
- recurseSubmodules:
- description: When enabled, after the clone is created, initializes
- all submodules within, using their default settings. This option
- is available only when using the 'go-git' GitImplementation.
- type: boolean
- ref:
- description: The Git reference to checkout and monitor for changes,
- defaults to master branch.
- properties:
- branch:
- description: The Git branch to checkout, defaults to master.
- type: string
- commit:
- description: The Git commit SHA to checkout, if specified Tag
- filters will be ignored.
- type: string
- semver:
- description: The Git tag semver expression, takes precedence over
- Tag.
- type: string
- tag:
- description: The Git tag to checkout, takes precedence over Branch.
- type: string
- type: object
- secretRef:
- description: The secret name containing the Git credentials. For HTTPS
- repositories the secret must contain username and password fields.
- For SSH repositories the secret must contain identity and known_hosts
- fields.
- properties:
- name:
- description: Name of the referent.
- type: string
- required:
- - name
- type: object
- suspend:
- description: This flag tells the controller to suspend the reconciliation
- of this source.
- type: boolean
- timeout:
- default: 60s
- description: The timeout for remote Git operations like cloning, defaults
- to 60s.
- type: string
- url:
- description: The repository URL, can be a HTTP/S or SSH address.
- pattern: ^(http|https|ssh)://.*$
- type: string
- verify:
- description: Verify OpenPGP signature for the Git commit HEAD points
- to.
- properties:
- mode:
- description: Mode describes what git object should be verified,
- currently ('head').
- enum:
- - head
- type: string
- secretRef:
- description: The secret name containing the public keys of all
- trusted Git authors.
- properties:
- name:
- description: Name of the referent.
- type: string
- required:
- - name
- type: object
- required:
- - mode
- type: object
- required:
- - interval
- - url
- type: object
- status:
- default:
- observedGeneration: -1
- description: GitRepositoryStatus defines the observed state of a Git repository.
- properties:
- artifact:
- description: Artifact represents the output of the last successful
- repository sync.
- properties:
- checksum:
- description: Checksum is the SHA256 checksum of the artifact.
- type: string
- lastUpdateTime:
- description: LastUpdateTime is the timestamp corresponding to
- the last update of this artifact.
- format: date-time
- type: string
- path:
- description: Path is the relative file path of this artifact.
- type: string
- revision:
- description: Revision is a human readable identifier traceable
- in the origin source system. It can be a Git commit SHA, Git
- tag, a Helm index timestamp, a Helm chart version, etc.
- type: string
- url:
- description: URL is the HTTP address of this artifact.
- type: string
- required:
- - path
- - url
- type: object
- conditions:
- description: Conditions holds the conditions for the GitRepository.
- items:
- description: "Condition contains details for one aspect of the current
- state of this API Resource. --- This struct is intended for direct
- use as an array at the field path .status.conditions. For example,
- \n \ttype FooStatus struct{ \t // Represents the observations
- of a foo's current state. \t // Known .status.conditions.type
- are: \"Available\", \"Progressing\", and \"Degraded\" \t //
- +patchMergeKey=type \t // +patchStrategy=merge \t // +listType=map
- \t // +listMapKey=type \t Conditions []metav1.Condition
- `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
- protobuf:\"bytes,1,rep,name=conditions\"` \n \t // other fields
- \t}"
- properties:
- lastTransitionTime:
- description: lastTransitionTime is the last time the condition
- transitioned from one status to another. This should be when
- the underlying condition changed. If that is not known, then
- using the time when the API field changed is acceptable.
- format: date-time
- type: string
- message:
- description: message is a human readable message indicating
- details about the transition. This may be an empty string.
- maxLength: 32768
- type: string
- observedGeneration:
- description: observedGeneration represents the .metadata.generation
- that the condition was set based upon. For instance, if .metadata.generation
- is currently 12, but the .status.conditions[x].observedGeneration
- is 9, the condition is out of date with respect to the current
- state of the instance.
- format: int64
- minimum: 0
- type: integer
- reason:
- description: reason contains a programmatic identifier indicating
- the reason for the condition's last transition. Producers
- of specific condition types may define expected values and
- meanings for this field, and whether the values are considered
- a guaranteed API. The value should be a CamelCase string.
- This field may not be empty.
- maxLength: 1024
- minLength: 1
- pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
- type: string
- status:
- description: status of the condition, one of True, False, Unknown.
- enum:
- - "True"
- - "False"
- - Unknown
- type: string
- type:
- description: type of condition in CamelCase or in foo.example.com/CamelCase.
- --- Many .condition.type values are consistent across resources
- like Available, but because arbitrary conditions can be useful
- (see .node.status.conditions), the ability to deconflict is
- important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
- maxLength: 316
- pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
- type: string
- required:
- - lastTransitionTime
- - message
- - reason
- - status
- - type
- type: object
- type: array
- includedArtifacts:
- description: IncludedArtifacts represents the included artifacts from
- the last successful repository sync.
- items:
- description: Artifact represents the output of a source synchronisation.
- properties:
- checksum:
- description: Checksum is the SHA256 checksum of the artifact.
- type: string
- lastUpdateTime:
- description: LastUpdateTime is the timestamp corresponding to
- the last update of this artifact.
- format: date-time
- type: string
- path:
- description: Path is the relative file path of this artifact.
- type: string
- revision:
- description: Revision is a human readable identifier traceable
- in the origin source system. It can be a Git commit SHA, Git
- tag, a Helm index timestamp, a Helm chart version, etc.
- type: string
- url:
- description: URL is the HTTP address of this artifact.
- type: string
- required:
- - path
- - url
- type: object
- type: array
- lastHandledReconcileAt:
- description: LastHandledReconcileAt holds the value of the most recent
- reconcile request value, so a change of the annotation value can
- be detected.
- type: string
- observedGeneration:
- description: ObservedGeneration is the last observed generation.
- format: int64
- type: integer
- url:
- description: URL is the download link for the artifact output of the
- last repository sync.
- type: string
- type: object
- type: object
- served: true
- storage: false
- subresources:
- status: {}
- - additionalPrinterColumns:
- - jsonPath: .spec.url
- name: URL
- type: string
- - jsonPath: .metadata.creationTimestamp
- name: Age
- type: date
- - jsonPath: .status.conditions[?(@.type=="Ready")].status
- name: Ready
- type: string
- - jsonPath: .status.conditions[?(@.type=="Ready")].message
- name: Status
- type: string
- name: v1beta2
- schema:
- openAPIV3Schema:
- description: GitRepository is the Schema for the gitrepositories API.
- properties:
- apiVersion:
- description: 'APIVersion defines the versioned schema of this representation
- of an object. Servers should convert recognized schemas to the latest
- internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
- type: string
- kind:
- description: 'Kind is a string value representing the REST resource this
- object represents. Servers may infer this from the endpoint the client
- submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
- type: string
- metadata:
- type: object
- spec:
- description: GitRepositorySpec specifies the required configuration to
- produce an Artifact for a Git repository.
- properties:
- accessFrom:
- description: 'AccessFrom specifies an Access Control List for allowing
- cross-namespace references to this object. NOTE: Not implemented,
- provisional as of https://github.com/fluxcd/flux2/pull/2092'
- properties:
- namespaceSelectors:
- description: NamespaceSelectors is the list of namespace selectors
- to which this ACL applies. Items in this list are evaluated
- using a logical OR operation.
- items:
- description: NamespaceSelector selects the namespaces to which
- this ACL applies. An empty map of MatchLabels matches all
- namespaces in a cluster.
- properties:
- matchLabels:
- additionalProperties:
- type: string
- description: MatchLabels is a map of {key,value} pairs.
- A single {key,value} in the matchLabels map is equivalent
- to an element of matchExpressions, whose key field is
- "key", the operator is "In", and the values array contains
- only "value". The requirements are ANDed.
- type: object
- type: object
- type: array
- required:
- - namespaceSelectors
- type: object
- gitImplementation:
- default: go-git
- description: GitImplementation specifies which Git client library
- implementation to use. Defaults to 'go-git', valid values are ('go-git',
- 'libgit2').
- enum:
- - go-git
- - libgit2
- type: string
- ignore:
- description: Ignore overrides the set of excluded patterns in the
- .sourceignore format (which is the same as .gitignore). If not provided,
- a default will be used, consult the documentation for your version
- to find out what those are.
- type: string
- include:
- description: Include specifies a list of GitRepository resources which
- Artifacts should be included in the Artifact produced for this GitRepository.
- items:
- description: GitRepositoryInclude specifies a local reference to
- a GitRepository which Artifact (sub-)contents must be included,
- and where they should be placed.
- properties:
- fromPath:
- description: FromPath specifies the path to copy contents from,
- defaults to the root of the Artifact.
- type: string
- repository:
- description: GitRepositoryRef specifies the GitRepository which
- Artifact contents must be included.
- properties:
- name:
- description: Name of the referent.
- type: string
- required:
- - name
- type: object
- toPath:
- description: ToPath specifies the path to copy contents to,
- defaults to the name of the GitRepositoryRef.
- type: string
- required:
- - repository
- type: object
- type: array
- interval:
- description: Interval at which to check the GitRepository for updates.
- type: string
- recurseSubmodules:
- description: RecurseSubmodules enables the initialization of all submodules
- within the GitRepository as cloned from the URL, using their default
- settings. This option is available only when using the 'go-git'
- GitImplementation.
- type: boolean
- ref:
- description: Reference specifies the Git reference to resolve and
- monitor for changes, defaults to the 'master' branch.
- properties:
- branch:
- description: "Branch to check out, defaults to 'master' if no
- other field is defined. \n When GitRepositorySpec.GitImplementation
- is set to 'go-git', a shallow clone of the specified branch
- is performed."
- type: string
- commit:
- description: "Commit SHA to check out, takes precedence over all
- reference fields. \n When GitRepositorySpec.GitImplementation
- is set to 'go-git', this can be combined with Branch to shallow
- clone the branch, in which the commit is expected to exist."
- type: string
- semver:
- description: SemVer tag expression to check out, takes precedence
- over Tag.
- type: string
- tag:
- description: Tag to check out, takes precedence over Branch.
- type: string
- type: object
- secretRef:
- description: SecretRef specifies the Secret containing authentication
- credentials for the GitRepository. For HTTPS repositories the Secret
- must contain 'username' and 'password' fields. For SSH repositories
- the Secret must contain 'identity' and 'known_hosts' fields.
- properties:
- name:
- description: Name of the referent.
- type: string
- required:
- - name
- type: object
- suspend:
- description: Suspend tells the controller to suspend the reconciliation
- of this GitRepository.
- type: boolean
- timeout:
- default: 60s
- description: Timeout for Git operations like cloning, defaults to
- 60s.
- type: string
- url:
- description: URL specifies the Git repository URL, it can be an HTTP/S
- or SSH address.
- pattern: ^(http|https|ssh)://.*$
- type: string
- verify:
- description: Verification specifies the configuration to verify the
- Git commit signature(s).
- properties:
- mode:
- description: Mode specifies what Git object should be verified,
- currently ('head').
- enum:
- - head
- type: string
- secretRef:
- description: SecretRef specifies the Secret containing the public
- keys of trusted Git authors.
- properties:
- name:
- description: Name of the referent.
- type: string
- required:
- - name
- type: object
- required:
- - mode
- type: object
- required:
- - interval
- - url
- type: object
- status:
- default:
- observedGeneration: -1
- description: GitRepositoryStatus records the observed state of a Git repository.
- properties:
- artifact:
- description: Artifact represents the last successful GitRepository
- reconciliation.
- properties:
- checksum:
- description: Checksum is the SHA256 checksum of the Artifact file.
- type: string
- lastUpdateTime:
- description: LastUpdateTime is the timestamp corresponding to
- the last update of the Artifact.
- format: date-time
- type: string
- metadata:
- additionalProperties:
- type: string
- description: Metadata holds upstream information such as OCI annotations.
- type: object
- path:
- description: Path is the relative file path of the Artifact. It
- can be used to locate the file in the root of the Artifact storage
- on the local file system of the controller managing the Source.
- type: string
- revision:
- description: Revision is a human-readable identifier traceable
- in the origin source system. It can be a Git commit SHA, Git
- tag, a Helm chart version, etc.
- type: string
- size:
- description: Size is the number of bytes in the file.
- format: int64
- type: integer
- url:
- description: URL is the HTTP address of the Artifact as exposed
- by the controller managing the Source. It can be used to retrieve
- the Artifact for consumption, e.g. by another controller applying
- the Artifact contents.
- type: string
- required:
- - path
- - url
- type: object
- conditions:
- description: Conditions holds the conditions for the GitRepository.
- items:
- description: "Condition contains details for one aspect of the current
- state of this API Resource. --- This struct is intended for direct
- use as an array at the field path .status.conditions. For example,
- \n \ttype FooStatus struct{ \t // Represents the observations
- of a foo's current state. \t // Known .status.conditions.type
- are: \"Available\", \"Progressing\", and \"Degraded\" \t //
- +patchMergeKey=type \t // +patchStrategy=merge \t // +listType=map
- \t // +listMapKey=type \t Conditions []metav1.Condition
- `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
- protobuf:\"bytes,1,rep,name=conditions\"` \n \t // other fields
- \t}"
- properties:
- lastTransitionTime:
- description: lastTransitionTime is the last time the condition
- transitioned from one status to another. This should be when
- the underlying condition changed. If that is not known, then
- using the time when the API field changed is acceptable.
- format: date-time
- type: string
- message:
- description: message is a human readable message indicating
- details about the transition. This may be an empty string.
- maxLength: 32768
- type: string
- observedGeneration:
- description: observedGeneration represents the .metadata.generation
- that the condition was set based upon. For instance, if .metadata.generation
- is currently 12, but the .status.conditions[x].observedGeneration
- is 9, the condition is out of date with respect to the current
- state of the instance.
- format: int64
- minimum: 0
- type: integer
- reason:
- description: reason contains a programmatic identifier indicating
- the reason for the condition's last transition. Producers
- of specific condition types may define expected values and
- meanings for this field, and whether the values are considered
- a guaranteed API. The value should be a CamelCase string.
- This field may not be empty.
- maxLength: 1024
- minLength: 1
- pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
- type: string
- status:
- description: status of the condition, one of True, False, Unknown.
- enum:
- - "True"
- - "False"
- - Unknown
- type: string
- type:
- description: type of condition in CamelCase or in foo.example.com/CamelCase.
- --- Many .condition.type values are consistent across resources
- like Available, but because arbitrary conditions can be useful
- (see .node.status.conditions), the ability to deconflict is
- important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
- maxLength: 316
- pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
- type: string
- required:
- - lastTransitionTime
- - message
- - reason
- - status
- - type
- type: object
- type: array
- contentConfigChecksum:
- description: 'ContentConfigChecksum is a checksum of all the configurations
- related to the content of the source artifact: - .spec.ignore -
- .spec.recurseSubmodules - .spec.included and the checksum of the
- included artifacts observed in .status.observedGeneration version
- of the object. This can be used to determine if the content of the
- included repository has changed. It has the format of `:`,
- for example: `sha256:`.'
- type: string
- includedArtifacts:
- description: IncludedArtifacts contains a list of the last successfully
- included Artifacts as instructed by GitRepositorySpec.Include.
- items:
- description: Artifact represents the output of a Source reconciliation.
- properties:
- checksum:
- description: Checksum is the SHA256 checksum of the Artifact
- file.
- type: string
- lastUpdateTime:
- description: LastUpdateTime is the timestamp corresponding to
- the last update of the Artifact.
- format: date-time
- type: string
- metadata:
- additionalProperties:
- type: string
- description: Metadata holds upstream information such as OCI
- annotations.
- type: object
- path:
- description: Path is the relative file path of the Artifact.
- It can be used to locate the file in the root of the Artifact
- storage on the local file system of the controller managing
- the Source.
- type: string
- revision:
- description: Revision is a human-readable identifier traceable
- in the origin source system. It can be a Git commit SHA, Git
- tag, a Helm chart version, etc.
- type: string
- size:
- description: Size is the number of bytes in the file.
- format: int64
- type: integer
- url:
- description: URL is the HTTP address of the Artifact as exposed
- by the controller managing the Source. It can be used to retrieve
- the Artifact for consumption, e.g. by another controller applying
- the Artifact contents.
- type: string
- required:
- - path
- - url
- type: object
- type: array
- lastHandledReconcileAt:
- description: LastHandledReconcileAt holds the value of the most recent
- reconcile request value, so a change of the annotation value can
- be detected.
- type: string
- observedGeneration:
- description: ObservedGeneration is the last observed generation of
- the GitRepository object.
- format: int64
- type: integer
- url:
- description: URL is the dynamic fetch link for the latest Artifact.
- It is provided on a "best effort" basis, and using the precise GitRepositoryStatus.Artifact
- data is recommended.
- type: string
- type: object
- type: object
- served: true
- storage: true
- subresources:
- status: {}
-status:
- acceptedNames:
- kind: ""
- plural: ""
- conditions: []
- storedVersions: []
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
- annotations:
- controller-gen.kubebuilder.io/version: v0.7.0
- creationTimestamp: null
- labels:
- app.kubernetes.io/instance: flux-system
- app.kubernetes.io/part-of: flux
- app.kubernetes.io/version: v0.33.0
- name: helmcharts.source.toolkit.fluxcd.io
-spec:
- group: source.toolkit.fluxcd.io
- names:
- kind: HelmChart
- listKind: HelmChartList
- plural: helmcharts
- shortNames:
- - hc
- singular: helmchart
- scope: Namespaced
- versions:
- - additionalPrinterColumns:
- - jsonPath: .spec.chart
- name: Chart
- type: string
- - jsonPath: .spec.version
- name: Version
- type: string
- - jsonPath: .spec.sourceRef.kind
- name: Source Kind
- type: string
- - jsonPath: .spec.sourceRef.name
- name: Source Name
- type: string
- - jsonPath: .status.conditions[?(@.type=="Ready")].status
- name: Ready
- type: string
- - jsonPath: .status.conditions[?(@.type=="Ready")].message
- name: Status
- type: string
- - jsonPath: .metadata.creationTimestamp
- name: Age
- type: date
- name: v1beta1
- schema:
- openAPIV3Schema:
- description: HelmChart is the Schema for the helmcharts API
- properties:
- apiVersion:
- description: 'APIVersion defines the versioned schema of this representation
- of an object. Servers should convert recognized schemas to the latest
- internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
- type: string
- kind:
- description: 'Kind is a string value representing the REST resource this
- object represents. Servers may infer this from the endpoint the client
- submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
- type: string
- metadata:
- type: object
- spec:
- description: HelmChartSpec defines the desired state of a Helm chart.
- properties:
- accessFrom:
- description: AccessFrom defines an Access Control List for allowing
- cross-namespace references to this object.
- properties:
- namespaceSelectors:
- description: NamespaceSelectors is the list of namespace selectors
- to which this ACL applies. Items in this list are evaluated
- using a logical OR operation.
- items:
- description: NamespaceSelector selects the namespaces to which
- this ACL applies. An empty map of MatchLabels matches all
- namespaces in a cluster.
- properties:
- matchLabels:
- additionalProperties:
- type: string
- description: MatchLabels is a map of {key,value} pairs.
- A single {key,value} in the matchLabels map is equivalent
- to an element of matchExpressions, whose key field is
- "key", the operator is "In", and the values array contains
- only "value". The requirements are ANDed.
- type: object
- type: object
- type: array
- required:
- - namespaceSelectors
- type: object
- chart:
- description: The name or path the Helm chart is available at in the
- SourceRef.
- type: string
- interval:
- description: The interval at which to check the Source for updates.
- type: string
- reconcileStrategy:
- default: ChartVersion
- description: Determines what enables the creation of a new artifact.
- Valid values are ('ChartVersion', 'Revision'). See the documentation
- of the values for an explanation on their behavior. Defaults to
- ChartVersion when omitted.
- enum:
- - ChartVersion
- - Revision
- type: string
- sourceRef:
- description: The reference to the Source the chart is available at.
- properties:
- apiVersion:
- description: APIVersion of the referent.
- type: string
- kind:
- description: Kind of the referent, valid values are ('HelmRepository',
- 'GitRepository', 'Bucket').
- enum:
- - HelmRepository
- - GitRepository
- - Bucket
- type: string
- name:
- description: Name of the referent.
- type: string
- required:
- - kind
- - name
- type: object
- suspend:
- description: This flag tells the controller to suspend the reconciliation
- of this source.
- type: boolean
- valuesFile:
- description: Alternative values file to use as the default chart values,
- expected to be a relative path in the SourceRef. Deprecated in favor
- of ValuesFiles, for backwards compatibility the file defined here
- is merged before the ValuesFiles items. Ignored when omitted.
- type: string
- valuesFiles:
- description: Alternative list of values files to use as the chart
- values (values.yaml is not included by default), expected to be
- a relative path in the SourceRef. Values files are merged in the
- order of this list with the last file overriding the first. Ignored
- when omitted.
- items:
- type: string
- type: array
- version:
- default: '*'
- description: The chart version semver expression, ignored for charts
- from GitRepository and Bucket sources. Defaults to latest when omitted.
- type: string
- required:
- - chart
- - interval
- - sourceRef
- type: object
- status:
- default:
- observedGeneration: -1
- description: HelmChartStatus defines the observed state of the HelmChart.
- properties:
- artifact:
- description: Artifact represents the output of the last successful
- chart sync.
- properties:
- checksum:
- description: Checksum is the SHA256 checksum of the artifact.
- type: string
- lastUpdateTime:
- description: LastUpdateTime is the timestamp corresponding to
- the last update of this artifact.
- format: date-time
- type: string
- path:
- description: Path is the relative file path of this artifact.
- type: string
- revision:
- description: Revision is a human readable identifier traceable
- in the origin source system. It can be a Git commit SHA, Git
- tag, a Helm index timestamp, a Helm chart version, etc.
- type: string
- url:
- description: URL is the HTTP address of this artifact.
- type: string
- required:
- - path
- - url
- type: object
- conditions:
- description: Conditions holds the conditions for the HelmChart.
- items:
- description: "Condition contains details for one aspect of the current
- state of this API Resource. --- This struct is intended for direct
- use as an array at the field path .status.conditions. For example,
- \n \ttype FooStatus struct{ \t // Represents the observations
- of a foo's current state. \t // Known .status.conditions.type
- are: \"Available\", \"Progressing\", and \"Degraded\" \t //
- +patchMergeKey=type \t // +patchStrategy=merge \t // +listType=map
- \t // +listMapKey=type \t Conditions []metav1.Condition
- `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
- protobuf:\"bytes,1,rep,name=conditions\"` \n \t // other fields
- \t}"
- properties:
- lastTransitionTime:
- description: lastTransitionTime is the last time the condition
- transitioned from one status to another. This should be when
- the underlying condition changed. If that is not known, then
- using the time when the API field changed is acceptable.
- format: date-time
- type: string
- message:
- description: message is a human readable message indicating
- details about the transition. This may be an empty string.
- maxLength: 32768
- type: string
- observedGeneration:
- description: observedGeneration represents the .metadata.generation
- that the condition was set based upon. For instance, if .metadata.generation
- is currently 12, but the .status.conditions[x].observedGeneration
- is 9, the condition is out of date with respect to the current
- state of the instance.
- format: int64
- minimum: 0
- type: integer
- reason:
- description: reason contains a programmatic identifier indicating
- the reason for the condition's last transition. Producers
- of specific condition types may define expected values and
- meanings for this field, and whether the values are considered
- a guaranteed API. The value should be a CamelCase string.
- This field may not be empty.
- maxLength: 1024
- minLength: 1
- pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
- type: string
- status:
- description: status of the condition, one of True, False, Unknown.
- enum:
- - "True"
- - "False"
- - Unknown
- type: string
- type:
- description: type of condition in CamelCase or in foo.example.com/CamelCase.
- --- Many .condition.type values are consistent across resources
- like Available, but because arbitrary conditions can be useful
- (see .node.status.conditions), the ability to deconflict is
- important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
- maxLength: 316
- pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
- type: string
- required:
- - lastTransitionTime
- - message
- - reason
- - status
- - type
- type: object
- type: array
- lastHandledReconcileAt:
- description: LastHandledReconcileAt holds the value of the most recent
- reconcile request value, so a change of the annotation value can
- be detected.
- type: string
- observedGeneration:
- description: ObservedGeneration is the last observed generation.
- format: int64
- type: integer
- url:
- description: URL is the download link for the last chart pulled.
- type: string
- type: object
- type: object
- served: true
- storage: false
- subresources:
- status: {}
- - additionalPrinterColumns:
- - jsonPath: .spec.chart
- name: Chart
- type: string
- - jsonPath: .spec.version
- name: Version
- type: string
- - jsonPath: .spec.sourceRef.kind
- name: Source Kind
- type: string
- - jsonPath: .spec.sourceRef.name
- name: Source Name
- type: string
- - jsonPath: .metadata.creationTimestamp
- name: Age
- type: date
- - jsonPath: .status.conditions[?(@.type=="Ready")].status
- name: Ready
- type: string
- - jsonPath: .status.conditions[?(@.type=="Ready")].message
- name: Status
- type: string
- name: v1beta2
- schema:
- openAPIV3Schema:
- description: HelmChart is the Schema for the helmcharts API.
- properties:
- apiVersion:
- description: 'APIVersion defines the versioned schema of this representation
- of an object. Servers should convert recognized schemas to the latest
- internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
- type: string
- kind:
- description: 'Kind is a string value representing the REST resource this
- object represents. Servers may infer this from the endpoint the client
- submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
- type: string
- metadata:
- type: object
- spec:
- description: HelmChartSpec specifies the desired state of a Helm chart.
- properties:
- accessFrom:
- description: 'AccessFrom specifies an Access Control List for allowing
- cross-namespace references to this object. NOTE: Not implemented,
- provisional as of https://github.com/fluxcd/flux2/pull/2092'
- properties:
- namespaceSelectors:
- description: NamespaceSelectors is the list of namespace selectors
- to which this ACL applies. Items in this list are evaluated
- using a logical OR operation.
- items:
- description: NamespaceSelector selects the namespaces to which
- this ACL applies. An empty map of MatchLabels matches all
- namespaces in a cluster.
- properties:
- matchLabels:
- additionalProperties:
- type: string
- description: MatchLabels is a map of {key,value} pairs.
- A single {key,value} in the matchLabels map is equivalent
- to an element of matchExpressions, whose key field is
- "key", the operator is "In", and the values array contains
- only "value". The requirements are ANDed.
- type: object
- type: object
- type: array
- required:
- - namespaceSelectors
- type: object
- chart:
- description: Chart is the name or path the Helm chart is available
- at in the SourceRef.
- type: string
- interval:
- description: Interval is the interval at which to check the Source
- for updates.
- type: string
- reconcileStrategy:
- default: ChartVersion
- description: ReconcileStrategy determines what enables the creation
- of a new artifact. Valid values are ('ChartVersion', 'Revision').
- See the documentation of the values for an explanation on their
- behavior. Defaults to ChartVersion when omitted.
- enum:
- - ChartVersion
- - Revision
- type: string
- sourceRef:
- description: SourceRef is the reference to the Source the chart is
- available at.
- properties:
- apiVersion:
- description: APIVersion of the referent.
- type: string
- kind:
- description: Kind of the referent, valid values are ('HelmRepository',
- 'GitRepository', 'Bucket').
- enum:
- - HelmRepository
- - GitRepository
- - Bucket
- type: string
- name:
- description: Name of the referent.
- type: string
- required:
- - kind
- - name
- type: object
- suspend:
- description: Suspend tells the controller to suspend the reconciliation
- of this source.
- type: boolean
- valuesFile:
- description: ValuesFile is an alternative values file to use as the
- default chart values, expected to be a relative path in the SourceRef.
- Deprecated in favor of ValuesFiles, for backwards compatibility
- the file specified here is merged before the ValuesFiles items.
- Ignored when omitted.
- type: string
- valuesFiles:
- description: ValuesFiles is an alternative list of values files to
- use as the chart values (values.yaml is not included by default),
- expected to be a relative path in the SourceRef. Values files are
- merged in the order of this list with the last file overriding the
- first. Ignored when omitted.
- items:
- type: string
- type: array
- version:
- default: '*'
- description: Version is the chart version semver expression, ignored
- for charts from GitRepository and Bucket sources. Defaults to latest
- when omitted.
- type: string
- required:
- - chart
- - interval
- - sourceRef
- type: object
- status:
- default:
- observedGeneration: -1
- description: HelmChartStatus records the observed state of the HelmChart.
- properties:
- artifact:
- description: Artifact represents the output of the last successful
- reconciliation.
- properties:
- checksum:
- description: Checksum is the SHA256 checksum of the Artifact file.
- type: string
- lastUpdateTime:
- description: LastUpdateTime is the timestamp corresponding to
- the last update of the Artifact.
- format: date-time
- type: string
- metadata:
- additionalProperties:
- type: string
- description: Metadata holds upstream information such as OCI annotations.
- type: object
- path:
- description: Path is the relative file path of the Artifact. It
- can be used to locate the file in the root of the Artifact storage
- on the local file system of the controller managing the Source.
- type: string
- revision:
- description: Revision is a human-readable identifier traceable
- in the origin source system. It can be a Git commit SHA, Git
- tag, a Helm chart version, etc.
- type: string
- size:
- description: Size is the number of bytes in the file.
- format: int64
- type: integer
- url:
- description: URL is the HTTP address of the Artifact as exposed
- by the controller managing the Source. It can be used to retrieve
- the Artifact for consumption, e.g. by another controller applying
- the Artifact contents.
- type: string
- required:
- - path
- - url
- type: object
- conditions:
- description: Conditions holds the conditions for the HelmChart.
- items:
- description: "Condition contains details for one aspect of the current
- state of this API Resource. --- This struct is intended for direct
- use as an array at the field path .status.conditions. For example,
- \n \ttype FooStatus struct{ \t // Represents the observations
- of a foo's current state. \t // Known .status.conditions.type
- are: \"Available\", \"Progressing\", and \"Degraded\" \t //
- +patchMergeKey=type \t // +patchStrategy=merge \t // +listType=map
- \t // +listMapKey=type \t Conditions []metav1.Condition
- `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
- protobuf:\"bytes,1,rep,name=conditions\"` \n \t // other fields
- \t}"
- properties:
- lastTransitionTime:
- description: lastTransitionTime is the last time the condition
- transitioned from one status to another. This should be when
- the underlying condition changed. If that is not known, then
- using the time when the API field changed is acceptable.
- format: date-time
- type: string
- message:
- description: message is a human readable message indicating
- details about the transition. This may be an empty string.
- maxLength: 32768
- type: string
- observedGeneration:
- description: observedGeneration represents the .metadata.generation
- that the condition was set based upon. For instance, if .metadata.generation
- is currently 12, but the .status.conditions[x].observedGeneration
- is 9, the condition is out of date with respect to the current
- state of the instance.
- format: int64
- minimum: 0
- type: integer
- reason:
- description: reason contains a programmatic identifier indicating
- the reason for the condition's last transition. Producers
- of specific condition types may define expected values and
- meanings for this field, and whether the values are considered
- a guaranteed API. The value should be a CamelCase string.
- This field may not be empty.
- maxLength: 1024
- minLength: 1
- pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
- type: string
- status:
- description: status of the condition, one of True, False, Unknown.
- enum:
- - "True"
- - "False"
- - Unknown
- type: string
- type:
- description: type of condition in CamelCase or in foo.example.com/CamelCase.
- --- Many .condition.type values are consistent across resources
- like Available, but because arbitrary conditions can be useful
- (see .node.status.conditions), the ability to deconflict is
- important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
- maxLength: 316
- pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
- type: string
- required:
- - lastTransitionTime
- - message
- - reason
- - status
- - type
- type: object
- type: array
- lastHandledReconcileAt:
- description: LastHandledReconcileAt holds the value of the most recent
- reconcile request value, so a change of the annotation value can
- be detected.
- type: string
- observedChartName:
- description: ObservedChartName is the last observed chart name as
- specified by the resolved chart reference.
- type: string
- observedGeneration:
- description: ObservedGeneration is the last observed generation of
- the HelmChart object.
- format: int64
- type: integer
- observedSourceArtifactRevision:
- description: ObservedSourceArtifactRevision is the last observed Artifact.Revision
- of the HelmChartSpec.SourceRef.
- type: string
- url:
- description: URL is the dynamic fetch link for the latest Artifact.
- It is provided on a "best effort" basis, and using the precise BucketStatus.Artifact
- data is recommended.
- type: string
- type: object
- type: object
- served: true
- storage: true
- subresources:
- status: {}
-status:
- acceptedNames:
- kind: ""
- plural: ""
- conditions: []
- storedVersions: []
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
- annotations:
- controller-gen.kubebuilder.io/version: v0.7.0
- creationTimestamp: null
- labels:
- app.kubernetes.io/instance: flux-system
- app.kubernetes.io/part-of: flux
- app.kubernetes.io/version: v0.33.0
- name: helmrepositories.source.toolkit.fluxcd.io
-spec:
- group: source.toolkit.fluxcd.io
- names:
- kind: HelmRepository
- listKind: HelmRepositoryList
- plural: helmrepositories
- shortNames:
- - helmrepo
- singular: helmrepository
- scope: Namespaced
- versions:
- - additionalPrinterColumns:
- - jsonPath: .spec.url
- name: URL
- type: string
- - jsonPath: .status.conditions[?(@.type=="Ready")].status
- name: Ready
- type: string
- - jsonPath: .status.conditions[?(@.type=="Ready")].message
- name: Status
- type: string
- - jsonPath: .metadata.creationTimestamp
- name: Age
- type: date
- name: v1beta1
- schema:
- openAPIV3Schema:
- description: HelmRepository is the Schema for the helmrepositories API
- properties:
- apiVersion:
- description: 'APIVersion defines the versioned schema of this representation
- of an object. Servers should convert recognized schemas to the latest
- internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
- type: string
- kind:
- description: 'Kind is a string value representing the REST resource this
- object represents. Servers may infer this from the endpoint the client
- submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
- type: string
- metadata:
- type: object
- spec:
- description: HelmRepositorySpec defines the reference to a Helm repository.
- properties:
- accessFrom:
- description: AccessFrom defines an Access Control List for allowing
- cross-namespace references to this object.
- properties:
- namespaceSelectors:
- description: NamespaceSelectors is the list of namespace selectors
- to which this ACL applies. Items in this list are evaluated
- using a logical OR operation.
- items:
- description: NamespaceSelector selects the namespaces to which
- this ACL applies. An empty map of MatchLabels matches all
- namespaces in a cluster.
- properties:
- matchLabels:
- additionalProperties:
- type: string
- description: MatchLabels is a map of {key,value} pairs.
- A single {key,value} in the matchLabels map is equivalent
- to an element of matchExpressions, whose key field is
- "key", the operator is "In", and the values array contains
- only "value". The requirements are ANDed.
- type: object
- type: object
- type: array
- required:
- - namespaceSelectors
- type: object
- interval:
- description: The interval at which to check the upstream for updates.
- type: string
- passCredentials:
- description: PassCredentials allows the credentials from the SecretRef
- to be passed on to a host that does not match the host as defined
- in URL. This may be required if the host of the advertised chart
- URLs in the index differ from the defined URL. Enabling this should
- be done with caution, as it can potentially result in credentials
- getting stolen in a MITM-attack.
- type: boolean
- secretRef:
- description: The name of the secret containing authentication credentials
- for the Helm repository. For HTTP/S basic auth the secret must contain
- username and password fields. For TLS the secret must contain a
- certFile and keyFile, and/or caCert fields.
- properties:
- name:
- description: Name of the referent.
- type: string
- required:
- - name
- type: object
- suspend:
- description: This flag tells the controller to suspend the reconciliation
- of this source.
- type: boolean
- timeout:
- default: 60s
- description: The timeout of index downloading, defaults to 60s.
- type: string
- url:
- description: The Helm repository URL, a valid URL contains at least
- a protocol and host.
- type: string
- required:
- - interval
- - url
- type: object
- status:
- default:
- observedGeneration: -1
- description: HelmRepositoryStatus defines the observed state of the HelmRepository.
- properties:
- artifact:
- description: Artifact represents the output of the last successful
- repository sync.
- properties:
- checksum:
- description: Checksum is the SHA256 checksum of the artifact.
- type: string
- lastUpdateTime:
- description: LastUpdateTime is the timestamp corresponding to
- the last update of this artifact.
- format: date-time
- type: string
- path:
- description: Path is the relative file path of this artifact.
- type: string
- revision:
- description: Revision is a human readable identifier traceable
- in the origin source system. It can be a Git commit SHA, Git
- tag, a Helm index timestamp, a Helm chart version, etc.
- type: string
- url:
- description: URL is the HTTP address of this artifact.
- type: string
- required:
- - path
- - url
- type: object
- conditions:
- description: Conditions holds the conditions for the HelmRepository.
- items:
- description: "Condition contains details for one aspect of the current
- state of this API Resource. --- This struct is intended for direct
- use as an array at the field path .status.conditions. For example,
- \n \ttype FooStatus struct{ \t // Represents the observations
- of a foo's current state. \t // Known .status.conditions.type
- are: \"Available\", \"Progressing\", and \"Degraded\" \t //
- +patchMergeKey=type \t // +patchStrategy=merge \t // +listType=map
- \t // +listMapKey=type \t Conditions []metav1.Condition
- `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
- protobuf:\"bytes,1,rep,name=conditions\"` \n \t // other fields
- \t}"
- properties:
- lastTransitionTime:
- description: lastTransitionTime is the last time the condition
- transitioned from one status to another. This should be when
- the underlying condition changed. If that is not known, then
- using the time when the API field changed is acceptable.
- format: date-time
- type: string
- message:
- description: message is a human readable message indicating
- details about the transition. This may be an empty string.
- maxLength: 32768
- type: string
- observedGeneration:
- description: observedGeneration represents the .metadata.generation
- that the condition was set based upon. For instance, if .metadata.generation
- is currently 12, but the .status.conditions[x].observedGeneration
- is 9, the condition is out of date with respect to the current
- state of the instance.
- format: int64
- minimum: 0
- type: integer
- reason:
- description: reason contains a programmatic identifier indicating
- the reason for the condition's last transition. Producers
- of specific condition types may define expected values and
- meanings for this field, and whether the values are considered
- a guaranteed API. The value should be a CamelCase string.
- This field may not be empty.
- maxLength: 1024
- minLength: 1
- pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
- type: string
- status:
- description: status of the condition, one of True, False, Unknown.
- enum:
- - "True"
- - "False"
- - Unknown
- type: string
- type:
- description: type of condition in CamelCase or in foo.example.com/CamelCase.
- --- Many .condition.type values are consistent across resources
- like Available, but because arbitrary conditions can be useful
- (see .node.status.conditions), the ability to deconflict is
- important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
- maxLength: 316
- pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
- type: string
- required:
- - lastTransitionTime
- - message
- - reason
- - status
- - type
- type: object
- type: array
- lastHandledReconcileAt:
- description: LastHandledReconcileAt holds the value of the most recent
- reconcile request value, so a change of the annotation value can
- be detected.
- type: string
- observedGeneration:
- description: ObservedGeneration is the last observed generation.
- format: int64
- type: integer
- url:
- description: URL is the download link for the last index fetched.
- type: string
- type: object
- type: object
- served: true
- storage: false
- subresources:
- status: {}
- - additionalPrinterColumns:
- - jsonPath: .spec.url
- name: URL
- type: string
- - jsonPath: .metadata.creationTimestamp
- name: Age
- type: date
- - jsonPath: .status.conditions[?(@.type=="Ready")].status
- name: Ready
- type: string
- - jsonPath: .status.conditions[?(@.type=="Ready")].message
- name: Status
- type: string
- name: v1beta2
- schema:
- openAPIV3Schema:
- description: HelmRepository is the Schema for the helmrepositories API.
- properties:
- apiVersion:
- description: 'APIVersion defines the versioned schema of this representation
- of an object. Servers should convert recognized schemas to the latest
- internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
- type: string
- kind:
- description: 'Kind is a string value representing the REST resource this
- object represents. Servers may infer this from the endpoint the client
- submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
- type: string
- metadata:
- type: object
- spec:
- description: HelmRepositorySpec specifies the required configuration to
- produce an Artifact for a Helm repository index YAML.
- properties:
- accessFrom:
- description: 'AccessFrom specifies an Access Control List for allowing
- cross-namespace references to this object. NOTE: Not implemented,
- provisional as of https://github.com/fluxcd/flux2/pull/2092'
- properties:
- namespaceSelectors:
- description: NamespaceSelectors is the list of namespace selectors
- to which this ACL applies. Items in this list are evaluated
- using a logical OR operation.
- items:
- description: NamespaceSelector selects the namespaces to which
- this ACL applies. An empty map of MatchLabels matches all
- namespaces in a cluster.
- properties:
- matchLabels:
- additionalProperties:
- type: string
- description: MatchLabels is a map of {key,value} pairs.
- A single {key,value} in the matchLabels map is equivalent
- to an element of matchExpressions, whose key field is
- "key", the operator is "In", and the values array contains
- only "value". The requirements are ANDed.
- type: object
- type: object
- type: array
- required:
- - namespaceSelectors
- type: object
- interval:
- description: Interval at which to check the URL for updates.
- type: string
- passCredentials:
- description: PassCredentials allows the credentials from the SecretRef
- to be passed on to a host that does not match the host as defined
- in URL. This may be required if the host of the advertised chart
- URLs in the index differ from the defined URL. Enabling this should
- be done with caution, as it can potentially result in credentials
- getting stolen in a MITM-attack.
- type: boolean
- provider:
- default: generic
- description: Provider used for authentication, can be 'aws', 'azure',
- 'gcp' or 'generic'. This field is optional, and only taken into
- account if the .spec.type field is set to 'oci'. When not specified,
- defaults to 'generic'.
- enum:
- - generic
- - aws
- - azure
- - gcp
- type: string
- secretRef:
- description: SecretRef specifies the Secret containing authentication
- credentials for the HelmRepository. For HTTP/S basic auth the secret
- must contain 'username' and 'password' fields. For TLS the secret
- must contain a 'certFile' and 'keyFile', and/or 'caCert' fields.
- properties:
- name:
- description: Name of the referent.
- type: string
- required:
- - name
- type: object
- suspend:
- description: Suspend tells the controller to suspend the reconciliation
- of this HelmRepository.
- type: boolean
- timeout:
- default: 60s
- description: Timeout is used for the index fetch operation for an
- HTTPS helm repository, and for remote OCI Repository operations
- like pulling for an OCI helm repository. Its default value is 60s.
- type: string
- type:
- description: Type of the HelmRepository. When this field is set to "oci",
- the URL field value must be prefixed with "oci://".
- enum:
- - default
- - oci
- type: string
- url:
- description: URL of the Helm repository, a valid URL contains at least
- a protocol and host.
- type: string
- required:
- - interval
- - url
- type: object
- status:
- default:
- observedGeneration: -1
- description: HelmRepositoryStatus records the observed state of the HelmRepository.
- properties:
- artifact:
- description: Artifact represents the last successful HelmRepository
- reconciliation.
- properties:
- checksum:
- description: Checksum is the SHA256 checksum of the Artifact file.
- type: string
- lastUpdateTime:
- description: LastUpdateTime is the timestamp corresponding to
- the last update of the Artifact.
- format: date-time
- type: string
- metadata:
- additionalProperties:
- type: string
- description: Metadata holds upstream information such as OCI annotations.
- type: object
- path:
- description: Path is the relative file path of the Artifact. It
- can be used to locate the file in the root of the Artifact storage
- on the local file system of the controller managing the Source.
- type: string
- revision:
- description: Revision is a human-readable identifier traceable
- in the origin source system. It can be a Git commit SHA, Git
- tag, a Helm chart version, etc.
- type: string
- size:
- description: Size is the number of bytes in the file.
- format: int64
- type: integer
- url:
- description: URL is the HTTP address of the Artifact as exposed
- by the controller managing the Source. It can be used to retrieve
- the Artifact for consumption, e.g. by another controller applying
- the Artifact contents.
- type: string
- required:
- - path
- - url
- type: object
- conditions:
- description: Conditions holds the conditions for the HelmRepository.
- items:
- description: "Condition contains details for one aspect of the current
- state of this API Resource. --- This struct is intended for direct
- use as an array at the field path .status.conditions. For example,
- \n \ttype FooStatus struct{ \t // Represents the observations
- of a foo's current state. \t // Known .status.conditions.type
- are: \"Available\", \"Progressing\", and \"Degraded\" \t //
- +patchMergeKey=type \t // +patchStrategy=merge \t // +listType=map
- \t // +listMapKey=type \t Conditions []metav1.Condition
- `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
- protobuf:\"bytes,1,rep,name=conditions\"` \n \t // other fields
- \t}"
- properties:
- lastTransitionTime:
- description: lastTransitionTime is the last time the condition
- transitioned from one status to another. This should be when
- the underlying condition changed. If that is not known, then
- using the time when the API field changed is acceptable.
- format: date-time
- type: string
- message:
- description: message is a human readable message indicating
- details about the transition. This may be an empty string.
- maxLength: 32768
- type: string
- observedGeneration:
- description: observedGeneration represents the .metadata.generation
- that the condition was set based upon. For instance, if .metadata.generation
- is currently 12, but the .status.conditions[x].observedGeneration
- is 9, the condition is out of date with respect to the current
- state of the instance.
- format: int64
- minimum: 0
- type: integer
- reason:
- description: reason contains a programmatic identifier indicating
- the reason for the condition's last transition. Producers
- of specific condition types may define expected values and
- meanings for this field, and whether the values are considered
- a guaranteed API. The value should be a CamelCase string.
- This field may not be empty.
- maxLength: 1024
- minLength: 1
- pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
- type: string
- status:
- description: status of the condition, one of True, False, Unknown.
- enum:
- - "True"
- - "False"
- - Unknown
- type: string
- type:
- description: type of condition in CamelCase or in foo.example.com/CamelCase.
- --- Many .condition.type values are consistent across resources
- like Available, but because arbitrary conditions can be useful
- (see .node.status.conditions), the ability to deconflict is
- important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
- maxLength: 316
- pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
- type: string
- required:
- - lastTransitionTime
- - message
- - reason
- - status
- - type
- type: object
- type: array
- lastHandledReconcileAt:
- description: LastHandledReconcileAt holds the value of the most recent
- reconcile request value, so a change of the annotation value can
- be detected.
- type: string
- observedGeneration:
- description: ObservedGeneration is the last observed generation of
- the HelmRepository object.
- format: int64
- type: integer
- url:
- description: URL is the dynamic fetch link for the latest Artifact.
- It is provided on a "best effort" basis, and using the precise HelmRepositoryStatus.Artifact
- data is recommended.
- type: string
- type: object
- type: object
- served: true
- storage: true
- subresources:
- status: {}
-status:
- acceptedNames:
- kind: ""
- plural: ""
- conditions: []
- storedVersions: []
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
- annotations:
- controller-gen.kubebuilder.io/version: v0.7.0
- creationTimestamp: null
- labels:
- app.kubernetes.io/instance: flux-system
- app.kubernetes.io/part-of: flux
- app.kubernetes.io/version: v0.33.0
- name: kustomizations.kustomize.toolkit.fluxcd.io
-spec:
- group: kustomize.toolkit.fluxcd.io
- names:
- kind: Kustomization
- listKind: KustomizationList
- plural: kustomizations
- shortNames:
- - ks
- singular: kustomization
- scope: Namespaced
- versions:
- - additionalPrinterColumns:
- - jsonPath: .status.conditions[?(@.type=="Ready")].status
- name: Ready
- type: string
- - jsonPath: .status.conditions[?(@.type=="Ready")].message
- name: Status
- type: string
- - jsonPath: .metadata.creationTimestamp
- name: Age
- type: date
- name: v1beta1
- schema:
- openAPIV3Schema:
- description: Kustomization is the Schema for the kustomizations API.
- properties:
- apiVersion:
- description: 'APIVersion defines the versioned schema of this representation
- of an object. Servers should convert recognized schemas to the latest
- internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
- type: string
- kind:
- description: 'Kind is a string value representing the REST resource this
- object represents. Servers may infer this from the endpoint the client
- submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
- type: string
- metadata:
- type: object
- spec:
- description: KustomizationSpec defines the desired state of a kustomization.
- properties:
- decryption:
- description: Decrypt Kubernetes secrets before applying them on the
- cluster.
- properties:
- provider:
- description: Provider is the name of the decryption engine.
- enum:
- - sops
- type: string
- secretRef:
- description: The secret name containing the private OpenPGP keys
- used for decryption.
- properties:
- name:
- description: Name of the referent.
- type: string
- required:
- - name
- type: object
- required:
- - provider
- type: object
- dependsOn:
- description: DependsOn may contain a meta.NamespacedObjectReference
- slice with references to Kustomization resources that must be ready
- before this Kustomization can be reconciled.
- items:
- description: NamespacedObjectReference contains enough information
- to locate the referenced Kubernetes resource object in any namespace.
- properties:
- name:
- description: Name of the referent.
- type: string
- namespace:
- description: Namespace of the referent, when not specified it
- acts as LocalObjectReference.
- type: string
- required:
- - name
- type: object
- type: array
- force:
- default: false
- description: Force instructs the controller to recreate resources
- when patching fails due to an immutable field change.
- type: boolean
- healthChecks:
- description: A list of resources to be included in the health assessment.
- items:
- description: NamespacedObjectKindReference contains enough information
- to locate the typed referenced Kubernetes resource object in any
- namespace.
- properties:
- apiVersion:
- description: API version of the referent, if not specified the
- Kubernetes preferred version will be used.
- type: string
- kind:
- description: Kind of the referent.
- type: string
- name:
- description: Name of the referent.
- type: string
- namespace:
- description: Namespace of the referent, when not specified it
- acts as LocalObjectReference.
- type: string
- required:
- - kind
- - name
- type: object
- type: array
- images:
- description: Images is a list of (image name, new name, new tag or
- digest) for changing image names, tags or digests. This can also
- be achieved with a patch, but this operator is simpler to specify.
- items:
- description: Image contains an image name, a new name, a new tag
- or digest, which will replace the original name and tag.
- properties:
- digest:
- description: Digest is the value used to replace the original
- image tag. If digest is present NewTag value is ignored.
- type: string
- name:
- description: Name is a tag-less image name.
- type: string
- newName:
- description: NewName is the value used to replace the original
- name.
- type: string
- newTag:
- description: NewTag is the value used to replace the original
- tag.
- type: string
- required:
- - name
- type: object
- type: array
- interval:
- description: The interval at which to reconcile the Kustomization.
- type: string
- kubeConfig:
- description: The KubeConfig for reconciling the Kustomization on a
- remote cluster. When specified, KubeConfig takes precedence over
- ServiceAccountName.
- properties:
- secretRef:
- description: SecretRef holds the name to a secret that contains
- a 'value' key with the kubeconfig file as the value. It must
- be in the same namespace as the Kustomization. It is recommended
- that the kubeconfig is self-contained, and the secret is regularly
- updated if credentials such as a cloud-access-token expire.
- Cloud specific `cmd-path` auth helpers will not function without
- adding binaries and credentials to the Pod that is responsible
- for reconciling the Kustomization.
- properties:
- name:
- description: Name of the referent.
- type: string
- required:
- - name
- type: object
- type: object
- patches:
- description: Strategic merge and JSON patches, defined as inline YAML
- objects, capable of targeting objects based on kind, label and annotation
- selectors.
- items:
- description: Patch contains an inline StrategicMerge or JSON6902
- patch, and the target the patch should be applied to.
- properties:
- patch:
- description: Patch contains an inline StrategicMerge patch or
- an inline JSON6902 patch with an array of operation objects.
- type: string
- target:
- description: Target points to the resources that the patch document
- should be applied to.
- properties:
- annotationSelector:
- description: AnnotationSelector is a string that follows
- the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
- It matches with the resource annotations.
- type: string
- group:
- description: Group is the API group to select resources
- from. Together with Version and Kind it is capable of
- unambiguously identifying and/or selecting resources.
- https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
- type: string
- kind:
- description: Kind of the API Group to select resources from.
- Together with Group and Version it is capable of unambiguously
- identifying and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
- type: string
- labelSelector:
- description: LabelSelector is a string that follows the
- label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
- It matches with the resource labels.
- type: string
- name:
- description: Name to match resources with.
- type: string
- namespace:
- description: Namespace to select resources from.
- type: string
- version:
- description: Version of the API Group to select resources
- from. Together with Group and Kind it is capable of unambiguously
- identifying and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
- type: string
- type: object
- type: object
- type: array
- patchesJson6902:
- description: JSON 6902 patches, defined as inline YAML objects.
- items:
- description: JSON6902Patch contains a JSON6902 patch and the target
- the patch should be applied to.
- properties:
- patch:
- description: Patch contains the JSON6902 patch document with
- an array of operation objects.
- items:
- description: JSON6902 is a JSON6902 operation object. https://datatracker.ietf.org/doc/html/rfc6902#section-4
- properties:
- from:
- description: From contains a JSON-pointer value that references
- a location within the target document where the operation
- is performed. The meaning of the value depends on the
- value of Op, and is NOT taken into account by all operations.
- type: string
- op:
- description: Op indicates the operation to perform. Its
- value MUST be one of "add", "remove", "replace", "move",
- "copy", or "test". https://datatracker.ietf.org/doc/html/rfc6902#section-4
- enum:
- - test
- - remove
- - add
- - replace
- - move
- - copy
- type: string
- path:
- description: Path contains the JSON-pointer value that
- references a location within the target document where
- the operation is performed. The meaning of the value
- depends on the value of Op.
- type: string
- value:
- description: Value contains a valid JSON structure. The
- meaning of the value depends on the value of Op, and
- is NOT taken into account by all operations.
- x-kubernetes-preserve-unknown-fields: true
- required:
- - op
- - path
- type: object
- type: array
- target:
- description: Target points to the resources that the patch document
- should be applied to.
- properties:
- annotationSelector:
- description: AnnotationSelector is a string that follows
- the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
- It matches with the resource annotations.
- type: string
- group:
- description: Group is the API group to select resources
- from. Together with Version and Kind it is capable of
- unambiguously identifying and/or selecting resources.
- https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
- type: string
- kind:
- description: Kind of the API Group to select resources from.
- Together with Group and Version it is capable of unambiguously
- identifying and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
- type: string
- labelSelector:
- description: LabelSelector is a string that follows the
- label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
- It matches with the resource labels.
- type: string
- name:
- description: Name to match resources with.
- type: string
- namespace:
- description: Namespace to select resources from.
- type: string
- version:
- description: Version of the API Group to select resources
- from. Together with Group and Kind it is capable of unambiguously
- identifying and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
- type: string
- type: object
- required:
- - patch
- - target
- type: object
- type: array
- patchesStrategicMerge:
- description: Strategic merge patches, defined as inline YAML objects.
- items:
- x-kubernetes-preserve-unknown-fields: true
- type: array
- path:
- description: Path to the directory containing the kustomization.yaml
- file, or the set of plain YAMLs a kustomization.yaml should be generated
- for. Defaults to 'None', which translates to the root path of the
- SourceRef.
- type: string
- postBuild:
- description: PostBuild describes which actions to perform on the YAML
- manifest generated by building the kustomize overlay.
- properties:
- substitute:
- additionalProperties:
- type: string
- description: Substitute holds a map of key/value pairs. The variables
- defined in your YAML manifests that match any of the keys defined
- in the map will be substituted with the set value. Includes
- support for bash string replacement functions e.g. ${var:=default},
- ${var:position} and ${var/substring/replacement}.
- type: object
- substituteFrom:
- description: SubstituteFrom holds references to ConfigMaps and
- Secrets containing the variables and their values to be substituted
- in the YAML manifests. The ConfigMap and the Secret data keys
- represent the var names and they must match the vars declared
- in the manifests for the substitution to happen.
- items:
- description: SubstituteReference contains a reference to a resource
- containing the variables name and value.
- properties:
- kind:
- description: Kind of the values referent, valid values are
- ('Secret', 'ConfigMap').
- enum:
- - Secret
- - ConfigMap
- type: string
- name:
- description: Name of the values referent. Should reside
- in the same namespace as the referring resource.
- maxLength: 253
- minLength: 1
- type: string
- required:
- - kind
- - name
- type: object
- type: array
- type: object
- prune:
- description: Prune enables garbage collection.
- type: boolean
- retryInterval:
- description: The interval at which to retry a previously failed reconciliation.
- When not specified, the controller uses the KustomizationSpec.Interval
- value to retry failures.
- type: string
- serviceAccountName:
- description: The name of the Kubernetes service account to impersonate
- when reconciling this Kustomization.
- type: string
- sourceRef:
- description: Reference of the source where the kustomization file
- is.
- properties:
- apiVersion:
- description: API version of the referent
- type: string
- kind:
- description: Kind of the referent
- enum:
- - GitRepository
- - Bucket
- type: string
- name:
- description: Name of the referent
- type: string
- namespace:
- description: Namespace of the referent, defaults to the Kustomization
- namespace
- type: string
- required:
- - kind
- - name
- type: object
- suspend:
- description: This flag tells the controller to suspend subsequent
- kustomize executions, it does not apply to already started executions.
- Defaults to false.
- type: boolean
- targetNamespace:
- description: TargetNamespace sets or overrides the namespace in the
- kustomization.yaml file.
- maxLength: 63
- minLength: 1
- type: string
- timeout:
- description: Timeout for validation, apply and health checking operations.
- Defaults to 'Interval' duration.
- type: string
- validation:
- description: Validate the Kubernetes objects before applying them
- on the cluster. The validation strategy can be 'client' (local dry-run),
- 'server' (APIServer dry-run) or 'none'. When 'Force' is 'true',
- validation will fallback to 'client' if set to 'server' because
- server-side validation is not supported in this scenario.
- enum:
- - none
- - client
- - server
- type: string
- required:
- - interval
- - prune
- - sourceRef
- type: object
- status:
- default:
- observedGeneration: -1
- description: KustomizationStatus defines the observed state of a kustomization.
- properties:
- conditions:
- items:
- description: "Condition contains details for one aspect of the current
- state of this API Resource. --- This struct is intended for direct
- use as an array at the field path .status.conditions. For example,
- \n \ttype FooStatus struct{ \t // Represents the observations
- of a foo's current state. \t // Known .status.conditions.type
- are: \"Available\", \"Progressing\", and \"Degraded\" \t //
- +patchMergeKey=type \t // +patchStrategy=merge \t // +listType=map
- \t // +listMapKey=type \t Conditions []metav1.Condition
- `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
- protobuf:\"bytes,1,rep,name=conditions\"` \n \t // other fields
- \t}"
- properties:
- lastTransitionTime:
- description: lastTransitionTime is the last time the condition
- transitioned from one status to another. This should be when
- the underlying condition changed. If that is not known, then
- using the time when the API field changed is acceptable.
- format: date-time
- type: string
- message:
- description: message is a human readable message indicating
- details about the transition. This may be an empty string.
- maxLength: 32768
- type: string
- observedGeneration:
- description: observedGeneration represents the .metadata.generation
- that the condition was set based upon. For instance, if .metadata.generation
- is currently 12, but the .status.conditions[x].observedGeneration
- is 9, the condition is out of date with respect to the current
- state of the instance.
- format: int64
- minimum: 0
- type: integer
- reason:
- description: reason contains a programmatic identifier indicating
- the reason for the condition's last transition. Producers
- of specific condition types may define expected values and
- meanings for this field, and whether the values are considered
- a guaranteed API. The value should be a CamelCase string.
- This field may not be empty.
- maxLength: 1024
- minLength: 1
- pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
- type: string
- status:
- description: status of the condition, one of True, False, Unknown.
- enum:
- - "True"
- - "False"
- - Unknown
- type: string
- type:
- description: type of condition in CamelCase or in foo.example.com/CamelCase.
- --- Many .condition.type values are consistent across resources
- like Available, but because arbitrary conditions can be useful
- (see .node.status.conditions), the ability to deconflict is
- important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
- maxLength: 316
- pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
- type: string
- required:
- - lastTransitionTime
- - message
- - reason
- - status
- - type
- type: object
- type: array
- lastAppliedRevision:
- description: The last successfully applied revision. The revision
- format for Git sources is /.
- type: string
- lastAttemptedRevision:
- description: LastAttemptedRevision is the revision of the last reconciliation
- attempt.
- type: string
- lastHandledReconcileAt:
- description: LastHandledReconcileAt holds the value of the most recent
- reconcile request value, so a change of the annotation value can
- be detected.
- type: string
- observedGeneration:
- description: ObservedGeneration is the last reconciled generation.
- format: int64
- type: integer
- snapshot:
- description: The last successfully applied revision metadata.
- properties:
- checksum:
- description: The manifests sha1 checksum.
- type: string
- entries:
- description: A list of Kubernetes kinds grouped by namespace.
- items:
- description: Snapshot holds the metadata of namespaced Kubernetes
- objects
- properties:
- kinds:
- additionalProperties:
- type: string
- description: The list of Kubernetes kinds.
- type: object
- namespace:
- description: The namespace of this entry.
- type: string
- required:
- - kinds
- type: object
- type: array
- required:
- - checksum
- - entries
- type: object
- type: object
- type: object
- served: true
- storage: false
- subresources:
- status: {}
- - additionalPrinterColumns:
- - jsonPath: .metadata.creationTimestamp
- name: Age
- type: date
- - jsonPath: .status.conditions[?(@.type=="Ready")].status
- name: Ready
- type: string
- - jsonPath: .status.conditions[?(@.type=="Ready")].message
- name: Status
- type: string
- name: v1beta2
- schema:
- openAPIV3Schema:
- description: Kustomization is the Schema for the kustomizations API.
- properties:
- apiVersion:
- description: 'APIVersion defines the versioned schema of this representation
- of an object. Servers should convert recognized schemas to the latest
- internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
- type: string
- kind:
- description: 'Kind is a string value representing the REST resource this
- object represents. Servers may infer this from the endpoint the client
- submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
- type: string
- metadata:
- type: object
- spec:
- description: KustomizationSpec defines the configuration to calculate
- the desired state from a Source using Kustomize.
- properties:
- decryption:
- description: Decrypt Kubernetes secrets before applying them on the
- cluster.
- properties:
- provider:
- description: Provider is the name of the decryption engine.
- enum:
- - sops
- type: string
- secretRef:
- description: The secret name containing the private OpenPGP keys
- used for decryption.
- properties:
- name:
- description: Name of the referent.
- type: string
- required:
- - name
- type: object
- required:
- - provider
- type: object
- dependsOn:
- description: DependsOn may contain a meta.NamespacedObjectReference
- slice with references to Kustomization resources that must be ready
- before this Kustomization can be reconciled.
- items:
- description: NamespacedObjectReference contains enough information
- to locate the referenced Kubernetes resource object in any namespace.
- properties:
- name:
- description: Name of the referent.
- type: string
- namespace:
- description: Namespace of the referent, when not specified it
- acts as LocalObjectReference.
- type: string
- required:
- - name
- type: object
- type: array
- force:
- default: false
- description: Force instructs the controller to recreate resources
- when patching fails due to an immutable field change.
- type: boolean
- healthChecks:
- description: A list of resources to be included in the health assessment.
- items:
- description: NamespacedObjectKindReference contains enough information
- to locate the typed referenced Kubernetes resource object in any
- namespace.
- properties:
- apiVersion:
- description: API version of the referent, if not specified the
- Kubernetes preferred version will be used.
- type: string
- kind:
- description: Kind of the referent.
- type: string
- name:
- description: Name of the referent.
- type: string
- namespace:
- description: Namespace of the referent, when not specified it
- acts as LocalObjectReference.
- type: string
- required:
- - kind
- - name
- type: object
- type: array
- images:
- description: Images is a list of (image name, new name, new tag or
- digest) for changing image names, tags or digests. This can also
- be achieved with a patch, but this operator is simpler to specify.
- items:
- description: Image contains an image name, a new name, a new tag
- or digest, which will replace the original name and tag.
- properties:
- digest:
- description: Digest is the value used to replace the original
- image tag. If digest is present NewTag value is ignored.
- type: string
- name:
- description: Name is a tag-less image name.
- type: string
- newName:
- description: NewName is the value used to replace the original
- name.
- type: string
- newTag:
- description: NewTag is the value used to replace the original
- tag.
- type: string
- required:
- - name
- type: object
- type: array
- interval:
- description: The interval at which to reconcile the Kustomization.
- type: string
- kubeConfig:
- description: The KubeConfig for reconciling the Kustomization on a
- remote cluster. When used in combination with KustomizationSpec.ServiceAccountName,
- forces the controller to act on behalf of that Service Account at
- the target cluster. If the --default-service-account flag is set,
- its value will be used as a controller level fallback for when KustomizationSpec.ServiceAccountName
- is empty.
- properties:
- secretRef:
- description: SecretRef holds the name of a secret that contains
- a key with the kubeconfig file as the value. If no key is set,
- the key will default to 'value'. The secret must be in the same
- namespace as the Kustomization. It is recommended that the kubeconfig
- is self-contained, and the secret is regularly updated if credentials
- such as a cloud-access-token expire. Cloud specific `cmd-path`
- auth helpers will not function without adding binaries and credentials
- to the Pod that is responsible for reconciling the Kustomization.
- properties:
- key:
- description: Key in the Secret, when not specified an implementation-specific
- default key is used.
- type: string
- name:
- description: Name of the Secret.
- type: string
- required:
- - name
- type: object
- type: object
- patches:
- description: Strategic merge and JSON patches, defined as inline YAML
- objects, capable of targeting objects based on kind, label and annotation
- selectors.
- items:
- description: Patch contains an inline StrategicMerge or JSON6902
- patch, and the target the patch should be applied to.
- properties:
- patch:
- description: Patch contains an inline StrategicMerge patch or
- an inline JSON6902 patch with an array of operation objects.
- type: string
- target:
- description: Target points to the resources that the patch document
- should be applied to.
- properties:
- annotationSelector:
- description: AnnotationSelector is a string that follows
- the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
- It matches with the resource annotations.
- type: string
- group:
- description: Group is the API group to select resources
- from. Together with Version and Kind it is capable of
- unambiguously identifying and/or selecting resources.
- https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
- type: string
- kind:
- description: Kind of the API Group to select resources from.
- Together with Group and Version it is capable of unambiguously
- identifying and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
- type: string
- labelSelector:
- description: LabelSelector is a string that follows the
- label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
- It matches with the resource labels.
- type: string
- name:
- description: Name to match resources with.
- type: string
- namespace:
- description: Namespace to select resources from.
- type: string
- version:
- description: Version of the API Group to select resources
- from. Together with Group and Kind it is capable of unambiguously
- identifying and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
- type: string
- type: object
- type: object
- type: array
- patchesJson6902:
- description: 'JSON 6902 patches, defined as inline YAML objects. Deprecated:
- Use Patches instead.'
- items:
- description: JSON6902Patch contains a JSON6902 patch and the target
- the patch should be applied to.
- properties:
- patch:
- description: Patch contains the JSON6902 patch document with
- an array of operation objects.
- items:
- description: JSON6902 is a JSON6902 operation object. https://datatracker.ietf.org/doc/html/rfc6902#section-4
- properties:
- from:
- description: From contains a JSON-pointer value that references
- a location within the target document where the operation
- is performed. The meaning of the value depends on the
- value of Op, and is NOT taken into account by all operations.
- type: string
- op:
- description: Op indicates the operation to perform. Its
- value MUST be one of "add", "remove", "replace", "move",
- "copy", or "test". https://datatracker.ietf.org/doc/html/rfc6902#section-4
- enum:
- - test
- - remove
- - add
- - replace
- - move
- - copy
- type: string
- path:
- description: Path contains the JSON-pointer value that
- references a location within the target document where
- the operation is performed. The meaning of the value
- depends on the value of Op.
- type: string
- value:
- description: Value contains a valid JSON structure. The
- meaning of the value depends on the value of Op, and
- is NOT taken into account by all operations.
- x-kubernetes-preserve-unknown-fields: true
- required:
- - op
- - path
- type: object
- type: array
- target:
- description: Target points to the resources that the patch document
- should be applied to.
- properties:
- annotationSelector:
- description: AnnotationSelector is a string that follows
- the label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
- It matches with the resource annotations.
- type: string
- group:
- description: Group is the API group to select resources
- from. Together with Version and Kind it is capable of
- unambiguously identifying and/or selecting resources.
- https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
- type: string
- kind:
- description: Kind of the API Group to select resources from.
- Together with Group and Version it is capable of unambiguously
- identifying and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
- type: string
- labelSelector:
- description: LabelSelector is a string that follows the
- label selection expression https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#api
- It matches with the resource labels.
- type: string
- name:
- description: Name to match resources with.
- type: string
- namespace:
- description: Namespace to select resources from.
- type: string
- version:
- description: Version of the API Group to select resources
- from. Together with Group and Kind it is capable of unambiguously
- identifying and/or selecting resources. https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
- type: string
- type: object
- required:
- - patch
- - target
- type: object
- type: array
- patchesStrategicMerge:
- description: 'Strategic merge patches, defined as inline YAML objects.
- Deprecated: Use Patches instead.'
- items:
- x-kubernetes-preserve-unknown-fields: true
- type: array
- path:
- description: Path to the directory containing the kustomization.yaml
- file, or the set of plain YAMLs a kustomization.yaml should be generated
- for. Defaults to 'None', which translates to the root path of the
- SourceRef.
- type: string
- postBuild:
- description: PostBuild describes which actions to perform on the YAML
- manifest generated by building the kustomize overlay.
- properties:
- substitute:
- additionalProperties:
- type: string
- description: Substitute holds a map of key/value pairs. The variables
- defined in your YAML manifests that match any of the keys defined
- in the map will be substituted with the set value. Includes
- support for bash string replacement functions e.g. ${var:=default},
- ${var:position} and ${var/substring/replacement}.
- type: object
- substituteFrom:
- description: SubstituteFrom holds references to ConfigMaps and
- Secrets containing the variables and their values to be substituted
- in the YAML manifests. The ConfigMap and the Secret data keys
- represent the var names and they must match the vars declared
- in the manifests for the substitution to happen.
- items:
- description: SubstituteReference contains a reference to a resource
- containing the variables name and value.
- properties:
- kind:
- description: Kind of the values referent, valid values are
- ('Secret', 'ConfigMap').
- enum:
- - Secret
- - ConfigMap
- type: string
- name:
- description: Name of the values referent. Should reside
- in the same namespace as the referring resource.
- maxLength: 253
- minLength: 1
- type: string
- optional:
- default: false
- description: Optional indicates whether the referenced resource
- must exist, or whether to tolerate its absence. If true
- and the referenced resource is absent, proceed as if the
- resource was present but empty, without any variables
- defined.
- type: boolean
- required:
- - kind
- - name
- type: object
- type: array
- type: object
- prune:
- description: Prune enables garbage collection.
- type: boolean
- retryInterval:
- description: The interval at which to retry a previously failed reconciliation.
- When not specified, the controller uses the KustomizationSpec.Interval
- value to retry failures.
- type: string
- serviceAccountName:
- description: The name of the Kubernetes service account to impersonate
- when reconciling this Kustomization.
- type: string
- sourceRef:
- description: Reference of the source where the kustomization file
- is.
- properties:
- apiVersion:
- description: API version of the referent.
- type: string
- kind:
- description: Kind of the referent.
- enum:
- - OCIRepository
- - GitRepository
- - Bucket
- type: string
- name:
- description: Name of the referent.
- type: string
- namespace:
- description: Namespace of the referent, defaults to the namespace
- of the Kubernetes resource object that contains the reference.
- type: string
- required:
- - kind
- - name
- type: object
- suspend:
- description: This flag tells the controller to suspend subsequent
- kustomize executions, it does not apply to already started executions.
- Defaults to false.
- type: boolean
- targetNamespace:
- description: TargetNamespace sets or overrides the namespace in the
- kustomization.yaml file.
- maxLength: 63
- minLength: 1
- type: string
- timeout:
- description: Timeout for validation, apply and health checking operations.
- Defaults to 'Interval' duration.
- type: string
- validation:
- description: 'Deprecated: Not used in v1beta2.'
- enum:
- - none
- - client
- - server
- type: string
- wait:
- description: Wait instructs the controller to check the health of
- all the reconciled resources. When enabled, the HealthChecks are
- ignored. Defaults to false.
- type: boolean
- required:
- - interval
- - prune
- - sourceRef
- type: object
- status:
- default:
- observedGeneration: -1
- description: KustomizationStatus defines the observed state of a kustomization.
- properties:
- conditions:
- items:
- description: "Condition contains details for one aspect of the current
- state of this API Resource. --- This struct is intended for direct
- use as an array at the field path .status.conditions. For example,
- \n \ttype FooStatus struct{ \t // Represents the observations
- of a foo's current state. \t // Known .status.conditions.type
- are: \"Available\", \"Progressing\", and \"Degraded\" \t //
- +patchMergeKey=type \t // +patchStrategy=merge \t // +listType=map
- \t // +listMapKey=type \t Conditions []metav1.Condition
- `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
- protobuf:\"bytes,1,rep,name=conditions\"` \n \t // other fields
- \t}"
- properties:
- lastTransitionTime:
- description: lastTransitionTime is the last time the condition
- transitioned from one status to another. This should be when
- the underlying condition changed. If that is not known, then
- using the time when the API field changed is acceptable.
- format: date-time
- type: string
- message:
- description: message is a human readable message indicating
- details about the transition. This may be an empty string.
- maxLength: 32768
- type: string
- observedGeneration:
- description: observedGeneration represents the .metadata.generation
- that the condition was set based upon. For instance, if .metadata.generation
- is currently 12, but the .status.conditions[x].observedGeneration
- is 9, the condition is out of date with respect to the current
- state of the instance.
- format: int64
- minimum: 0
- type: integer
- reason:
- description: reason contains a programmatic identifier indicating
- the reason for the condition's last transition. Producers
- of specific condition types may define expected values and
- meanings for this field, and whether the values are considered
- a guaranteed API. The value should be a CamelCase string.
- This field may not be empty.
- maxLength: 1024
- minLength: 1
- pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
- type: string
- status:
- description: status of the condition, one of True, False, Unknown.
- enum:
- - "True"
- - "False"
- - Unknown
- type: string
- type:
- description: type of condition in CamelCase or in foo.example.com/CamelCase.
- --- Many .condition.type values are consistent across resources
- like Available, but because arbitrary conditions can be useful
- (see .node.status.conditions), the ability to deconflict is
- important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
- maxLength: 316
- pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
- type: string
- required:
- - lastTransitionTime
- - message
- - reason
- - status
- - type
- type: object
- type: array
- inventory:
- description: Inventory contains the list of Kubernetes resource object
- references that have been successfully applied.
- properties:
- entries:
- description: Entries of Kubernetes resource object references.
- items:
- description: ResourceRef contains the information necessary
- to locate a resource within a cluster.
- properties:
- id:
- description: ID is the string representation of the Kubernetes
- resource object's metadata, in the format '___'.
- type: string
- v:
- description: Version is the API version of the Kubernetes
- resource object's kind.
- type: string
- required:
- - id
- - v
- type: object
- type: array
- required:
- - entries
- type: object
- lastAppliedRevision:
- description: The last successfully applied revision. The revision
- format for Git sources is /.
- type: string
- lastAttemptedRevision:
- description: LastAttemptedRevision is the revision of the last reconciliation
- attempt.
- type: string
- lastHandledReconcileAt:
- description: LastHandledReconcileAt holds the value of the most recent
- reconcile request value, so a change of the annotation value can
- be detected.
- type: string
- observedGeneration:
- description: ObservedGeneration is the last reconciled generation.
- format: int64
- type: integer
- type: object
- type: object
- served: true
- storage: true
- subresources:
- status: {}
-status:
- acceptedNames:
- kind: ""
- plural: ""
- conditions: []
- storedVersions: []
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
- annotations:
- controller-gen.kubebuilder.io/version: v0.7.0
- creationTimestamp: null
- labels:
- app.kubernetes.io/instance: flux-system
- app.kubernetes.io/part-of: flux
- app.kubernetes.io/version: v0.33.0
- name: ocirepositories.source.toolkit.fluxcd.io
-spec:
- group: source.toolkit.fluxcd.io
- names:
- kind: OCIRepository
- listKind: OCIRepositoryList
- plural: ocirepositories
- shortNames:
- - ocirepo
- singular: ocirepository
- scope: Namespaced
- versions:
- - additionalPrinterColumns:
- - jsonPath: .spec.url
- name: URL
- type: string
- - jsonPath: .status.conditions[?(@.type=="Ready")].status
- name: Ready
- type: string
- - jsonPath: .status.conditions[?(@.type=="Ready")].message
- name: Status
- type: string
- - jsonPath: .metadata.creationTimestamp
- name: Age
- type: date
- name: v1beta2
- schema:
- openAPIV3Schema:
- description: OCIRepository is the Schema for the ocirepositories API
- properties:
- apiVersion:
- description: 'APIVersion defines the versioned schema of this representation
- of an object. Servers should convert recognized schemas to the latest
- internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
- type: string
- kind:
- description: 'Kind is a string value representing the REST resource this
- object represents. Servers may infer this from the endpoint the client
- submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
- type: string
- metadata:
- type: object
- spec:
- description: OCIRepositorySpec defines the desired state of OCIRepository
- properties:
- certSecretRef:
- description: "CertSecretRef can be given the name of a secret containing
- either or both of \n - a PEM-encoded client certificate (`certFile`)
- and private key (`keyFile`); - a PEM-encoded CA certificate (`caFile`)
- \n and whichever are supplied, will be used for connecting to the
- \ registry. The client cert and key are useful if you are authenticating
- with a certificate; the CA cert is useful if you are using a self-signed
- server certificate."
- properties:
- name:
- description: Name of the referent.
- type: string
- required:
- - name
- type: object
- ignore:
- description: Ignore overrides the set of excluded patterns in the
- .sourceignore format (which is the same as .gitignore). If not provided,
- a default will be used, consult the documentation for your version
- to find out what those are.
- type: string
- interval:
- description: The interval at which to check for image updates.
- type: string
- layerSelector:
- description: LayerSelector specifies which layer should be extracted
- from the OCI artifact. When not specified, the first layer found
- in the artifact is selected.
- properties:
- mediaType:
- description: MediaType specifies the OCI media type of the layer
- which should be extracted from the OCI Artifact. The first layer
- matching this type is selected.
- type: string
- type: object
- provider:
- default: generic
- description: The provider used for authentication, can be 'aws', 'azure',
- 'gcp' or 'generic'. When not specified, defaults to 'generic'.
- enum:
- - generic
- - aws
- - azure
- - gcp
- type: string
- ref:
- description: The OCI reference to pull and monitor for changes, defaults
- to the latest tag.
- properties:
- digest:
- description: Digest is the image digest to pull, takes precedence
- over SemVer. The value should be in the format 'sha256:'.
- type: string
- semver:
- description: SemVer is the range of tags to pull selecting the
- latest within the range, takes precedence over Tag.
- type: string
- tag:
- description: Tag is the image tag to pull, defaults to latest.
- type: string
- type: object
- secretRef:
- description: SecretRef contains the secret name containing the registry
- login credentials to resolve image metadata. The secret must be
- of type kubernetes.io/dockerconfigjson.
- properties:
- name:
- description: Name of the referent.
- type: string
- required:
- - name
- type: object
- serviceAccountName:
- description: 'ServiceAccountName is the name of the Kubernetes ServiceAccount
- used to authenticate the image pull if the service account has attached
- pull secrets. For more information: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account'
- type: string
- suspend:
- description: This flag tells the controller to suspend the reconciliation
- of this source.
- type: boolean
- timeout:
- default: 60s
- description: The timeout for remote OCI Repository operations like
- pulling, defaults to 60s.
- type: string
- url:
- description: URL is a reference to an OCI artifact repository hosted
- on a remote container registry.
- pattern: ^oci://.*$
- type: string
- required:
- - interval
- - url
- type: object
- status:
- default:
- observedGeneration: -1
- description: OCIRepositoryStatus defines the observed state of OCIRepository
- properties:
- artifact:
- description: Artifact represents the output of the last successful
- OCI Repository sync.
- properties:
- checksum:
- description: Checksum is the SHA256 checksum of the Artifact file.
- type: string
- lastUpdateTime:
- description: LastUpdateTime is the timestamp corresponding to
- the last update of the Artifact.
- format: date-time
- type: string
- metadata:
- additionalProperties:
- type: string
- description: Metadata holds upstream information such as OCI annotations.
- type: object
- path:
- description: Path is the relative file path of the Artifact. It
- can be used to locate the file in the root of the Artifact storage
- on the local file system of the controller managing the Source.
- type: string
- revision:
- description: Revision is a human-readable identifier traceable
- in the origin source system. It can be a Git commit SHA, Git
- tag, a Helm chart version, etc.
- type: string
- size:
- description: Size is the number of bytes in the file.
- format: int64
- type: integer
- url:
- description: URL is the HTTP address of the Artifact as exposed
- by the controller managing the Source. It can be used to retrieve
- the Artifact for consumption, e.g. by another controller applying
- the Artifact contents.
- type: string
- required:
- - path
- - url
- type: object
- conditions:
- description: Conditions holds the conditions for the OCIRepository.
- items:
- description: "Condition contains details for one aspect of the current
- state of this API Resource. --- This struct is intended for direct
- use as an array at the field path .status.conditions. For example,
- \n \ttype FooStatus struct{ \t // Represents the observations
- of a foo's current state. \t // Known .status.conditions.type
- are: \"Available\", \"Progressing\", and \"Degraded\" \t //
- +patchMergeKey=type \t // +patchStrategy=merge \t // +listType=map
- \t // +listMapKey=type \t Conditions []metav1.Condition
- `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
- protobuf:\"bytes,1,rep,name=conditions\"` \n \t // other fields
- \t}"
- properties:
- lastTransitionTime:
- description: lastTransitionTime is the last time the condition
- transitioned from one status to another. This should be when
- the underlying condition changed. If that is not known, then
- using the time when the API field changed is acceptable.
- format: date-time
- type: string
- message:
- description: message is a human readable message indicating
- details about the transition. This may be an empty string.
- maxLength: 32768
- type: string
- observedGeneration:
- description: observedGeneration represents the .metadata.generation
- that the condition was set based upon. For instance, if .metadata.generation
- is currently 12, but the .status.conditions[x].observedGeneration
- is 9, the condition is out of date with respect to the current
- state of the instance.
- format: int64
- minimum: 0
- type: integer
- reason:
- description: reason contains a programmatic identifier indicating
- the reason for the condition's last transition. Producers
- of specific condition types may define expected values and
- meanings for this field, and whether the values are considered
- a guaranteed API. The value should be a CamelCase string.
- This field may not be empty.
- maxLength: 1024
- minLength: 1
- pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
- type: string
- status:
- description: status of the condition, one of True, False, Unknown.
- enum:
- - "True"
- - "False"
- - Unknown
- type: string
- type:
- description: type of condition in CamelCase or in foo.example.com/CamelCase.
- --- Many .condition.type values are consistent across resources
- like Available, but because arbitrary conditions can be useful
- (see .node.status.conditions), the ability to deconflict is
- important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
- maxLength: 316
- pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
- type: string
- required:
- - lastTransitionTime
- - message
- - reason
- - status
- - type
- type: object
- type: array
- lastHandledReconcileAt:
- description: LastHandledReconcileAt holds the value of the most recent
- reconcile request value, so a change of the annotation value can
- be detected.
- type: string
- observedGeneration:
- description: ObservedGeneration is the last observed generation.
- format: int64
- type: integer
- url:
- description: URL is the download link for the artifact output of the
- last OCI Repository sync.
- type: string
- type: object
- type: object
- served: true
- storage: true
- subresources:
- status: {}
-status:
- acceptedNames:
- kind: ""
- plural: ""
- conditions: []
- storedVersions: []
----
-apiVersion: v1
-kind: ServiceAccount
-metadata:
- labels:
- app.kubernetes.io/instance: flux-system
- app.kubernetes.io/part-of: flux
- app.kubernetes.io/version: v0.33.0
- name: kustomize-controller
- namespace: flux-system
----
-apiVersion: v1
-kind: ServiceAccount
-metadata:
- labels:
- app.kubernetes.io/instance: flux-system
- app.kubernetes.io/part-of: flux
- app.kubernetes.io/version: v0.33.0
- name: source-controller
- namespace: flux-system
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRole
-metadata:
- labels:
- app.kubernetes.io/instance: flux-system
- app.kubernetes.io/part-of: flux
- app.kubernetes.io/version: v0.33.0
- name: crd-controller-flux-system
-rules:
-- apiGroups:
- - source.toolkit.fluxcd.io
- resources:
- - '*'
- verbs:
- - '*'
-- apiGroups:
- - kustomize.toolkit.fluxcd.io
- resources:
- - '*'
- verbs:
- - '*'
-- apiGroups:
- - helm.toolkit.fluxcd.io
- resources:
- - '*'
- verbs:
- - '*'
-- apiGroups:
- - notification.toolkit.fluxcd.io
- resources:
- - '*'
- verbs:
- - '*'
-- apiGroups:
- - image.toolkit.fluxcd.io
- resources:
- - '*'
- verbs:
- - '*'
-- apiGroups:
- - ""
- resources:
- - namespaces
- - secrets
- - configmaps
- - serviceaccounts
- verbs:
- - get
- - list
- - watch
-- apiGroups:
- - ""
- resources:
- - events
- verbs:
- - create
- - patch
-- apiGroups:
- - ""
- resources:
- - configmaps
- verbs:
- - get
- - list
- - watch
- - create
- - update
- - patch
- - delete
-- apiGroups:
- - ""
- resources:
- - configmaps/status
- verbs:
- - get
- - update
- - patch
-- apiGroups:
- - coordination.k8s.io
- resources:
- - leases
- verbs:
- - get
- - list
- - watch
- - create
- - update
- - patch
- - delete
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRoleBinding
-metadata:
- labels:
- app.kubernetes.io/instance: flux-system
- app.kubernetes.io/part-of: flux
- app.kubernetes.io/version: v0.33.0
- name: cluster-reconciler-flux-system
-roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: ClusterRole
- name: cluster-admin
-subjects:
-- kind: ServiceAccount
- name: kustomize-controller
- namespace: flux-system
-- kind: ServiceAccount
- name: helm-controller
- namespace: flux-system
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRoleBinding
-metadata:
- labels:
- app.kubernetes.io/instance: flux-system
- app.kubernetes.io/part-of: flux
- app.kubernetes.io/version: v0.33.0
- name: crd-controller-flux-system
-roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: ClusterRole
- name: crd-controller-flux-system
-subjects:
-- kind: ServiceAccount
- name: kustomize-controller
- namespace: flux-system
-- kind: ServiceAccount
- name: helm-controller
- namespace: flux-system
-- kind: ServiceAccount
- name: source-controller
- namespace: flux-system
-- kind: ServiceAccount
- name: notification-controller
- namespace: flux-system
-- kind: ServiceAccount
- name: image-reflector-controller
- namespace: flux-system
-- kind: ServiceAccount
- name: image-automation-controller
- namespace: flux-system
----
-apiVersion: v1
-kind: Service
-metadata:
- labels:
- app.kubernetes.io/instance: flux-system
- app.kubernetes.io/part-of: flux
- app.kubernetes.io/version: v0.33.0
- control-plane: controller
- name: source-controller
- namespace: flux-system
-spec:
- ports:
- - name: http
- port: 80
- protocol: TCP
- targetPort: http
- selector:
- app: source-controller
- type: ClusterIP
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- labels:
- app.kubernetes.io/instance: flux-system
- app.kubernetes.io/part-of: flux
- app.kubernetes.io/version: v0.33.0
- control-plane: controller
- name: kustomize-controller
- namespace: flux-system
-spec:
- replicas: 1
- selector:
- matchLabels:
- app: kustomize-controller
- template:
- metadata:
- annotations:
- prometheus.io/port: "8080"
- prometheus.io/scrape: "true"
- labels:
- app: kustomize-controller
- spec:
- containers:
- - args:
- - --events-addr=
- - --watch-all-namespaces=true
- - --log-level=info
- - --log-encoding=json
- - --enable-leader-election
- env:
- - name: RUNTIME_NAMESPACE
- valueFrom:
- fieldRef:
- fieldPath: metadata.namespace
- image: ghcr.io/fluxcd/kustomize-controller:v0.27.1
- imagePullPolicy: IfNotPresent
- livenessProbe:
- httpGet:
- path: /healthz
- port: healthz
- name: manager
- ports:
- - containerPort: 8080
- name: http-prom
- protocol: TCP
- - containerPort: 9440
- name: healthz
- protocol: TCP
- readinessProbe:
- httpGet:
- path: /readyz
- port: healthz
- resources:
- limits:
- cpu: 1000m
- memory: 1Gi
- requests:
- cpu: 100m
- memory: 64Mi
- securityContext:
- allowPrivilegeEscalation: false
- capabilities:
- drop:
- - ALL
- readOnlyRootFilesystem: true
- runAsNonRoot: true
- seccompProfile:
- type: RuntimeDefault
- volumeMounts:
- - mountPath: /tmp
- name: temp
- nodeSelector:
- kubernetes.io/os: linux
- securityContext:
- fsGroup: 1337
- serviceAccountName: kustomize-controller
- terminationGracePeriodSeconds: 60
- volumes:
- - emptyDir: {}
- name: temp
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- labels:
- app.kubernetes.io/instance: flux-system
- app.kubernetes.io/part-of: flux
- app.kubernetes.io/version: v0.33.0
- control-plane: controller
- name: source-controller
- namespace: flux-system
-spec:
- replicas: 1
- selector:
- matchLabels:
- app: source-controller
- strategy:
- type: Recreate
- template:
- metadata:
- annotations:
- prometheus.io/port: "8080"
- prometheus.io/scrape: "true"
- labels:
- app: source-controller
- spec:
- containers:
- - args:
- - --events-addr=
- - --watch-all-namespaces=true
- - --log-level=info
- - --log-encoding=json
- - --enable-leader-election
- - --storage-path=/data
- - --storage-adv-addr=source-controller.$(RUNTIME_NAMESPACE).svc.cluster.local.
- env:
- - name: RUNTIME_NAMESPACE
- valueFrom:
- fieldRef:
- fieldPath: metadata.namespace
- image: ghcr.io/fluxcd/source-controller:v0.28.0
- imagePullPolicy: IfNotPresent
- livenessProbe:
- httpGet:
- path: /healthz
- port: healthz
- name: manager
- ports:
- - containerPort: 9090
- name: http
- protocol: TCP
- - containerPort: 8080
- name: http-prom
- protocol: TCP
- - containerPort: 9440
- name: healthz
- protocol: TCP
- readinessProbe:
- httpGet:
- path: /
- port: http
- resources:
- limits:
- cpu: 1000m
- memory: 1Gi
- requests:
- cpu: 50m
- memory: 64Mi
- securityContext:
- allowPrivilegeEscalation: false
- capabilities:
- drop:
- - ALL
- readOnlyRootFilesystem: true
- runAsNonRoot: true
- seccompProfile:
- type: RuntimeDefault
- volumeMounts:
- - mountPath: /data
- name: data
- - mountPath: /tmp
- name: tmp
- nodeSelector:
- kubernetes.io/os: linux
- securityContext:
- fsGroup: 1337
- serviceAccountName: source-controller
- terminationGracePeriodSeconds: 10
- volumes:
- - emptyDir: {}
- name: data
- - emptyDir: {}
- name: tmp
----
-apiVersion: networking.k8s.io/v1
-kind: NetworkPolicy
-metadata:
- labels:
- app.kubernetes.io/instance: flux-system
- app.kubernetes.io/part-of: flux
- app.kubernetes.io/version: v0.33.0
- name: allow-egress
- namespace: flux-system
-spec:
- egress:
- - {}
- ingress:
- - from:
- - podSelector: {}
- podSelector: {}
- policyTypes:
- - Ingress
- - Egress
----
-apiVersion: networking.k8s.io/v1
-kind: NetworkPolicy
-metadata:
- labels:
- app.kubernetes.io/instance: flux-system
- app.kubernetes.io/part-of: flux
- app.kubernetes.io/version: v0.33.0
- name: allow-scraping
- namespace: flux-system
-spec:
- ingress:
- - from:
- - namespaceSelector: {}
- ports:
- - port: 8080
- protocol: TCP
- podSelector: {}
- policyTypes:
- - Ingress
----
-apiVersion: networking.k8s.io/v1
-kind: NetworkPolicy
-metadata:
- labels:
- app.kubernetes.io/instance: flux-system
- app.kubernetes.io/part-of: flux
- app.kubernetes.io/version: v0.33.0
- name: allow-webhooks
- namespace: flux-system
-spec:
- ingress:
- - from:
- - namespaceSelector: {}
- podSelector:
- matchLabels:
- app: notification-controller
- policyTypes:
- - Ingress
diff --git a/examples/podinfo-flux/podinfo-kustomization.yaml b/examples/podinfo-flux/git/podinfo-kustomization.yaml
similarity index 81%
rename from examples/podinfo-flux/podinfo-kustomization.yaml
rename to examples/podinfo-flux/git/podinfo-kustomization.yaml
index db498ac16d..bc8d5d50ef 100644
--- a/examples/podinfo-flux/podinfo-kustomization.yaml
+++ b/examples/podinfo-flux/git/podinfo-kustomization.yaml
@@ -2,7 +2,7 @@
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
kind: Kustomization
metadata:
- name: podinfo
+ name: podinfo-git
namespace: flux-system
spec:
interval: 5m0s
@@ -11,4 +11,4 @@ spec:
sourceRef:
kind: GitRepository
name: podinfo
- targetNamespace: podinfo
+ targetNamespace: podinfo-git
diff --git a/examples/podinfo-flux/podinfo-source.yaml b/examples/podinfo-flux/git/podinfo-source.yaml
similarity index 95%
rename from examples/podinfo-flux/podinfo-source.yaml
rename to examples/podinfo-flux/git/podinfo-source.yaml
index e42f85dce2..3b6351955c 100644
--- a/examples/podinfo-flux/podinfo-source.yaml
+++ b/examples/podinfo-flux/git/podinfo-source.yaml
@@ -7,6 +7,6 @@ metadata:
spec:
interval: 30s
ref:
- tag: 6.3.3
+ tag: 6.4.0
# Currently the Zarf Agent can only mutate urls that are proper URIs (i.e. scheme://host/repo)
url: https://github.com/stefanprodan/podinfo.git
diff --git a/examples/podinfo-flux/helm/podinfo-helmrelease.yaml b/examples/podinfo-flux/helm/podinfo-helmrelease.yaml
new file mode 100644
index 0000000000..f8cfaa9a95
--- /dev/null
+++ b/examples/podinfo-flux/helm/podinfo-helmrelease.yaml
@@ -0,0 +1,17 @@
+apiVersion: helm.toolkit.fluxcd.io/v2
+kind: HelmRelease
+metadata:
+ name: podinfo
+ namespace: flux-system
+spec:
+ interval: 5m0s
+ releaseName: podinfo
+ chart:
+ spec:
+ chart: podinfo
+ version: '6.4.0'
+ sourceRef:
+ kind: HelmRepository
+ name: podinfo
+ interval: 5m0s
+ targetNamespace: podinfo-helm
diff --git a/examples/podinfo-flux/helm/podinfo-source.yaml b/examples/podinfo-flux/helm/podinfo-source.yaml
new file mode 100644
index 0000000000..9c6d62e005
--- /dev/null
+++ b/examples/podinfo-flux/helm/podinfo-source.yaml
@@ -0,0 +1,9 @@
+apiVersion: source.toolkit.fluxcd.io/v1
+kind: HelmRepository
+metadata:
+ name: podinfo
+ namespace: flux-system
+spec:
+ type: oci
+ interval: 30s
+ url: oci://ghcr.io/stefanprodan/charts
diff --git a/examples/podinfo-flux/oci/podinfo-kustomization.yaml b/examples/podinfo-flux/oci/podinfo-kustomization.yaml
new file mode 100644
index 0000000000..57f290e7b6
--- /dev/null
+++ b/examples/podinfo-flux/oci/podinfo-kustomization.yaml
@@ -0,0 +1,14 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1
+kind: Kustomization
+metadata:
+ name: podinfo-oci
+ namespace: flux-system
+spec:
+ interval: 5m0s
+ path: ./
+ prune: true
+ sourceRef:
+ kind: OCIRepository
+ name: podinfo
+ targetNamespace: podinfo-oci
diff --git a/examples/podinfo-flux/oci/podinfo-source.yaml b/examples/podinfo-flux/oci/podinfo-source.yaml
new file mode 100644
index 0000000000..180659f63f
--- /dev/null
+++ b/examples/podinfo-flux/oci/podinfo-source.yaml
@@ -0,0 +1,11 @@
+---
+apiVersion: source.toolkit.fluxcd.io/v1beta2
+kind: OCIRepository
+metadata:
+ name: podinfo
+ namespace: flux-system
+spec:
+ interval: 30s
+ url: oci://ghcr.io/stefanprodan/manifests/podinfo
+ ref:
+ tag: 6.4.0
diff --git a/examples/podinfo-flux/zarf.yaml b/examples/podinfo-flux/zarf.yaml
index 0f0e4b3336..4ab41b360e 100644
--- a/examples/podinfo-flux/zarf.yaml
+++ b/examples/podinfo-flux/zarf.yaml
@@ -8,27 +8,79 @@ components:
description: Installs the flux CRDs / controllers to use flux-based deployments in the cluster
required: true
manifests:
- - name: flux-crds
+ - name: flux-install
namespace: flux
files:
- - flux-install.yaml
+ - https://github.com/fluxcd/flux2/releases/download/v2.3.0/install.yaml
images:
- - ghcr.io/fluxcd/kustomize-controller:v0.27.1
- - ghcr.io/fluxcd/source-controller:v0.28.0
+ - ghcr.io/fluxcd/helm-controller:v1.0.1
+ - ghcr.io/fluxcd/image-automation-controller:v0.38.0
+ - ghcr.io/fluxcd/image-reflector-controller:v0.32.0
+ - ghcr.io/fluxcd/kustomize-controller:v1.3.0
+ - ghcr.io/fluxcd/notification-controller:v1.3.0
+ - ghcr.io/fluxcd/source-controller:v1.3.0
- - name: podinfo-via-flux
- description: Example deployment via flux using the famous podinfo example
+ - name: podinfo-via-flux-git
+ description: Example deployment via flux (git) using the famous podinfo example
required: true
manifests:
- - name: podinfo-via-flux
- namespace: podinfo
+ - name: podinfo
+ namespace: podinfo-git
files:
- - podinfo-source.yaml
- - podinfo-kustomization.yaml
+ - git/podinfo-source.yaml
+ - git/podinfo-kustomization.yaml
repos:
- https://github.com/stefanprodan/podinfo.git
images:
- - ghcr.io/stefanprodan/podinfo:6.3.3
+ - ghcr.io/stefanprodan/podinfo:6.4.0
+ actions:
+ onDeploy:
+ after:
+ - description: Podinfo pods to be ready via wait action
+ wait:
+ cluster:
+ kind: pod
+ name: app=podinfo
+ namespace: podinfo-git
+ condition: ready
+
+ - name: podinfo-via-flux-helm
+ description: Example deployment via flux (helm oci) using the famous podinfo example
+ required: true
+ manifests:
+ - name: podinfo
+ namespace: podinfo-helm
+ files:
+ - helm/podinfo-source.yaml
+ - helm/podinfo-helmrelease.yaml
+ images:
+ - ghcr.io/stefanprodan/podinfo:6.4.0
+ # Note: this is a helm OCI artifact rather than a container image
+ - ghcr.io/stefanprodan/charts/podinfo:6.4.0
+ actions:
+ onDeploy:
+ after:
+ - description: Podinfo pods to be ready via wait action
+ wait:
+ cluster:
+ kind: pod
+ name: app.kubernetes.io/name=podinfo
+ namespace: podinfo-helm
+ condition: ready
+
+ - name: podinfo-via-flux-oci
+ description: Example deployment via flux (native oci) using the famous podinfo example
+ required: true
+ manifests:
+ - name: podinfo
+ namespace: podinfo-oci
+ files:
+ - oci/podinfo-source.yaml
+ - oci/podinfo-kustomization.yaml
+ images:
+ - ghcr.io/stefanprodan/podinfo:6.4.0
+ # Note: this is a flux kustomize OCI artifact rather than a container image
+ - ghcr.io/stefanprodan/manifests/podinfo:6.4.0
actions:
onDeploy:
after:
@@ -38,5 +90,24 @@ components:
cluster:
kind: pod
name: app=podinfo
- namespace: podinfo
+ namespace: podinfo-oci
condition: ready
+
+# YAML keys starting with `x-` are custom keys that are ignored by the Zarf CLI
+# The `x-mdx` key is used to render the markdown content for https://docs.zarf.dev/ref/examples
+x-mdx: |
+ This example demonstrates how to use Flux with Zarf to deploy the `stefanprodan/podinfo` app using GitRepositories, HelmRepositories, and OCIRepositories.
+
+ It uses a vanilla configuration of Flux with upstream containers.
+
+ To learn more about how Zarf handles `git` repositories, see the [Git Repositories section](/ref/components/#git-repositories) of the package components documentation.
+
+ :::caution
+
+ Only `type: oci` HelmRepositories are supported by the Zarf Agent. The `type` key requires a HelmRepository CRD version greater than v1beta1.
+
+ The Zarf agent will only automatically add the `insecure` key if the internal registry is used. If you are using a http registry outside of the cluster you will need to manually add this key.
+
+ Due to an upstream bug, HelmRepositories with an insecure registry must use IP address instead of a hostname. This is not an issue with the internal Zarf registry, which is always an IP address, but will cause Flux HelmRepositories to break if Zarf is using an external http registry with a hostname.
+
+ :::
diff --git a/examples/variables/README.md b/examples/variables/README.md
deleted file mode 100644
index fbb616aff6..0000000000
--- a/examples/variables/README.md
+++ /dev/null
@@ -1,173 +0,0 @@
-import Properties from '@site/src/components/SchemaItemProperties';
-import ExampleYAML from "@site/src/components/ExampleYAML";
-
-# Variables
-
-This example demonstrates how to define `variables` and `constants` in your package that will be templated across the manifests and charts your package uses during `zarf package deploy` with `###ZARF_VAR_*###` and `###ZARF_CONST_*###`, and also shows how package configuration templates can be used in the `zarf.yaml` during `zarf package create` with `###ZARF_PKG_TMPL_*###`.
-
-With these variables and templating features, you can define values in the `zarf.yaml` file without having to set them manually in every manifest and chart, and can prompt the deploy user for certain information you may want to make dynamic on `zarf package deploy`.
-
-This becomes useful when you are working with an upstream chart that is often changing, or a lot of charts that have slightly different conventions for their values. Now you can standardize all of that from your `zarf.yaml` file.
-
-Text files are also templated during `zarf package deploy` so you can use these variables in any text file that you want to be templated.
-
-:::note
-
-Because files can be deployed without a Kubernetes cluster, some built-in variables such as `###ZARF_REGISTRY###` may not be available if no previous component has required access to the cluster. If you need one of these built-in variables, a prior component will need to have been called that requires access to the cluster, such as `images`, `repos`, `manifests`, `dataInjections`.
-
-:::
-
-## Deploy-Time Variables and Constants
-
-To use variables and constants at deploy time you need to have two things:
-
-1. a manifest that you want to template a value in
-2. a defined variable in the `zarf.yaml` file from `variables` or `setVariable`
-
-The manifest should have your desired variable name in ALL CAPS prefixed with `###ZARF_VAR` for `variables` or prefixed with `###ZARF_CONST` for `constants` and suffixed with `###`. For example in a configmap that took a variable named `DATABASE_USERNAME` you would provide the following:
-
-```yaml
-apiVersion: v1
-kind: ConfigMap
-metadata:
- name: db-configmap
-data:
- username: ###ZARF_VAR_DATABASE_USERNAME###
-```
-
-In the `zarf.yaml`, you would need to define the variable in the `variables` section or as output from an action with `setVariable` with the same `name` as above. Or for a constant you would use the `constants` section. For the same example as above, you would have the following for a variable defined by the deploy user:
-
-```yaml
-variables:
- name: DATABASE_USERNAME
- description: 'The username for the database'
-```
-
-And the following for a variable defined as an output from an action:
-
-```yaml
-components:
- - name: set-variable-example
- actions:
- onDeploy:
- after:
- - cmd: echo "username-value"
- setVariables:
- - name: DATABASE_USERNAME
-```
-
-Zarf `variables` can also have additional fields that describe how Zarf will handle them which are described below:
-
-
-
-:::info
-
-Variables with `type: file` will be set to the filepath in `actions` due to constraints on the size of environment variables in the shell. This also allows for additional processing of the file by its filename.
-
-:::
-
-:::note
-
-The fields `default`, `description` and `prompt` are not available on `setVariables` since they always take the standard output of an action command and will not be interacted with directly by a deploy user.
-
-:::
-
-Zarf `constants` are similar but have fewer options as they are static by the time `zarf package deploy` is run:
-
-
-
-:::note
-
-All names must match the regex pattern `^[A-Z0-9_]+$` [Test](https://regex101.com/r/BG5ZqW/1)).
-
-:::
-
-:::tip
-
-When not specifying `default`, `prompt`, `sensitive`, `autoIndent`, or `type` Zarf will default to `default: ""`, `prompt: false`, `sensitive: false`, `autoIndent: false`, and `type: "raw"`
-
-:::
-
-For user-specified variables, you can also specify a `default` value for the variable to take in case a user does not provide one on deploy, and can specify whether to `prompt` the user for the variable when not using the `--confirm` or `--set` flags.
-
-```yaml
-variables:
- name: DATABASE_USERNAME
- default: 'postgres'
- prompt: true
-```
-
-:::note
-
-Variables that do not have a default, are not `--set` and are not prompted for during deploy will be replaced with an empty string in manifests/charts/files
-
-:::
-
-For constants, you must specify the value they will use at package create. These values cannot be overridden with `--set` during `zarf package deploy`, but you can use package template variables (described below) to variablize them during `zarf package create`.
-
-```yaml
-constants:
- name: DATABASE_TABLE
- value: 'users'
-```
-
-:::note
-
-`zarf package create` only templates the `zarf.yaml` file, and `zarf package deploy` only templates other manifests, charts and files
-
-:::
-
-## Create-Time Package Configuration Templates
-
-You can also specify package configuration templates at package create time by including `###_ZARF_PKG_TMPL_*###` as the value for any string-type data in your package definition. These values are discovered during `zarf package create` and will always be prompted for if not using `--confirm` or `--set`. An example of this is below:
-
-```yaml
-kind: ZarfPackageConfig
-metadata:
- name: 'pkg-variables'
- description: 'Prompt for a variables during package create'
-
-constants:
- - name: PROMPT_IMAGE
- value: '###ZARF_PKG_TMPL_PROMPT_ON_CREATE###'
-
-components:
- - name: zarf-prompt-image
- required: true
- images:
- - '###ZARF_PKG_TMPL_PROMPT_ON_CREATE###'
-```
-
-:::caution
-
-It is not recommended to use package configuration templates for any `sensitive` data as this will be baked into the package as plain text. Please use a deploy-time variable with the `sensitive` key set instead.
-
-:::
-
-:::note
-
-You can only template string values in this way as non-string values will not marshal/unmarshal properly through the yaml.
-
-:::
-
-:::note
-
-If you use `--confirm` and do not `--set` all of the package configuration templates you will receive an error
-
-:::
-
-:::note
-
-You cannot template the component import path using package configuration templates
-
-:::
-
-## `zarf.yaml` {#zarf.yaml}
-
-:::info
-
-To view the example in its entirety, select the `Edit this page` link below the article and select the parent folder.
-
-:::
-
-
diff --git a/examples/variables/simple-terraform.tf b/examples/variables/simple-terraform.tf
index 86061012ff..0640992f2e 100644
--- a/examples/variables/simple-terraform.tf
+++ b/examples/variables/simple-terraform.tf
@@ -8,7 +8,7 @@ terraform {
required_providers {
aws = {
source = "hashicorp/aws"
- version = "~> 5.6.0"
+ version = "~> 5.30.0"
}
}
}
diff --git a/examples/variables/zarf.yaml b/examples/variables/zarf.yaml
index 55ec9c5730..df2873b1c4 100644
--- a/examples/variables/zarf.yaml
+++ b/examples/variables/zarf.yaml
@@ -10,6 +10,7 @@ metadata:
constants:
- name: NGINX_VERSION
value: "###ZARF_PKG_TMPL_NGINX_VERSION###"
+ pattern: "^[\\w\\-\\.]+$"
# Demonstrates injecting custom variables into a K8s resource
variables:
@@ -26,11 +27,13 @@ variables:
- name: SITE_NAME
description: The name of the site you are deploying (i.e. Lula Website)
prompt: true
+ pattern: "^[\\w\\s\\-\\.]+$"
# ORGANIZATION sets the organization to Defense Unicorns as a default but prompts the user if they would like to override it
- name: ORGANIZATION
description: The organization providing the site
default: Defense Unicorns
prompt: true
+ pattern: "^[\\w\\s\\-\\.]+$"
# AWS_REGION sets the region to set in the modified-terraform file and sets `sensitive` so that it will not be saved in the log
- name: AWS_REGION
default: us-east-1
@@ -62,6 +65,8 @@ components:
- name: MODIFIED_TERRAFORM_SHASUM
# `sensitive` is set to exclude the command output from the logs
sensitive: true
+ # `pattern` here will ensure that we get a properly formatted sha256 sum back from the zarf prepare command
+ pattern: "^[\\da-f]{64}$"
# The following component deploys nginx to the cluster using the defined variables
- name: variables-with-nginx
@@ -85,3 +90,10 @@ components:
namespace: nginx
name: app=nginx
condition: Ready
+
+# YAML keys starting with `x-` are custom keys that are ignored by the Zarf CLI
+# The `x-mdx` key is used to render the markdown content for https://docs.zarf.dev/ref/examples
+x-mdx: |
+ This example demonstrates how to define `variables` and `constants` in your package that will be templated across the manifests and charts your package uses during `zarf package deploy` with `###ZARF_VAR_*###` and `###ZARF_CONST_*###`, and also shows how package configuration templates can be used in the `zarf.yaml` during `zarf package create` with `###ZARF_PKG_TMPL_*###`.
+
+ With these variables and templating features, you can define values in the `zarf.yaml` file without having to set them manually in every manifest and chart, and can prompt the deploy user for certain information you may want to make dynamic on `zarf package deploy`.
diff --git a/examples/wordpress/README.md b/examples/wordpress/README.md
deleted file mode 100644
index db526a3d2d..0000000000
--- a/examples/wordpress/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-import ExampleYAML from "@site/src/components/ExampleYAML";
-
-# WordPress
-
-This example demonstrates how to use Zarf to deploy a WordPress blog into a cluster. It is used as a part of the [Creating a Zarf Package](../../docs/5-zarf-tutorials/0-creating-a-zarf-package.md) and [Deploying a Zarf Package](../../docs/5-zarf-tutorials/2-deploying-zarf-packages.md) tutorials.
-
-## `zarf.yaml` {#zarf.yaml}
-
-:::info
-
-To view the example in its entirety, select the `Edit this page` link below the article and select the parent folder.
-
-:::
-
-
diff --git a/examples/wordpress/zarf.yaml b/examples/wordpress/zarf.yaml
index 9900bbd0e0..538be8304e 100644
--- a/examples/wordpress/zarf.yaml
+++ b/examples/wordpress/zarf.yaml
@@ -57,3 +57,10 @@ components:
namespace: wordpress
files:
- connect-services.yaml
+
+# YAML keys starting with `x-` are custom keys that are ignored by the Zarf CLI
+# The `x-mdx` key is used to render the markdown content for https://docs.zarf.dev/ref/examples
+x-mdx: |
+ This example demonstrates how to use Zarf to deploy a WordPress blog into a cluster.
+
+ It is used as a part of the [Creating a Zarf Package](/tutorials/0-creating-a-zarf-package/) and [Deploying a Zarf Package](/tutorials/2-deploying-zarf-packages/) tutorials.
diff --git a/examples/yolo/README.md b/examples/yolo/README.md
deleted file mode 100644
index accd86643c..0000000000
--- a/examples/yolo/README.md
+++ /dev/null
@@ -1,58 +0,0 @@
-import ExampleYAML from "@site/src/components/ExampleYAML";
-
-# YOLO Mode
-
-This example demonstrates YOLO mode, an optional mode for using Zarf in a fully connected environment where users can bring their own external container registry and Git server.
-
-## Prerequisites
-
-- A running K8s cluster.
-
-:::note
-
-The cluster does not need to have the Zarf init package installed or any other Zarf-related bootstrapping.
-
-:::
-
-## Instructions
-
-Create the package:
-
-```bash
-zarf package create
-```
-
-### Deploy the package
-
-```bash
-# Run the following command to deploy the created package to the cluster
-zarf package deploy
-
-# Choose the yolo package from the list
-? Choose or type the package file [tab for suggestions]
-> zarf-package-yolo-.tar.zst
-
-# Confirm the deployment
-? Deploy this Zarf package? (y/N)
-
-# Wait a few seconds for the cluster to deploy the package; you should
-# see the following output when the package has been finished deploying:
- Connect Command | Description
- zarf connect doom | Play doom!!!
- zarf connect games | Play some old dos games 🦄
-
-# Run the specified `zarf connect ` command to connect to the deployed
-# workload (ie. kill some demons). Note that the typical Zarf registry,
-# Gitea server and Zarf agent pods are not present in the cluster. This means
-# that the game's container image was pulled directly from the public registry and the URL was not mutated by Zarf.
-```
-
-## `zarf.yaml` {#zarf.yaml}
-
-:::info
-
-To view the example in its entirety, select the `Edit this page` link below the article and select the parent folder.
-
-:::
-
-
diff --git a/examples/yolo/zarf.yaml b/examples/yolo/zarf.yaml
index 2f7770c498..dfa4cf65f1 100644
--- a/examples/yolo/zarf.yaml
+++ b/examples/yolo/zarf.yaml
@@ -22,3 +22,45 @@ components:
name: game
namespace: zarf-yolo-example
condition: available
+
+# YAML keys starting with `x-` are custom keys that are ignored by the Zarf CLI
+# The `x-mdx` key is used to render the markdown content for https://docs.zarf.dev/ref/examples
+x-mdx: |
+ This example demonstrates YOLO mode, an optional mode for using Zarf in a fully connected environment where users can bring their own external container registry and Git server.
+
+ ## Prerequisites
+
+ - A running K8s cluster. (The cluster does not need to have the Zarf init package installed or any other Zarf-related bootstrapping.)
+
+ ## Instructions
+
+ Create the package:
+
+ ```bash
+ zarf package create examples/yolo
+ ```
+
+ ### Deploy the package
+
+ ```bash
+ # Run the following command to deploy the created package to the cluster
+ zarf package deploy
+
+ # Choose the yolo package from the list
+ ? Choose or type the package file [tab for suggestions]
+ > zarf-package-yolo-.tar.zst
+
+ # Confirm the deployment
+ ? Deploy this Zarf package? (y/N)
+
+ # Wait a few seconds for the cluster to deploy the package; you should
+ # see the following output when the package has been finished deploying:
+ Connect Command | Description
+ zarf connect doom | Play doom!!!
+ zarf connect games | Play some old dos games 🦄
+
+ # Run the specified `zarf connect ` command to connect to the deployed
+ # workload (ie. kill some demons). Note that the typical Zarf registry,
+ # Gitea server and Zarf agent pods are not present in the cluster. This means
+ # that the game's container image was pulled directly from the public registry and the URL was not mutated by Zarf.
+ ```
diff --git a/go.mod b/go.mod
index 2550cfce1b..6195416cbf 100644
--- a/go.mod
+++ b/go.mod
@@ -1,85 +1,105 @@
module github.com/defenseunicorns/zarf
-go 1.20
+go 1.22.4
-// TODO (@WSTARR) remove this temporary replacement of oras-go 1.2.2 with defenseunicorns version due to upgraded docker lib
-replace oras.land/oras-go v1.2.3 => github.com/defenseunicorns/oras-go v1.2.4-0.20230605015028-85c595ed4b64
+// TODO (@AABRO): Pending merge into github.com/gojsonschema/gojsonschema (https://github.com/gojsonschema/gojsonschema/pull/5)
+replace github.com/xeipuuv/gojsonschema => github.com/defenseunicorns/gojsonschema v0.0.0-20231116163348-e00f069122d6
require (
- cuelang.org/go v0.5.0
github.com/AlecAivazis/survey/v2 v2.3.7
github.com/Masterminds/semver/v3 v3.2.1
- github.com/alecthomas/jsonschema v0.0.0-20220216202328-9eeeec9d044b
- github.com/anchore/stereoscope v0.0.0-20230727211946-d1f3d766295e
- github.com/anchore/syft v0.84.1
- github.com/derailed/k9s v0.27.4
- github.com/distribution/distribution v2.8.2+incompatible
- github.com/docker/cli v24.0.2+incompatible
- github.com/fairwindsops/pluto/v5 v5.17.0
- github.com/fatih/color v1.15.0
- github.com/fluxcd/helm-controller/api v0.35.0
- github.com/fluxcd/source-controller/api v1.0.1
- github.com/go-chi/chi/v5 v5.0.8
- github.com/go-git/go-git/v5 v5.7.0
- github.com/go-logr/logr v1.2.4
- github.com/goccy/go-yaml v1.11.0
+ github.com/agnivade/levenshtein v1.1.1
+ github.com/anchore/clio v0.0.0-20240408173007-3c4abf89e72f
+ github.com/anchore/stereoscope v0.0.1
+ github.com/anchore/syft v0.100.0
+ github.com/defenseunicorns/pkg/helpers v1.1.3
+ github.com/defenseunicorns/pkg/helpers/v2 v2.0.1
+ github.com/defenseunicorns/pkg/kubernetes v0.0.1
+ github.com/defenseunicorns/pkg/oci v1.0.1
+ github.com/derailed/k9s v0.31.7
+ github.com/distribution/reference v0.5.0
+ github.com/fairwindsops/pluto/v5 v5.18.4
+ github.com/fatih/color v1.16.0
+ github.com/fluxcd/helm-controller/api v0.37.4
+ github.com/fluxcd/pkg/apis/meta v1.5.0
+ github.com/fluxcd/source-controller/api v1.3.0
+ github.com/go-git/go-git/v5 v5.11.0
+ github.com/goccy/go-yaml v1.11.3
github.com/gofrs/flock v0.8.1
- github.com/google/go-containerregistry v0.15.2
+ github.com/google/go-containerregistry v0.19.0
github.com/gosuri/uitable v0.0.4
+ github.com/invopop/jsonschema v0.12.0
github.com/mholt/archiver/v3 v3.5.1
- github.com/moby/moby v24.0.2+incompatible
- github.com/opencontainers/image-spec v1.1.0-rc4
- github.com/otiai10/copy v1.12.0
+ github.com/moby/moby v24.0.9+incompatible
+ github.com/opencontainers/image-spec v1.1.0
github.com/pkg/errors v0.9.1
- github.com/prometheus/client_golang v1.15.1
- github.com/pterm/pterm v0.12.62
+ github.com/prometheus/client_golang v1.18.0
+ github.com/pterm/pterm v0.12.78
github.com/sergi/go-diff v1.3.1
- github.com/sigstore/cosign v1.13.1
- github.com/sigstore/sigstore v1.4.4
- github.com/spf13/cobra v1.7.0
+ github.com/sigstore/cosign/v2 v2.2.3
+ github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.1
+ github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.1
+ github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.8.1
+ github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.1
+ github.com/spf13/cobra v1.8.0
github.com/spf13/pflag v1.0.5
- github.com/spf13/viper v1.16.0
- github.com/stretchr/testify v1.8.4
- golang.org/x/crypto v0.12.0
- golang.org/x/sync v0.3.0
- golang.org/x/term v0.11.0
- helm.sh/helm/v3 v3.12.2
- k8s.io/api v0.27.4
- k8s.io/apimachinery v0.27.4
- k8s.io/client-go v0.27.4
- k8s.io/component-base v0.27.4
- k8s.io/klog/v2 v2.100.1
- k8s.io/kubectl v0.27.4
- oras.land/oras-go/v2 v2.2.1
- sigs.k8s.io/kustomize/api v0.13.4
- sigs.k8s.io/kustomize/kyaml v0.14.2
- sigs.k8s.io/yaml v1.3.0
+ github.com/spf13/viper v1.18.2
+ github.com/stretchr/testify v1.9.0
+ github.com/xeipuuv/gojsonschema v1.2.0
+ golang.org/x/crypto v0.24.0
+ golang.org/x/sync v0.7.0
+ golang.org/x/term v0.21.0
+ helm.sh/helm/v3 v3.14.2
+ k8s.io/api v0.30.0
+ k8s.io/apimachinery v0.30.0
+ k8s.io/client-go v0.30.0
+ k8s.io/component-base v0.30.0
+ k8s.io/klog/v2 v2.120.1
+ k8s.io/kubectl v0.29.1
+ oras.land/oras-go/v2 v2.5.0
+ sigs.k8s.io/cli-utils v0.36.0
+ sigs.k8s.io/kustomize/api v0.16.0
+ sigs.k8s.io/kustomize/kyaml v0.16.0
+ sigs.k8s.io/yaml v1.4.0
)
require (
- atomicgo.dev/cursor v0.1.1 // indirect
+ atomicgo.dev/cursor v0.2.0 // indirect
atomicgo.dev/keyboard v0.2.9 // indirect
- atomicgo.dev/schedule v0.0.2 // indirect
- cloud.google.com/go/compute v1.19.1 // indirect
- cloud.google.com/go/compute/metadata v0.2.3 // indirect
- cloud.google.com/go/iam v0.13.0 // indirect
- cloud.google.com/go/kms v1.10.1 // indirect
- github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 // indirect
+ atomicgo.dev/schedule v0.1.0 // indirect
+ cloud.google.com/go v0.115.0 // indirect
+ cloud.google.com/go/auth v0.6.0 // indirect
+ cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect
+ cloud.google.com/go/compute/metadata v0.3.0 // indirect
+ cloud.google.com/go/iam v1.1.9 // indirect
+ cloud.google.com/go/kms v1.18.0 // indirect
+ cloud.google.com/go/longrunning v0.5.7 // indirect
+ cloud.google.com/go/storage v1.42.0 // indirect
+ cuelabs.dev/go/oci/ociregistry v0.0.0-20231103182354-93e78c079a13 // indirect
+ cuelang.org/go v0.7.0 // indirect
+ dario.cat/mergo v1.0.0 // indirect
+ filippo.io/edwards25519 v1.1.0 // indirect
+ github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect
+ github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0 // indirect
github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/alibabacloudsdkgo/helper v0.2.0 // indirect
- github.com/Azure/azure-sdk-for-go v66.0.0+incompatible // indirect
- github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
+ github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/azcore v1.12.0 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/internal v1.9.0 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.1 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0 // indirect
+ github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
- github.com/Azure/go-autorest/autorest v0.11.28 // indirect
- github.com/Azure/go-autorest/autorest/adal v0.9.21 // indirect
- github.com/Azure/go-autorest/autorest/azure/auth v0.5.11 // indirect
+ github.com/Azure/go-autorest/autorest v0.11.29 // indirect
+ github.com/Azure/go-autorest/autorest/adal v0.9.23 // indirect
+ github.com/Azure/go-autorest/autorest/azure/auth v0.5.12 // indirect
github.com/Azure/go-autorest/autorest/azure/cli v0.4.6 // indirect
github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
- github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect
- github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect
github.com/Azure/go-autorest/logger v0.2.1 // indirect
github.com/Azure/go-autorest/tracing v0.6.0 // indirect
- github.com/BurntSushi/toml v1.2.1 // indirect
- github.com/CycloneDX/cyclonedx-go v0.7.1 // indirect
+ github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect
+ github.com/BurntSushi/toml v1.3.2 // indirect
+ github.com/CycloneDX/cyclonedx-go v0.8.0 // indirect
github.com/DataDog/zstd v1.4.5 // indirect
github.com/MakeNowJust/heredoc v1.0.0 // indirect
github.com/Masterminds/goutils v1.1.1 // indirect
@@ -87,191 +107,228 @@ require (
github.com/Masterminds/sprig/v3 v3.2.3 // indirect
github.com/Masterminds/squirrel v1.5.4 // indirect
github.com/Microsoft/go-winio v0.6.1 // indirect
+ github.com/Microsoft/hcsshim v0.11.4 // indirect
github.com/OneOfOne/xxhash v1.2.8 // indirect
- github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903 // indirect
+ github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c // indirect
github.com/ThalesIgnite/crypto11 v1.2.5 // indirect
+ github.com/a8m/envsubst v1.4.2 // indirect
+ github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d // indirect
github.com/acobaugh/osrelease v0.1.0 // indirect
- github.com/acomagu/bufpipe v1.0.4 // indirect
github.com/adrg/xdg v0.4.0 // indirect
- github.com/agnivade/levenshtein v1.1.1 // indirect
+ github.com/alecthomas/participle/v2 v2.1.1 // indirect
github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.4 // indirect
github.com/alibabacloud-go/cr-20160607 v1.0.1 // indirect
github.com/alibabacloud-go/cr-20181201 v1.0.10 // indirect
- github.com/alibabacloud-go/darabonba-openapi v0.1.18 // indirect
- github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68 // indirect
+ github.com/alibabacloud-go/darabonba-openapi v0.2.1 // indirect
+ github.com/alibabacloud-go/debug v1.0.0 // indirect
github.com/alibabacloud-go/endpoint-util v1.1.1 // indirect
- github.com/alibabacloud-go/openapi-util v0.0.11 // indirect
- github.com/alibabacloud-go/tea v1.1.18 // indirect
- github.com/alibabacloud-go/tea-utils v1.4.4 // indirect
- github.com/alibabacloud-go/tea-xml v1.1.2 // indirect
- github.com/aliyun/credentials-go v1.2.3 // indirect
- github.com/anchore/go-logger v0.0.0-20230531193951-db5ae83e7dbe // indirect
+ github.com/alibabacloud-go/openapi-util v0.1.0 // indirect
+ github.com/alibabacloud-go/tea v1.2.1 // indirect
+ github.com/alibabacloud-go/tea-utils v1.4.5 // indirect
+ github.com/alibabacloud-go/tea-xml v1.1.3 // indirect
+ github.com/aliyun/credentials-go v1.3.1 // indirect
+ github.com/anchore/bubbly v0.0.0-20231115134915-def0aba654a9 // indirect
+ github.com/anchore/fangs v0.0.0-20231201140849-5075d28d6d8b // indirect
+ github.com/anchore/go-logger v0.0.0-20230725134548-c21dafa1ec5a // indirect
github.com/anchore/go-macholibre v0.0.0-20220308212642-53e6d0aaf6fb // indirect
github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 // indirect
- github.com/anchore/go-version v1.2.2-0.20200701162849-18adb9c92b9b // indirect
+ github.com/anchore/go-version v1.2.2-0.20210903204242-51efa5b487c4 // indirect
+ github.com/anchore/grype v0.74.0 // indirect
github.com/anchore/packageurl-go v0.1.1-0.20230104203445-02e0a6721501 // indirect
- github.com/andybalholm/brotli v1.0.4 // indirect
- github.com/armon/go-metrics v0.4.1 // indirect
- github.com/armon/go-radix v1.0.0 // indirect
+ github.com/andybalholm/brotli v1.0.6 // indirect
+ github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
+ github.com/aquasecurity/go-pep440-version v0.0.0-20210121094942-22b2f8951d46 // indirect
+ github.com/aquasecurity/go-version v0.0.0-20210121072130-637058cfe492 // indirect
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
github.com/atotto/clipboard v0.1.4 // indirect
- github.com/aws/aws-sdk-go v1.44.217 // indirect
- github.com/aws/aws-sdk-go-v2 v1.16.16 // indirect
- github.com/aws/aws-sdk-go-v2/config v1.17.8 // indirect
- github.com/aws/aws-sdk-go-v2/credentials v1.12.21 // indirect
- github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.17 // indirect
- github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.23 // indirect
- github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.17 // indirect
- github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24 // indirect
- github.com/aws/aws-sdk-go-v2/service/ecr v1.15.0 // indirect
- github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.12.0 // indirect
- github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17 // indirect
- github.com/aws/aws-sdk-go-v2/service/kms v1.18.11 // indirect
- github.com/aws/aws-sdk-go-v2/service/sso v1.11.23 // indirect
- github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.6 // indirect
- github.com/aws/aws-sdk-go-v2/service/sts v1.16.19 // indirect
- github.com/aws/smithy-go v1.13.3 // indirect
- github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20220517224237-e6f29200ae04 // indirect
+ github.com/aws/aws-sdk-go v1.54.9 // indirect
+ github.com/aws/aws-sdk-go-v2 v1.24.1 // indirect
+ github.com/aws/aws-sdk-go-v2/config v1.26.6 // indirect
+ github.com/aws/aws-sdk-go-v2/credentials v1.16.16 // indirect
+ github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.11 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.10 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.10 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/ini v1.7.3 // indirect
+ github.com/aws/aws-sdk-go-v2/service/ecr v1.20.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.18.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4 // indirect
+ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.10 // indirect
+ github.com/aws/aws-sdk-go-v2/service/kms v1.27.9 // indirect
+ github.com/aws/aws-sdk-go-v2/service/sso v1.18.7 // indirect
+ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.7 // indirect
+ github.com/aws/aws-sdk-go-v2/service/sts v1.26.7 // indirect
+ github.com/aws/smithy-go v1.19.0 // indirect
+ github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20231024185945-8841054dbdb8 // indirect
+ github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
+ github.com/bahlo/generic-list-go v0.2.0 // indirect
github.com/becheran/wildmatch-go v1.0.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
+ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
github.com/blang/semver v3.5.1+incompatible // indirect
github.com/blang/semver/v4 v4.0.0 // indirect
- github.com/bmatcuk/doublestar/v4 v4.6.0 // indirect
+ github.com/bmatcuk/doublestar/v2 v2.0.4 // indirect
+ github.com/bmatcuk/doublestar/v4 v4.6.1 // indirect
+ github.com/buger/jsonparser v1.1.1 // indirect
+ github.com/buildkite/agent/v3 v3.62.0 // indirect
+ github.com/buildkite/go-pipeline v0.3.2 // indirect
+ github.com/buildkite/interpolate v0.0.0-20200526001904-07f35b4ae251 // indirect
github.com/cenkalti/backoff/v3 v3.2.2 // indirect
- github.com/cenkalti/backoff/v4 v4.2.0 // indirect
+ github.com/cenkalti/backoff/v4 v4.2.1 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/chai2010/gettext-go v1.0.2 // indirect
- github.com/chrismellard/docker-credential-acr-env v0.0.0-20220119192733-fe33c00cee21 // indirect
- github.com/clbanning/mxj/v2 v2.5.6 // indirect
- github.com/cloudflare/circl v1.3.3 // indirect
- github.com/cockroachdb/apd/v2 v2.0.2 // indirect
+ github.com/charmbracelet/bubbles v0.16.1 // indirect
+ github.com/charmbracelet/bubbletea v0.25.0 // indirect
+ github.com/charmbracelet/harmonica v0.2.0 // indirect
+ github.com/charmbracelet/lipgloss v0.9.1 // indirect
+ github.com/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb27589 // indirect
+ github.com/clbanning/mxj/v2 v2.7.0 // indirect
+ github.com/cloudflare/circl v1.3.7 // indirect
+ github.com/cockroachdb/apd/v3 v3.2.1 // indirect
github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be // indirect
+ github.com/containerd/cgroups v1.1.0 // indirect
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect
- github.com/containerd/containerd v1.7.1 // indirect
+ github.com/containerd/containerd v1.7.12 // indirect
+ github.com/containerd/continuity v0.4.2 // indirect
+ github.com/containerd/fifo v1.1.0 // indirect
+ github.com/containerd/log v0.1.0 // indirect
github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect
- github.com/coreos/go-oidc/v3 v3.4.0 // indirect
- github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
- github.com/cyberphone/json-canonicalization v0.0.0-20210823021906-dc406ceaf94b // indirect
- github.com/cyphar/filepath-securejoin v0.2.3 // indirect
- github.com/davecgh/go-spew v1.1.1 // indirect
+ github.com/containerd/ttrpc v1.2.2 // indirect
+ github.com/containerd/typeurl/v2 v2.1.1 // indirect
+ github.com/coreos/go-oidc/v3 v3.9.0 // indirect
+ github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect
+ github.com/cyberphone/json-canonicalization v0.0.0-20231011164504-785e29786b46 // indirect
+ github.com/cyphar/filepath-securejoin v0.2.4 // indirect
+ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/daviddengcn/go-colortext v1.0.0 // indirect
github.com/deitch/magic v0.0.0-20230404182410-1ff89d7342da // indirect
- github.com/derailed/popeye v0.11.1 // indirect
+ github.com/derailed/popeye v0.11.2 // indirect
github.com/derailed/tcell/v2 v2.3.1-rc.3 // indirect
- github.com/derailed/tview v0.8.1 // indirect
+ github.com/derailed/tview v0.8.3 // indirect
+ github.com/digitorus/pkcs7 v0.0.0-20230818184609-3a137a874352 // indirect
+ github.com/digitorus/timestamp v0.0.0-20231217203849-220c5c2851b7 // indirect
github.com/dimchansky/utfbom v1.1.1 // indirect
- github.com/docker/distribution v2.8.2+incompatible // indirect
- github.com/docker/docker v24.0.2+incompatible // indirect
- github.com/docker/docker-credential-helpers v0.7.0 // indirect
+ github.com/docker/cli v26.0.0+incompatible // indirect
+ github.com/docker/distribution v2.8.3+incompatible // indirect
+ github.com/docker/docker v24.0.9+incompatible // indirect
+ github.com/docker/docker-credential-helpers v0.8.0 // indirect
github.com/docker/go-connections v0.4.0 // indirect
+ github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c // indirect
github.com/docker/go-metrics v0.0.1 // indirect
github.com/docker/go-units v0.5.0 // indirect
github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
- github.com/emicklei/go-restful/v3 v3.10.2 // indirect
- github.com/emicklei/proto v1.10.0 // indirect
+ github.com/edsrzf/mmap-go v1.1.0 // indirect
+ github.com/elliotchance/orderedmap v1.5.1 // indirect
+ github.com/emicklei/go-restful/v3 v3.11.0 // indirect
+ github.com/emicklei/proto v1.12.1 // indirect
github.com/emirpasic/gods v1.18.1 // indirect
- github.com/evanphx/json-patch v5.6.0+incompatible // indirect
+ github.com/evanphx/json-patch v5.7.0+incompatible // indirect
+ github.com/evanphx/json-patch/v5 v5.9.0 // indirect
github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d // indirect
github.com/facebookincubator/nvdtools v0.1.5 // indirect
github.com/fatih/camelcase v1.0.0 // indirect
- github.com/fluxcd/pkg/apis/acl v0.1.0 // indirect
- github.com/fluxcd/pkg/apis/kustomize v1.1.1 // indirect
- github.com/fluxcd/pkg/apis/meta v1.1.1 // indirect
- github.com/fsnotify/fsnotify v1.6.0 // indirect
- github.com/fvbommel/sortorder v1.0.2 // indirect
- github.com/gabriel-vasile/mimetype v1.4.0 // indirect
+ github.com/felixge/fgprof v0.9.3 // indirect
+ github.com/felixge/httpsnoop v1.0.4 // indirect
+ github.com/fluxcd/pkg/apis/acl v0.3.0 // indirect
+ github.com/fluxcd/pkg/apis/kustomize v1.3.0 // indirect
+ github.com/fsnotify/fsnotify v1.7.0 // indirect
+ github.com/fvbommel/sortorder v1.1.0 // indirect
+ github.com/gabriel-vasile/mimetype v1.4.3 // indirect
github.com/gdamore/encoding v1.0.0 // indirect
- github.com/ghodss/yaml v1.0.0 // indirect
- github.com/github/go-spdx/v2 v2.1.2 // indirect
+ github.com/github/go-spdx/v2 v2.2.0 // indirect
+ github.com/glebarez/go-sqlite v1.21.2 // indirect
+ github.com/glebarez/sqlite v1.10.0 // indirect
github.com/go-chi/chi v4.1.2+incompatible // indirect
github.com/go-errors/errors v1.4.2 // indirect
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
- github.com/go-git/go-billy/v5 v5.4.1 // indirect
+ github.com/go-git/go-billy/v5 v5.5.0 // indirect
github.com/go-gorp/gorp/v3 v3.1.0 // indirect
+ github.com/go-ini/ini v1.67.0 // indirect
+ github.com/go-jose/go-jose/v3 v3.0.3 // indirect
+ github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
- github.com/go-openapi/analysis v0.21.4 // indirect
- github.com/go-openapi/errors v0.20.3 // indirect
- github.com/go-openapi/jsonpointer v0.19.6 // indirect
- github.com/go-openapi/jsonreference v0.20.2 // indirect
- github.com/go-openapi/loads v0.21.2 // indirect
- github.com/go-openapi/runtime v0.24.2 // indirect
- github.com/go-openapi/spec v0.20.7 // indirect
- github.com/go-openapi/strfmt v0.21.3 // indirect
- github.com/go-openapi/swag v0.22.3 // indirect
- github.com/go-openapi/validate v0.22.0 // indirect
- github.com/go-piv/piv-go v1.10.0 // indirect
- github.com/go-playground/locales v0.14.0 // indirect
- github.com/go-playground/universal-translator v0.18.0 // indirect
- github.com/go-playground/validator/v10 v10.11.0 // indirect
+ github.com/go-openapi/analysis v0.22.0 // indirect
+ github.com/go-openapi/errors v0.21.0 // indirect
+ github.com/go-openapi/jsonpointer v0.20.2 // indirect
+ github.com/go-openapi/jsonreference v0.20.4 // indirect
+ github.com/go-openapi/loads v0.21.5 // indirect
+ github.com/go-openapi/runtime v0.27.1 // indirect
+ github.com/go-openapi/spec v0.20.13 // indirect
+ github.com/go-openapi/strfmt v0.22.0 // indirect
+ github.com/go-openapi/swag v0.22.9 // indirect
+ github.com/go-openapi/validate v0.22.4 // indirect
+ github.com/go-piv/piv-go v1.11.0 // indirect
github.com/go-restruct/restruct v1.2.0-alpha // indirect
+ github.com/go-test/deep v1.1.0 // indirect
github.com/gobwas/glob v0.2.3 // indirect
+ github.com/goccy/go-json v0.10.2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
- github.com/golang/glog v1.1.0 // indirect
+ github.com/golang-jwt/jwt/v5 v5.2.1 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
- github.com/golang/protobuf v1.5.3 // indirect
+ github.com/golang/protobuf v1.5.4 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/btree v1.1.2 // indirect
- github.com/google/certificate-transparency-go v1.1.6 // indirect
- github.com/google/gnostic v0.6.9 // indirect
- github.com/google/go-cmp v0.5.9 // indirect
- github.com/google/go-github/v45 v45.2.0 // indirect
+ github.com/google/certificate-transparency-go v1.1.7 // indirect
+ github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 // indirect
+ github.com/google/go-cmp v0.6.0 // indirect
+ github.com/google/go-github/v55 v55.0.0 // indirect
github.com/google/go-querystring v1.1.0 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/licensecheck v0.3.1 // indirect
- github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 // indirect
- github.com/google/s2a-go v0.1.3 // indirect
+ github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b // indirect
+ github.com/google/s2a-go v0.1.7 // indirect
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
- github.com/google/trillian v1.5.2 // indirect
- github.com/google/uuid v1.3.0 // indirect
- github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect
- github.com/googleapis/gax-go/v2 v2.8.0 // indirect
- github.com/gookit/color v1.5.3 // indirect
- github.com/gorilla/mux v1.8.0 // indirect
+ github.com/google/uuid v1.6.0
+ github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
+ github.com/googleapis/gax-go/v2 v2.12.5 // indirect
+ github.com/gookit/color v1.5.4 // indirect
+ github.com/gorilla/mux v1.8.1 // indirect
+ github.com/gorilla/websocket v1.5.0 // indirect
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 // indirect
+ github.com/hako/durafmt v0.0.0-20210608085754-5c1018a4e16b // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
- github.com/hashicorp/go-hclog v1.3.1 // indirect
- github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
+ github.com/hashicorp/go-getter v1.7.5 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
- github.com/hashicorp/go-plugin v1.4.5 // indirect
- github.com/hashicorp/go-retryablehttp v0.7.1 // indirect
+ github.com/hashicorp/go-retryablehttp v0.7.7 // indirect
github.com/hashicorp/go-rootcerts v1.0.2 // indirect
- github.com/hashicorp/go-secure-stdlib/mlock v0.1.2 // indirect
+ github.com/hashicorp/go-safetemp v1.0.0 // indirect
github.com/hashicorp/go-secure-stdlib/parseutil v0.1.7 // indirect
github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect
- github.com/hashicorp/go-sockaddr v1.0.2 // indirect
- github.com/hashicorp/go-uuid v1.0.3 // indirect
- github.com/hashicorp/go-version v1.6.0 // indirect
- github.com/hashicorp/golang-lru v0.5.4 // indirect
- github.com/hashicorp/hcl v1.0.0 // indirect
- github.com/hashicorp/vault/api v1.8.0 // indirect
- github.com/hashicorp/vault/sdk v0.6.0 // indirect
- github.com/hashicorp/yamux v0.1.1 // indirect
+ github.com/hashicorp/go-sockaddr v1.0.5 // indirect
+ github.com/hashicorp/go-version v1.7.0 // indirect
+ github.com/hashicorp/hcl v1.0.1-vault-5 // indirect
+ github.com/hashicorp/vault/api v1.10.0 // indirect
github.com/huandu/xstrings v1.4.0 // indirect
- github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 // indirect
- github.com/imdario/mergo v0.3.15 // indirect
- github.com/in-toto/in-toto-golang v0.3.4-0.20220709202702-fa494aaa0add // indirect
+ github.com/iancoleman/strcase v0.3.0 // indirect
+ github.com/imdario/mergo v0.3.16 // indirect
+ github.com/in-toto/in-toto-golang v0.9.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
- github.com/jedisct1/go-minisign v0.0.0-20211028175153-1c139d1cc84b // indirect
- github.com/jellydator/ttlcache/v2 v2.11.1 // indirect
- github.com/jinzhu/copier v0.3.5 // indirect
+ github.com/jedisct1/go-minisign v0.0.0-20230811132847-661be99b8267 // indirect
+ github.com/jellydator/ttlcache/v3 v3.1.1 // indirect
+ github.com/jinzhu/copier v0.4.0 // indirect
+ github.com/jinzhu/inflection v1.0.0 // indirect
+ github.com/jinzhu/now v1.1.5 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/jmoiron/sqlx v1.3.5 // indirect
- github.com/jonboulle/clockwork v0.3.0 // indirect
+ github.com/jonboulle/clockwork v0.4.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
+ github.com/kastenhq/goversion v0.0.0-20230811215019-93b2f8823953 // indirect
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
github.com/kevinburke/ssh_config v1.2.0 // indirect
- github.com/klauspost/compress v1.16.5 // indirect
- github.com/klauspost/pgzip v1.2.5 // indirect
+ github.com/klauspost/compress v1.17.9 // indirect
+ github.com/klauspost/cpuid/v2 v2.2.5 // indirect
+ github.com/klauspost/pgzip v1.2.6 // indirect
+ github.com/knqyf263/go-apk-version v0.0.0-20200609155635-041fdbb8563f // indirect
+ github.com/knqyf263/go-deb-version v0.0.0-20190517075300-09fca494f03d // indirect
github.com/knqyf263/go-rpmdb v0.0.0-20230301153543-ba94b245509b // indirect
+ github.com/kylelemons/godebug v1.1.0 // indirect
github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect
github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect
- github.com/leodido/go-urn v1.2.1 // indirect
- github.com/letsencrypt/boulder v0.0.0-20220929215747-76583552c2be // indirect
+ github.com/letsencrypt/boulder v0.0.0-20231026200631-000cd05d5491 // indirect
github.com/lib/pq v1.10.9 // indirect
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect
github.com/lithammer/dedent v1.1.0 // indirect
@@ -279,14 +336,17 @@ require (
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
github.com/magiconair/properties v1.8.7 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
+ github.com/masahiro331/go-mvn-version v0.0.0-20210429150710-d3157d602a08 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
- github.com/mattn/go-isatty v0.0.18 // indirect
- github.com/mattn/go-runewidth v0.0.14 // indirect
+ github.com/mattn/go-isatty v0.0.20 // indirect
+ github.com/mattn/go-localereader v0.0.2-0.20220822084749-2491eb6c1c75 // indirect
+ github.com/mattn/go-runewidth v0.0.15 // indirect
github.com/mattn/go-sqlite3 v2.0.3+incompatible // indirect
- github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
+ github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect
github.com/microsoft/go-rustaudit v0.0.0-20220730194248-4b17361d90a5 // indirect
github.com/miekg/pkcs11 v1.1.1 // indirect
+ github.com/mikefarah/yq/v4 v4.43.1
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/go-testing-interface v1.14.1 // indirect
@@ -296,127 +356,166 @@ require (
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/moby/locker v1.0.1 // indirect
github.com/moby/spdystream v0.2.0 // indirect
- github.com/moby/term v0.0.0-20221205130635-1aeaba878587 // indirect
+ github.com/moby/sys/mountinfo v0.6.2 // indirect
+ github.com/moby/sys/sequential v0.5.0 // indirect
+ github.com/moby/sys/signal v0.7.0 // indirect
+ github.com/moby/sys/user v0.1.0 // indirect
+ github.com/moby/term v0.5.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect
github.com/morikuni/aec v1.0.0 // indirect
github.com/mozillazg/docker-credential-acr-helper v0.3.0 // indirect
github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de // indirect
+ github.com/muesli/ansi v0.0.0-20211031195517-c9f0611b6c70 // indirect
+ github.com/muesli/cancelreader v0.2.2 // indirect
+ github.com/muesli/reflow v0.3.0 // indirect
+ github.com/muesli/termenv v0.15.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
+ github.com/nozzle/throttler v0.0.0-20180817012639-2ea982251481 // indirect
github.com/nwaples/rardecode v1.1.0 // indirect
- github.com/oklog/run v1.1.0 // indirect
github.com/oklog/ulid v1.3.1 // indirect
+ github.com/oleiade/reflections v1.0.1 // indirect
github.com/olekukonko/tablewriter v0.0.5 // indirect
- github.com/open-policy-agent/opa v0.45.0 // indirect
+ github.com/open-policy-agent/opa v0.61.0 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
+ github.com/opencontainers/runtime-spec v1.1.0 // indirect
+ github.com/opencontainers/selinux v1.11.0 // indirect
github.com/opentracing/opentracing-go v1.2.0 // indirect
+ github.com/openvex/go-vex v0.2.5 // indirect
+ github.com/otiai10/copy v1.14.0
+ github.com/owenrumney/go-sarif v1.1.2-0.20231003122901-1000f5e05554 // indirect
+ github.com/package-url/packageurl-go v0.1.1 // indirect
+ github.com/pborman/indent v1.2.1 // indirect
+ github.com/pborman/uuid v1.2.1 // indirect
github.com/pelletier/go-toml v1.9.5 // indirect
- github.com/pelletier/go-toml/v2 v2.0.8 // indirect
+ github.com/pelletier/go-toml/v2 v2.2.0 // indirect
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
- github.com/pierrec/lz4 v2.6.1+incompatible // indirect
- github.com/pierrec/lz4/v4 v4.1.15 // indirect
+ github.com/pierrec/lz4/v4 v4.1.18 // indirect
github.com/pjbgf/sha1cd v0.3.0 // indirect
- github.com/pmezard/go-difflib v1.0.0 // indirect
- github.com/prometheus/client_model v0.4.0 // indirect
- github.com/prometheus/common v0.42.0 // indirect
- github.com/prometheus/procfs v0.9.0 // indirect
- github.com/protocolbuffers/txtpbfmt v0.0.0-20220428173112-74888fd59c2b // indirect
+ github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
+ github.com/pkg/profile v1.7.0 // indirect
+ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
+ github.com/prometheus/client_model v0.5.0 // indirect
+ github.com/prometheus/common v0.45.0 // indirect
+ github.com/prometheus/procfs v0.12.0 // indirect
+ github.com/protocolbuffers/txtpbfmt v0.0.0-20231025115547-084445ff1adf // indirect
github.com/rakyll/hey v0.1.4 // indirect
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
+ github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
github.com/rivo/uniseg v0.4.4 // indirect
- github.com/rs/zerolog v1.29.1 // indirect
- github.com/rubenv/sql-migrate v1.4.0 // indirect
+ github.com/rs/zerolog v1.31.0 // indirect
+ github.com/rubenv/sql-migrate v1.5.2 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/ryanuber/go-glob v1.0.0 // indirect
+ github.com/saferwall/pe v1.4.8 // indirect
+ github.com/sagikazarmark/locafero v0.4.0 // indirect
+ github.com/sagikazarmark/slog-shim v0.1.0 // indirect
github.com/sahilm/fuzzy v0.1.0 // indirect
+ github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d // indirect
github.com/sassoftware/go-rpmutils v0.2.0 // indirect
- github.com/sassoftware/relic v0.0.0-20210427151427-dfb082b79b74 // indirect
+ github.com/sassoftware/relic v7.2.1+incompatible // indirect
github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e // indirect
- github.com/secure-systems-lab/go-securesystemslib v0.4.0 // indirect
+ github.com/secure-systems-lab/go-securesystemslib v0.8.0 // indirect
github.com/segmentio/ksuid v1.0.4 // indirect
github.com/shibumi/go-pathspec v1.3.0 // indirect
github.com/shopspring/decimal v1.3.1 // indirect
- github.com/sigstore/fulcio v0.6.0 // indirect
- github.com/sigstore/rekor v0.12.1-0.20220915152154-4bb6f441c1b2 // indirect
+ github.com/sigstore/fulcio v1.4.3 // indirect
+ github.com/sigstore/rekor v1.3.4 // indirect
+ github.com/sigstore/sigstore v1.8.1 // indirect
+ github.com/sigstore/timestamp-authority v1.2.1 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
- github.com/skeema/knownhosts v1.1.1 // indirect
+ github.com/skeema/knownhosts v1.2.1 // indirect
github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 // indirect
- github.com/spdx/tools-golang v0.5.2 // indirect
- github.com/spf13/afero v1.9.5 // indirect
- github.com/spf13/cast v1.5.1 // indirect
- github.com/spf13/jwalterweatherman v1.1.0 // indirect
- github.com/spiffe/go-spiffe/v2 v2.1.1 // indirect
- github.com/subosito/gotenv v1.4.2 // indirect
- github.com/sylabs/sif/v2 v2.8.1 // indirect
+ github.com/sourcegraph/conc v0.3.0 // indirect
+ github.com/spdx/tools-golang v0.5.3 // indirect
+ github.com/spf13/afero v1.11.0 // indirect
+ github.com/spf13/cast v1.6.0 // indirect
+ github.com/spiffe/go-spiffe/v2 v2.1.7 // indirect
+ github.com/subosito/gotenv v1.6.0 // indirect
+ github.com/sylabs/sif/v2 v2.11.5 // indirect
github.com/sylabs/squashfs v0.6.1 // indirect
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect
github.com/tchap/go-patricia/v2 v2.3.1 // indirect
- github.com/tent/canonical-json-go v0.0.0-20130607151641-96e4ba3a7613 // indirect
github.com/thales-e-security/pool v0.0.2 // indirect
github.com/therootcompany/xz v1.0.1 // indirect
- github.com/theupdateframework/go-tuf v0.5.2-0.20220930112810-3890c1e7ace4 // indirect
- github.com/tidwall/pretty v1.2.1 // indirect
+ github.com/theupdateframework/go-tuf v0.7.0 // indirect
github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 // indirect
- github.com/tjfoc/gmsm v1.3.2 // indirect
+ github.com/tjfoc/gmsm v1.4.1 // indirect
github.com/transparency-dev/merkle v0.0.2 // indirect
- github.com/ulikunitz/xz v0.5.10 // indirect
+ github.com/ulikunitz/xz v0.5.12 // indirect
github.com/vbatts/go-mtree v0.5.3 // indirect
- github.com/vbatts/tar-split v0.11.3 // indirect
- github.com/vifraa/gopom v0.2.1 // indirect
+ github.com/vbatts/tar-split v0.11.5 // indirect
+ github.com/vifraa/gopom v1.0.0 // indirect
github.com/wagoodman/go-partybus v0.0.0-20230516145632-8ccac152c651 // indirect
- github.com/wagoodman/go-progress v0.0.0-20230301185719-21920a456ad5 // indirect
- github.com/wagoodman/jotframe v0.0.0-20211129225309-56b0d0a4aebb // indirect
- github.com/xanzy/go-gitlab v0.73.1 // indirect
+ github.com/wagoodman/go-presenter v0.0.0-20211015174752-f9c01afc824b // indirect
+ github.com/wagoodman/go-progress v0.0.0-20230925121702-07e42b3cdba0 // indirect
+ github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect
+ github.com/xanzy/go-gitlab v0.96.0 // indirect
github.com/xanzy/ssh-agent v0.3.3 // indirect
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
- github.com/xeipuuv/gojsonschema v1.2.0 // indirect
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect
github.com/xlab/treeprint v1.2.0 // indirect
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
- github.com/yashtewari/glob-intersection v0.1.0 // indirect
- github.com/zeebo/errs v1.2.2 // indirect
- go.mongodb.org/mongo-driver v1.11.6 // indirect
+ github.com/yashtewari/glob-intersection v0.2.0 // indirect
+ github.com/yuin/gopher-lua v1.1.1 // indirect
+ github.com/zclconf/go-cty v1.14.0 // indirect
+ github.com/zeebo/errs v1.3.0 // indirect
+ github.com/zyedidia/generic v1.2.2-0.20230320175451-4410d2372cb1 // indirect
+ go.mongodb.org/mongo-driver v1.13.1 // indirect
+ go.mozilla.org/pkcs7 v0.0.0-20210826202110-33d05740a352 // indirect
go.opencensus.io v0.24.0 // indirect
- go.opentelemetry.io/otel v1.14.0 // indirect
- go.opentelemetry.io/otel/trace v1.14.0 // indirect
- go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 // indirect
- go.uber.org/atomic v1.10.0 // indirect
- go.uber.org/multierr v1.8.0 // indirect
- go.uber.org/zap v1.24.0 // indirect
- golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect
- golang.org/x/mod v0.12.0 // indirect
- golang.org/x/net v0.12.0 // indirect
- golang.org/x/oauth2 v0.8.0 // indirect
- golang.org/x/sys v0.11.0 // indirect
- golang.org/x/text v0.12.0 // indirect
- golang.org/x/time v0.3.0 // indirect
- golang.org/x/tools v0.9.1 // indirect
- golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
- google.golang.org/api v0.122.0 // indirect
- google.golang.org/appengine v1.6.7 // indirect
- google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect
- google.golang.org/grpc v1.55.0 // indirect
- google.golang.org/protobuf v1.30.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 // indirect
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.52.0 // indirect
+ go.opentelemetry.io/otel v1.27.0 // indirect
+ go.opentelemetry.io/otel/metric v1.27.0 // indirect
+ go.opentelemetry.io/otel/sdk v1.26.0 // indirect
+ go.opentelemetry.io/otel/trace v1.27.0 // indirect
+ go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect
+ go.step.sm/crypto v0.42.1 // indirect
+ go.uber.org/multierr v1.11.0 // indirect
+ go.uber.org/zap v1.26.0 // indirect
+ golang.org/x/exp v0.0.0-20231108232855-2478ac86f678 // indirect
+ golang.org/x/mod v0.17.0 // indirect
+ golang.org/x/net v0.26.0 // indirect
+ golang.org/x/oauth2 v0.21.0 // indirect
+ golang.org/x/sys v0.21.0 // indirect
+ golang.org/x/text v0.16.0 // indirect
+ golang.org/x/time v0.5.0 // indirect
+ golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
+ golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
+ google.golang.org/api v0.186.0 // indirect
+ google.golang.org/genproto v0.0.0-20240624140628-dc46fd24d27d // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20240624140628-dc46fd24d27d // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d // indirect
+ google.golang.org/grpc v1.64.0 // indirect
+ google.golang.org/protobuf v1.34.2 // indirect
+ gopkg.in/evanphx/json-patch.v5 v5.6.0 // indirect
+ gopkg.in/go-jose/go-jose.v2 v2.6.3 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
- gopkg.in/square/go-jose.v2 v2.6.0 // indirect
+ gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
- k8s.io/apiextensions-apiserver v0.27.3 // indirect
- k8s.io/apiserver v0.27.3 // indirect
- k8s.io/cli-runtime v0.27.4 // indirect
- k8s.io/component-helpers v0.27.4 // indirect
- k8s.io/kube-openapi v0.0.0-20230525220651-2546d827e515 // indirect
- k8s.io/metrics v0.27.4 // indirect
- k8s.io/utils v0.0.0-20230505201702-9f6742963106 // indirect
- oras.land/oras-go v1.2.3 // indirect
- sigs.k8s.io/controller-runtime v0.15.0 // indirect
+ gorm.io/gorm v1.25.5 // indirect
+ k8s.io/apiextensions-apiserver v0.30.0 // indirect
+ k8s.io/apiserver v0.30.0 // indirect
+ k8s.io/cli-runtime v0.29.1 // indirect
+ k8s.io/component-helpers v0.29.1 // indirect
+ k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect
+ k8s.io/metrics v0.29.1 // indirect
+ k8s.io/utils v0.0.0-20231127182322-b307cd553661 // indirect
+ modernc.org/libc v1.29.0 // indirect
+ modernc.org/mathutil v1.6.0 // indirect
+ modernc.org/memory v1.7.2 // indirect
+ modernc.org/sqlite v1.28.0 // indirect
+ oras.land/oras-go v1.2.4 // indirect
+ sigs.k8s.io/controller-runtime v0.18.1 // indirect
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
- sigs.k8s.io/kustomize/kustomize/v5 v5.0.1 // indirect
- sigs.k8s.io/release-utils v0.7.3 // indirect
- sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
+ sigs.k8s.io/kustomize/kustomize/v5 v5.0.4-0.20230601165947-6ce0bf390ce3 // indirect
+ sigs.k8s.io/release-utils v0.7.7 // indirect
+ sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
)
diff --git a/go.sum b/go.sum
index 053b1d0b83..2cdb4bd07f 100644
--- a/go.sum
+++ b/go.sum
@@ -1,16 +1,16 @@
atomicgo.dev/assert v0.0.2 h1:FiKeMiZSgRrZsPo9qn/7vmr7mCsh5SZyXY4YGYiYwrg=
-atomicgo.dev/cursor v0.1.1 h1:0t9sxQomCTRh5ug+hAMCs59x/UmC9QL6Ci5uosINKD4=
-atomicgo.dev/cursor v0.1.1/go.mod h1:Lr4ZJB3U7DfPPOkbH7/6TOtJ4vFGHlgj1nc+n900IpU=
+atomicgo.dev/assert v0.0.2/go.mod h1:ut4NcI3QDdJtlmAxQULOmA13Gz6e2DWbSAS8RUOmNYQ=
+atomicgo.dev/cursor v0.2.0 h1:H6XN5alUJ52FZZUkI7AlJbUc1aW38GWZalpYRPpoPOw=
+atomicgo.dev/cursor v0.2.0/go.mod h1:Lr4ZJB3U7DfPPOkbH7/6TOtJ4vFGHlgj1nc+n900IpU=
atomicgo.dev/keyboard v0.2.9 h1:tOsIid3nlPLZ3lwgG8KZMp/SFmr7P0ssEN5JUsm78K8=
atomicgo.dev/keyboard v0.2.9/go.mod h1:BC4w9g00XkxH/f1HXhW2sXmJFOCWbKn9xrOunSFtExQ=
-atomicgo.dev/schedule v0.0.2 h1:2e/4KY6t3wokja01Cyty6qgkQM8MotJzjtqCH70oX2Q=
-atomicgo.dev/schedule v0.0.2/go.mod h1:xeUa3oAkiuHYh8bKiQBRojqAMq3PXXbJujjb0hw8pEU=
+atomicgo.dev/schedule v0.1.0 h1:nTthAbhZS5YZmgYbb2+DH8uQIZcTlIrd4eYr3UQxEjs=
+atomicgo.dev/schedule v0.1.0/go.mod h1:xeUa3oAkiuHYh8bKiQBRojqAMq3PXXbJujjb0hw8pEU=
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
-cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
@@ -23,7 +23,6 @@ cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOY
cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=
cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=
-cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY=
cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=
cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=
cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=
@@ -38,73 +37,213 @@ cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0c
cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA=
cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A=
cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc=
-cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys=
+cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU=
+cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA=
+cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14=
+cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU=
+cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw=
+cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY=
+cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI=
+cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4=
+cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4=
+cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0=
+cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ=
+cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk=
+cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o=
+cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s=
+cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0=
+cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY=
+cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw=
+cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI=
+cloud.google.com/go/auth v0.6.0 h1:5x+d6b5zdezZ7gmLWD1m/xNjnaQ2YDhmIz/HH3doy1g=
+cloud.google.com/go/auth v0.6.0/go.mod h1:b4acV+jLQDyjwm4OXHYjNvRi4jvGBzHWJRtJcy+2P4g=
+cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4=
+cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q=
+cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0=
+cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
+cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA=
+cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY=
+cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s=
+cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM=
+cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI=
+cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY=
+cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI=
cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow=
cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM=
cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M=
cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s=
cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU=
cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U=
-cloud.google.com/go/compute v1.19.1 h1:am86mquDUgjGNWxiGn+5PGLbmgiWXlE/yNWpIpNvuXY=
-cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE=
-cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
-cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
+cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU=
+cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc=
+cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k=
+cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I=
+cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4=
+cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0=
+cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs=
+cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc=
+cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM=
+cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ=
+cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo=
+cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE=
+cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I=
+cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ=
+cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo=
+cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
-cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk=
+cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo=
+cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ=
+cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4=
+cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0=
+cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8=
+cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU=
+cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU=
+cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y=
+cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg=
+cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk=
+cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w=
cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY=
+cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk=
+cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg=
+cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM=
+cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA=
+cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o=
+cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A=
+cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0=
+cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0=
+cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc=
cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY=
-cloud.google.com/go/iam v0.13.0 h1:+CmB+K0J/33d0zSQ9SlFWUeCCEn5XJA0ZMZ3pHE9u8k=
-cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0=
-cloud.google.com/go/kms v1.10.1 h1:7hm1bRqGCA1GBRQUrp831TwJ9TWhP+tvLuP497CQS2g=
-cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI=
-cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM=
+cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc=
+cloud.google.com/go/iam v1.1.9 h1:oSkYLVtVme29uGYrOcKcvJRht7cHJpYD09GM9JaR0TE=
+cloud.google.com/go/iam v1.1.9/go.mod h1:Nt1eDWNYH9nGQg3d/mY7U1hvfGmsaG9o/kLGoLoLXjQ=
+cloud.google.com/go/kms v1.18.0 h1:pqNdaVmZJFP+i8OVLocjfpdTWETTYa20FWOegSCdrRo=
+cloud.google.com/go/kms v1.18.0/go.mod h1:DyRBeWD/pYBMeyiaXFa/DGNyxMDL3TslIKb8o/JkLkw=
+cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic=
+cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI=
+cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8=
+cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08=
+cloud.google.com/go/longrunning v0.5.7 h1:WLbHekDbjK1fVFD3ibpFFVoyizlLRl73I7YKuAKilhU=
+cloud.google.com/go/longrunning v0.5.7/go.mod h1:8GClkudohy1Fxm3owmBGid8W0pSgodEMwEAztp38Xng=
+cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4=
+cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w=
+cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE=
+cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM=
+cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY=
+cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s=
+cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA=
+cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o=
+cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ=
+cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU=
+cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY=
+cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34=
+cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs=
+cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg=
+cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E=
+cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU=
+cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0=
+cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA=
+cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0=
+cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI=
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
+cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4=
+cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o=
+cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk=
+cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo=
+cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg=
+cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4=
+cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg=
+cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c=
+cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y=
+cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A=
+cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4=
+cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY=
+cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s=
+cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI=
+cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA=
+cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4=
+cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0=
+cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU=
+cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU=
+cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc=
+cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs=
+cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg=
+cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM=
+cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ=
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
-cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y=
-cuelang.org/go v0.5.0 h1:D6N0UgTGJCOxFKU8RU+qYvavKNsVc/+ZobmifStVJzU=
-cuelang.org/go v0.5.0/go.mod h1:okjJBHFQFer+a41sAe2SaGm1glWS8oEb6CmJvn5Zdws=
+cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc=
+cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s=
+cloud.google.com/go/storage v1.42.0 h1:4QtGpplCVt1wz6g5o1ifXd656P5z+yNgzdw1tVfp0cU=
+cloud.google.com/go/storage v1.42.0/go.mod h1:HjMXRFq65pGKFn6hxj6x3HCyR41uSB72Z0SO/Vn6JFQ=
+cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw=
+cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g=
+cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU=
+cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4=
+cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0=
+cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo=
+cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo=
+cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE=
+cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg=
+cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0=
+cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M=
+cuelabs.dev/go/oci/ociregistry v0.0.0-20231103182354-93e78c079a13 h1:zkiIe8AxZ/kDjqQN+mDKc5BxoVJOqioSdqApjc+eB1I=
+cuelabs.dev/go/oci/ociregistry v0.0.0-20231103182354-93e78c079a13/go.mod h1:XGKYSMtsJWfqQYPwq51ZygxAPqpEUj/9bdg16iDPTAA=
+cuelang.org/go v0.7.0 h1:gMztinxuKfJwMIxtboFsNc6s8AxwJGgsJV+3CuLffHI=
+cuelang.org/go v0.7.0/go.mod h1:ix+3dM/bSpdG9xg6qpCgnJnpeLtciZu+O/rDbywoMII=
+dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
+dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
-github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 h1:EKPd1INOIyr5hWOWhvpmQpY6tKjeG0hT1s3AMC/9fic=
-github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1/go.mod h1:VzwV+t+dZ9j/H867F1M2ziD+yLHtB46oM35FxxMJ4d0=
+filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
+filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
+github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU=
+github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=
+github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0 h1:59MxjQVfjXsBpLy+dbd2/ELV5ofnUkUZBvWSC85sheA=
+github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0/go.mod h1:OahwfttHWG6eJ0clwcfBAHoDI6X/LV/15hx/wlMZSrU=
+github.com/AdamKorcz/go-fuzz-headers-1 v0.0.0-20230618160516-e936619f9f18 h1:rd389Q26LMy03gG4anandGFC2LW/xvjga5GezeeaxQk=
+github.com/AdamKorcz/go-fuzz-headers-1 v0.0.0-20230618160516-e936619f9f18/go.mod h1:fgJuSBrJP5qZtKqaMJE0hmhS2tmRH+44IkfZvjtaf1M=
github.com/AlecAivazis/survey/v2 v2.3.7 h1:6I/u8FvytdGsgonrYsVn2t8t4QiRnh6QSTqkkhIiSjQ=
github.com/AlecAivazis/survey/v2 v2.3.7/go.mod h1:xUTIdE4KCOIjsBAE1JYsUPoCqYdZ1reCfTwbto0Fduo=
github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/alibabacloudsdkgo/helper v0.2.0 h1:8+4G8JaejP8Xa6W46PzJEwisNgBXMvFcz78N6zG/ARw=
github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/alibabacloudsdkgo/helper v0.2.0/go.mod h1:GgeIE+1be8Ivm7Sh4RgwI42aTtC9qrcj+Y9Y6CjJhJs=
-github.com/Azure/azure-sdk-for-go v46.4.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
-github.com/Azure/azure-sdk-for-go v66.0.0+incompatible h1:bmmC38SlE8/E81nNADlgmVGurPWMHDX2YNXVQMrBpEE=
-github.com/Azure/azure-sdk-for-go v66.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
-github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
-github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
+github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU=
+github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.12.0 h1:1nGuui+4POelzDwI7RG56yfQJHCnKvwfMoU7VsEp+Zg=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.12.0/go.mod h1:99EvauvlcJ1U06amZiksfYz/3aFGyIhWGHVyiZXtBAI=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.9.0 h1:H+U3Gk9zY56G3u872L82bk4thcsy2Gghb9ExT4Zvm1o=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.9.0/go.mod h1:mgrmMSgaLp9hmax62XQTd0N4aAqSE5E0DulSpVYK7vc=
+github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.1 h1:MyVTgWR8qd/Jw1Le0NZebGBUCLbtak3bJ3z1OlqZBpw=
+github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.1/go.mod h1:GpPjLhVR9dnUoJMyHWSPy71xY9/lcmpzIPZXmF0FCVY=
+github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0 h1:D3occbWoio4EBLkbkevetNMAVX197GkzbUMtqjGWn80=
+github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0/go.mod h1:bTSOgj05NGRuHHhQwAdPnYr9TOdNmKlZTgGLL6nyAdI=
+github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0=
+github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs=
github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
-github.com/Azure/go-autorest/autorest v0.11.6/go.mod h1:V6p3pKZx1KKkJubbxnDWrzNhEIfOy/pTGasLqzHIPHs=
-github.com/Azure/go-autorest/autorest v0.11.8/go.mod h1:V6p3pKZx1KKkJubbxnDWrzNhEIfOy/pTGasLqzHIPHs=
github.com/Azure/go-autorest/autorest v0.11.24/go.mod h1:G6kyRlFnTuSbEYkQGawPfsCswgme4iYf6rfSKUDzbCc=
-github.com/Azure/go-autorest/autorest v0.11.28 h1:ndAExarwr5Y+GaHE6VCaY1kyS/HwwGGyuimVhWsHOEM=
-github.com/Azure/go-autorest/autorest v0.11.28/go.mod h1:MrkzG3Y3AH668QyF9KRk5neJnGgmhQ6krbhR8Q5eMvA=
-github.com/Azure/go-autorest/autorest/adal v0.9.4/go.mod h1:/3SMAM86bP6wC9Ev35peQDUeqFZBMH07vvUOmg4z/fE=
+github.com/Azure/go-autorest/autorest v0.11.29 h1:I4+HL/JDvErx2LjyzaVxllw2lRDB5/BT2Bm4g20iqYw=
+github.com/Azure/go-autorest/autorest v0.11.29/go.mod h1:ZtEzC4Jy2JDrZLxvWs8LrBWEBycl1hbT1eknI8MtfAs=
github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ=
-github.com/Azure/go-autorest/autorest/adal v0.9.21 h1:jjQnVFXPfekaqb8vIsv2G1lxshoW+oGv4MDlhRtnYZk=
-github.com/Azure/go-autorest/autorest/adal v0.9.21/go.mod h1:zua7mBUaCc5YnSLKYgGJR/w5ePdMDA6H56upLsHzA9U=
-github.com/Azure/go-autorest/autorest/azure/auth v0.5.2/go.mod h1:q98IH4qgc3eWM4/WOeR5+YPmBuy8Lq0jNRDwSM0CuFk=
-github.com/Azure/go-autorest/autorest/azure/auth v0.5.11 h1:P6bYXFoao05z5uhOQzbC3Qd8JqF3jUoocoTeIxkp2cA=
-github.com/Azure/go-autorest/autorest/azure/auth v0.5.11/go.mod h1:84w/uV8E37feW2NCJ08uT9VBfjfUHpgLVnG2InYD6cg=
-github.com/Azure/go-autorest/autorest/azure/cli v0.4.1/go.mod h1:JfDgiIO1/RPu6z42AdQTyjOoCM2MFhLqSBDvMEkDgcg=
+github.com/Azure/go-autorest/autorest/adal v0.9.22/go.mod h1:XuAbAEUv2Tta//+voMI038TrJBqjKam0me7qR+L8Cmk=
+github.com/Azure/go-autorest/autorest/adal v0.9.23 h1:Yepx8CvFxwNKpH6ja7RZ+sKX+DWYNldbLiALMC3BTz8=
+github.com/Azure/go-autorest/autorest/adal v0.9.23/go.mod h1:5pcMqFkdPhviJdlEy3kC/v1ZLnQl0MH6XA5YCcMhy4c=
+github.com/Azure/go-autorest/autorest/azure/auth v0.5.12 h1:wkAZRgT/pn8HhFyzfe9UnqOjJYqlembgCTi72Bm/xKk=
+github.com/Azure/go-autorest/autorest/azure/auth v0.5.12/go.mod h1:84w/uV8E37feW2NCJ08uT9VBfjfUHpgLVnG2InYD6cg=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.5/go.mod h1:ADQAXrkgm7acgWVUNamOgh8YNrv4p27l3Wc55oVfpzg=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.6 h1:w77/uPk80ZET2F+AfQExZyEWtn+0Rk/uw17m9fv5Ajc=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.6/go.mod h1:piCfgPho7BiIDdEQ1+g4VmKyD5y+p/XtSNqE6Hc4QD0=
@@ -113,23 +252,21 @@ github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSY
github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
github.com/Azure/go-autorest/autorest/mocks v0.4.2 h1:PGN4EDXnuQbojHbU0UWoNvmu9AGVwYHG9/fkDYhtAfw=
github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU=
-github.com/Azure/go-autorest/autorest/to v0.4.0 h1:oXVqrxakqqV1UZdSazDOPOLvOIz+XA683u8EctwboHk=
-github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE=
-github.com/Azure/go-autorest/autorest/validation v0.3.1 h1:AgyqjAd94fwNAoTjl/WQXg4VvFeRFpO+UhNyRXqF1ac=
-github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E=
-github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg=
github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo=
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
-github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
-github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
+github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8=
+github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
-github.com/CycloneDX/cyclonedx-go v0.7.1 h1:5w1SxjGm9MTMNTuRbEPyw21ObdbaagTWF/KfF0qHTRE=
-github.com/CycloneDX/cyclonedx-go v0.7.1/go.mod h1:N/nrdWQI2SIjaACyyDs/u7+ddCkyl/zkNs8xFsHF2Ps=
+github.com/CycloneDX/cyclonedx-go v0.8.0 h1:FyWVj6x6hoJrui5uRQdYZcSievw3Z32Z88uYzG/0D6M=
+github.com/CycloneDX/cyclonedx-go v0.8.0/go.mod h1:K2bA+324+Og0X84fA8HhN2X066K7Bxz4rpMQ4ZhjtSk=
github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60=
+github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ=
github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
@@ -143,15 +280,14 @@ github.com/MarvinJWendt/testza v0.2.12/go.mod h1:JOIegYyV7rX+7VZ9r77L/eH6CfJHHzX
github.com/MarvinJWendt/testza v0.3.0/go.mod h1:eFcL4I0idjtIx8P9C6KkAuLgATNKpX4/2oUqKc6bF2c=
github.com/MarvinJWendt/testza v0.4.2/go.mod h1:mSdhXiKH8sg/gQehJ63bINcCKp7RtYewEjXsvsVUPbE=
github.com/MarvinJWendt/testza v0.5.2 h1:53KDo64C1z/h/d/stCYCPY69bt/OSwjq5KpFNwi+zB4=
+github.com/MarvinJWendt/testza v0.5.2/go.mod h1:xu53QFE5sCdjtMCKk8YMQ2MnymimEctc4n3EjyIYvEY=
github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
-github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0=
github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
-github.com/Masterminds/sprig/v3 v3.2.1/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk=
github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA=
github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM=
github.com/Masterminds/squirrel v1.5.4 h1:uUcX/aBc8O7Fg9kaISIUsHXdKuqehiXAMQTYX8afzqM=
@@ -159,34 +295,39 @@ github.com/Masterminds/squirrel v1.5.4/go.mod h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA4
github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
-github.com/Microsoft/hcsshim v0.10.0-rc.8 h1:YSZVvlIIDD1UxQpJp0h+dnpLUw+TrY0cx8obKsp3bek=
+github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8=
+github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w=
github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63nhn5WAunQHLTznkw5W8b1Xc0dNjp83s=
github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8=
github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q=
-github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903 h1:ZK3C5DtzV2nVAQTx5S5jQvMeDqWtD1By5mOoyY/xJek=
-github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE=
-github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
-github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
-github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs=
+github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c h1:kMFnB0vCcX7IL/m9Y5LO+KQYv+t1CQOiFe6+SV2J7bE=
+github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
github.com/ThalesIgnite/crypto11 v1.2.5 h1:1IiIIEqYmBvUYFeMnHqRft4bwf/O36jryEUpY+9ef8E=
github.com/ThalesIgnite/crypto11 v1.2.5/go.mod h1:ILDKtnCKiQ7zRoNxcp36Y1ZR8LBPmR2E23+wTQe/MlE=
-github.com/a8m/expect v1.0.0/go.mod h1:4IwSCMumY49ScypDnjNbYEjgVeqy1/U2cEs3Lat96eA=
+github.com/a8m/envsubst v1.4.2 h1:4yWIHXOLEJHQEFd4UjrWDrYeYlV7ncFWJOCBRLOZHQg=
+github.com/a8m/envsubst v1.4.2/go.mod h1:MVUTQNGQ3tsjOOtKCNd+fl8RzhsXcDvvAEzkhGtlsbY=
+github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8=
+github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo=
github.com/acobaugh/osrelease v0.1.0 h1:Yb59HQDGGNhCj4suHaFQQfBps5wyoKLSSX/J/+UifRE=
github.com/acobaugh/osrelease v0.1.0/go.mod h1:4bFEs0MtgHNHBrmHCt67gNisnabCRAlzdVasCEGHTWY=
-github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ=
-github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4=
github.com/adrg/xdg v0.4.0 h1:RzRqFcjH4nE5C6oTAxhBtoE2IRyjBSa62SCbyPidvls=
github.com/adrg/xdg v0.4.0/go.mod h1:N6ag73EX4wyxeaoeHctc1mas01KZgsj5tYiAIwqJE/E=
github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8=
github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo=
-github.com/alecthomas/jsonschema v0.0.0-20220216202328-9eeeec9d044b h1:doCpXjVwui6HUN+xgNsNS3SZ0/jUZ68Eb+mJRNOZfog=
-github.com/alecthomas/jsonschema v0.0.0-20220216202328-9eeeec9d044b/go.mod h1:/n6+1/DWPltRLWL/VKyUxg6tzsl5kHUCcraimt4vr60=
+github.com/alecthomas/assert/v2 v2.3.0 h1:mAsH2wmvjsuvyBvAmCtm7zFsBlb8mIHx5ySLVdDZXL0=
+github.com/alecthomas/assert/v2 v2.3.0/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ=
+github.com/alecthomas/participle/v2 v2.1.1 h1:hrjKESvSqGHzRb4yW1ciisFJ4p3MGYih6icjJvbsmV8=
+github.com/alecthomas/participle/v2 v2.1.1/go.mod h1:Y1+hAs8DHPmc3YUFzqllV+eSQ9ljPTk0ZkPMtEdAx2c=
+github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc=
+github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
+github.com/alessio/shellescape v1.4.1 h1:V7yhSDDn8LP4lc4jS8pFkt0zCnzVJlG5JXy9BVKJUX0=
+github.com/alessio/shellescape v1.4.1/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30=
github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.2/go.mod h1:sCavSAvdzOjul4cEqeVtvlSaSScfNsTQ+46HwlTL1hc=
github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.4 h1:iC9YFYKDGEy3n/FtqJnOkZsene9olVspKmkX5A2YBEo=
github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.4/go.mod h1:sCavSAvdzOjul4cEqeVtvlSaSScfNsTQ+46HwlTL1hc=
@@ -196,154 +337,171 @@ github.com/alibabacloud-go/cr-20181201 v1.0.10 h1:B60f6S1imsgn2fgC6X6FrVNrONDrbC
github.com/alibabacloud-go/cr-20181201 v1.0.10/go.mod h1:VN9orB/w5G20FjytoSpZROqu9ZqxwycASmGqYUJSoDc=
github.com/alibabacloud-go/darabonba-openapi v0.1.12/go.mod h1:sTAjsFJmVsmcVeklL9d9uDBlFsgl43wZ6jhI6BHqHqU=
github.com/alibabacloud-go/darabonba-openapi v0.1.14/go.mod h1:w4CosR7O/kapCtEEMBm3JsQqWBU/CnZ2o0pHorsTWDI=
-github.com/alibabacloud-go/darabonba-openapi v0.1.18 h1:3eUVmAr7WCJp7fgIvmCd9ZUyuwtJYbtUqJIed5eXCmk=
-github.com/alibabacloud-go/darabonba-openapi v0.1.18/go.mod h1:PB4HffMhJVmAgNKNq3wYbTUlFvPgxJpTzd1F5pTuUsc=
+github.com/alibabacloud-go/darabonba-openapi v0.2.1 h1:WyzxxKvhdVDlwpAMOHgAiCJ+NXa6g5ZWPFEzaK/ewwY=
+github.com/alibabacloud-go/darabonba-openapi v0.2.1/go.mod h1:zXOqLbpIqq543oioL9IuuZYOQgHQ5B8/n5OPrnko8aY=
github.com/alibabacloud-go/darabonba-string v1.0.0/go.mod h1:93cTfV3vuPhhEwGGpKKqhVW4jLe7tDpo3LUM0i0g6mA=
-github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68 h1:NqugFkGxx1TXSh/pBcU00Y6bljgDPaFdh5MUSeJ7e50=
github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68/go.mod h1:6pb/Qy8c+lqua8cFpEy7g39NRRqOWc3rOwAy8m5Y2BY=
+github.com/alibabacloud-go/debug v1.0.0 h1:3eIEQWfay1fB24PQIEzXAswlVJtdQok8f3EVN5VrBnA=
+github.com/alibabacloud-go/debug v1.0.0/go.mod h1:8gfgZCCAC3+SCzjWtY053FrOcd4/qlH6IHTI4QyICOc=
github.com/alibabacloud-go/endpoint-util v1.1.0/go.mod h1:O5FuCALmCKs2Ff7JFJMudHs0I5EBgecXXxZRyswlEjE=
github.com/alibabacloud-go/endpoint-util v1.1.1 h1:ZkBv2/jnghxtU0p+upSU0GGzW1VL9GQdZO3mcSUTUy8=
github.com/alibabacloud-go/endpoint-util v1.1.1/go.mod h1:O5FuCALmCKs2Ff7JFJMudHs0I5EBgecXXxZRyswlEjE=
github.com/alibabacloud-go/openapi-util v0.0.9/go.mod h1:sQuElr4ywwFRlCCberQwKRFhRzIyG4QTP/P4y1CJ6Ws=
github.com/alibabacloud-go/openapi-util v0.0.10/go.mod h1:sQuElr4ywwFRlCCberQwKRFhRzIyG4QTP/P4y1CJ6Ws=
-github.com/alibabacloud-go/openapi-util v0.0.11 h1:iYnqOPR5hyEEnNZmebGyRMkkEJRWUEjDiiaOHZ5aNhA=
github.com/alibabacloud-go/openapi-util v0.0.11/go.mod h1:sQuElr4ywwFRlCCberQwKRFhRzIyG4QTP/P4y1CJ6Ws=
+github.com/alibabacloud-go/openapi-util v0.1.0 h1:0z75cIULkDrdEhkLWgi9tnLe+KhAFE/r5Pb3312/eAY=
+github.com/alibabacloud-go/openapi-util v0.1.0/go.mod h1:sQuElr4ywwFRlCCberQwKRFhRzIyG4QTP/P4y1CJ6Ws=
github.com/alibabacloud-go/tea v1.1.0/go.mod h1:IkGyUSX4Ba1V+k4pCtJUc6jDpZLFph9QMy2VUPTwukg=
github.com/alibabacloud-go/tea v1.1.7/go.mod h1:/tmnEaQMyb4Ky1/5D+SE1BAsa5zj/KeGOFfwYm3N/p4=
github.com/alibabacloud-go/tea v1.1.8/go.mod h1:/tmnEaQMyb4Ky1/5D+SE1BAsa5zj/KeGOFfwYm3N/p4=
github.com/alibabacloud-go/tea v1.1.11/go.mod h1:/tmnEaQMyb4Ky1/5D+SE1BAsa5zj/KeGOFfwYm3N/p4=
github.com/alibabacloud-go/tea v1.1.17/go.mod h1:nXxjm6CIFkBhwW4FQkNrolwbfon8Svy6cujmKFUq98A=
-github.com/alibabacloud-go/tea v1.1.18 h1:+6GJ06eu5Cr/Mkj09vWrf6QAfrPepctY2OxcWNclRC0=
-github.com/alibabacloud-go/tea v1.1.18/go.mod h1:nXxjm6CIFkBhwW4FQkNrolwbfon8Svy6cujmKFUq98A=
+github.com/alibabacloud-go/tea v1.1.19/go.mod h1:nXxjm6CIFkBhwW4FQkNrolwbfon8Svy6cujmKFUq98A=
+github.com/alibabacloud-go/tea v1.2.1 h1:rFF1LnrAdhaiPmKwH5xwYOKlMh66CqRwPUTzIK74ask=
+github.com/alibabacloud-go/tea v1.2.1/go.mod h1:qbzof29bM/IFhLMtJPrgTGK3eauV5J2wSyEUo4OEmnA=
github.com/alibabacloud-go/tea-utils v1.3.1/go.mod h1:EI/o33aBfj3hETm4RLiAxF/ThQdSngxrpF8rKUDJjPE=
github.com/alibabacloud-go/tea-utils v1.3.9/go.mod h1:EI/o33aBfj3hETm4RLiAxF/ThQdSngxrpF8rKUDJjPE=
github.com/alibabacloud-go/tea-utils v1.4.3/go.mod h1:KNcT0oXlZZxOXINnZBs6YvgOd5aYp9U67G+E3R8fcQw=
-github.com/alibabacloud-go/tea-utils v1.4.4 h1:lxCDvNCdTo9FaXKKq45+4vGETQUKNOW/qKTcX9Sk53o=
-github.com/alibabacloud-go/tea-utils v1.4.4/go.mod h1:KNcT0oXlZZxOXINnZBs6YvgOd5aYp9U67G+E3R8fcQw=
-github.com/alibabacloud-go/tea-xml v1.1.2 h1:oLxa7JUXm2EDFzMg+7oRsYc+kutgCVwm+bZlhhmvW5M=
+github.com/alibabacloud-go/tea-utils v1.4.5 h1:h0/6Xd2f3bPE4XHTvkpjwxowIwRCJAJOqY6Eq8f3zfA=
+github.com/alibabacloud-go/tea-utils v1.4.5/go.mod h1:KNcT0oXlZZxOXINnZBs6YvgOd5aYp9U67G+E3R8fcQw=
github.com/alibabacloud-go/tea-xml v1.1.2/go.mod h1:Rq08vgCcCAjHyRi/M7xlHKUykZCEtyBy9+DPF6GgEu8=
+github.com/alibabacloud-go/tea-xml v1.1.3 h1:7LYnm+JbOq2B+T/B0fHC4Ies4/FofC4zHzYtqw7dgt0=
+github.com/alibabacloud-go/tea-xml v1.1.3/go.mod h1:Rq08vgCcCAjHyRi/M7xlHKUykZCEtyBy9+DPF6GgEu8=
github.com/aliyun/credentials-go v1.1.2/go.mod h1:ozcZaMR5kLM7pwtCMEpVmQ242suV6qTJya2bDq4X1Tw=
-github.com/aliyun/credentials-go v1.2.3 h1:Vmodnr52Rz1mcbwn0kzMhLRKb6soizewuKXdfZiNemU=
-github.com/aliyun/credentials-go v1.2.3/go.mod h1:/KowD1cfGSLrLsH28Jr8W+xwoId0ywIy5lNzDz6O1vw=
-github.com/anchore/go-logger v0.0.0-20230531193951-db5ae83e7dbe h1:Df867YMmymdMG6z5IW8pR0/2CRpLIjYnaTXLp6j+s0k=
-github.com/anchore/go-logger v0.0.0-20230531193951-db5ae83e7dbe/go.mod h1:ubLFmlsv8/DFUQrZwY5syT5/8Er3ugSr4rDFwHsE3hg=
+github.com/aliyun/credentials-go v1.3.1 h1:uq/0v7kWrxmoLGpqjx7vtQ/s03f0zR//0br/xWDTE28=
+github.com/aliyun/credentials-go v1.3.1/go.mod h1:8jKYhQuDawt8x2+fusqa1Y6mPxemTsBEN04dgcAcYz0=
+github.com/anchore/bubbly v0.0.0-20231115134915-def0aba654a9 h1:p0ZIe0htYOX284Y4axJaGBvXHU0VCCzLN5Wf5XbKStU=
+github.com/anchore/bubbly v0.0.0-20231115134915-def0aba654a9/go.mod h1:3ZsFB9tzW3vl4gEiUeuSOMDnwroWxIxJelOOHUp8dSw=
+github.com/anchore/clio v0.0.0-20240408173007-3c4abf89e72f h1:2xJPf4KWzxFDwZK/yax+h8QHP2Gnn4fgXUCCeizhbyU=
+github.com/anchore/clio v0.0.0-20240408173007-3c4abf89e72f/go.mod h1:1k7cwq2CeVH9dgAl0X/JBBfJ4y/E8h2R9KqByDkrCA4=
+github.com/anchore/fangs v0.0.0-20231201140849-5075d28d6d8b h1:L/djgY7ZbZ/38+wUtdkk398W3PIBJLkt1N8nU/7e47A=
+github.com/anchore/fangs v0.0.0-20231201140849-5075d28d6d8b/go.mod h1:TLcE0RE5+8oIx2/NPWem/dq1DeaMoC+fPEH7hoSzPLo=
+github.com/anchore/go-logger v0.0.0-20230725134548-c21dafa1ec5a h1:nJ2G8zWKASyVClGVgG7sfM5mwoZlZ2zYpIzN2OhjWkw=
+github.com/anchore/go-logger v0.0.0-20230725134548-c21dafa1ec5a/go.mod h1:ubLFmlsv8/DFUQrZwY5syT5/8Er3ugSr4rDFwHsE3hg=
github.com/anchore/go-macholibre v0.0.0-20220308212642-53e6d0aaf6fb h1:iDMnx6LIjtjZ46C0akqveX83WFzhpTD3eqOthawb5vU=
github.com/anchore/go-macholibre v0.0.0-20220308212642-53e6d0aaf6fb/go.mod h1:DmTY2Mfcv38hsHbG78xMiTDdxFtkHpgYNVDPsF2TgHk=
github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 h1:aM1rlcoLz8y5B2r4tTLMiVTrMtpfY0O8EScKJxaSaEc=
github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092/go.mod h1:rYqSE9HbjzpHTI74vwPvae4ZVYZd1lue2ta6xHPdblA=
github.com/anchore/go-testutils v0.0.0-20200925183923-d5f45b0d3c04 h1:VzprUTpc0vW0nnNKJfJieyH/TZ9UYAnTZs5/gHTdAe8=
-github.com/anchore/go-version v1.2.2-0.20200701162849-18adb9c92b9b h1:e1bmaoJfZVsCYMrIZBpFxwV26CbsuoEh5muXD5I1Ods=
-github.com/anchore/go-version v1.2.2-0.20200701162849-18adb9c92b9b/go.mod h1:Bkc+JYWjMCF8OyZ340IMSIi2Ebf3uwByOk6ho4wne1E=
+github.com/anchore/go-testutils v0.0.0-20200925183923-d5f45b0d3c04/go.mod h1:6dK64g27Qi1qGQZ67gFmBFvEHScy0/C8qhQhNe5B5pQ=
+github.com/anchore/go-version v1.2.2-0.20210903204242-51efa5b487c4 h1:rmZG77uXgE+o2gozGEBoUMpX27lsku+xrMwlmBZJtbg=
+github.com/anchore/go-version v1.2.2-0.20210903204242-51efa5b487c4/go.mod h1:Bkc+JYWjMCF8OyZ340IMSIi2Ebf3uwByOk6ho4wne1E=
+github.com/anchore/grype v0.74.0 h1:YesFYnishQEC646iCt0hAvuEfQTvLrhCGJrANyB0c2Q=
+github.com/anchore/grype v0.74.0/go.mod h1:kxRA1NCUGjTyO0C+babd46oSH2VL3PnF8b+tWGcT21k=
github.com/anchore/packageurl-go v0.1.1-0.20230104203445-02e0a6721501 h1:AV7qjwMcM4r8wFhJq3jLRztew3ywIyPTRapl2T1s9o8=
github.com/anchore/packageurl-go v0.1.1-0.20230104203445-02e0a6721501/go.mod h1:Blo6OgJNiYF41ufcgHKkbCKF2MDOMlrqhXv/ij6ocR4=
-github.com/anchore/stereoscope v0.0.0-20230727211946-d1f3d766295e h1:S6IhYpsBCpvphlHA1tN0glSG/kjVvFzC6OJuU2qW5Pc=
-github.com/anchore/stereoscope v0.0.0-20230727211946-d1f3d766295e/go.mod h1:0LsgHgXO4QFnk2hsYwtqd3fR18PIZXlFLIl2qb9tu3g=
-github.com/anchore/syft v0.84.1 h1:O6V1gCSHTVbyfQq6M1qB86ui64qobZRC3h7lvKpVNWw=
-github.com/anchore/syft v0.84.1/go.mod h1:dozEWcwhRawdB3ArPM2BGfZWLslZ+bDNwW+wWUwKySY=
+github.com/anchore/stereoscope v0.0.1 h1:OxF7PaxMltnAxjLnDMyka+SKRIQar/bBkDdavsnjyxM=
+github.com/anchore/stereoscope v0.0.1/go.mod h1:IylG7ofLoUKHwS1XDF6rPhOmaE3GgpAgsMdvvYfooTU=
+github.com/anchore/syft v0.100.0 h1:XUpV4xWmD2cBS9hhhEdJEppItz0AxG8f5W3JhI2tQvY=
+github.com/anchore/syft v0.100.0/go.mod h1:laFRFA/okrA+ut+wPCU32hNkdPEwQfXyaB7E21ymWFc=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
github.com/andybalholm/brotli v1.0.1/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=
-github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY=
-github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
+github.com/andybalholm/brotli v1.0.6 h1:Yf9fFpf49Zrxb9NlQaluyE92/+X7UVHlhMNJN2sxfOI=
+github.com/andybalholm/brotli v1.0.6/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
+github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
+github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY=
+github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4=
+github.com/aquasecurity/go-pep440-version v0.0.0-20210121094942-22b2f8951d46 h1:vmXNl+HDfqqXgr0uY1UgK1GAhps8nbAAtqHNBcgyf+4=
+github.com/aquasecurity/go-pep440-version v0.0.0-20210121094942-22b2f8951d46/go.mod h1:olhPNdiiAAMiSujemd1O/sc6GcyePr23f/6uGKtthNg=
+github.com/aquasecurity/go-version v0.0.0-20210121072130-637058cfe492 h1:rcEG5HI490FF0a7zuvxOxen52ddygCfNVjP0XOCMl+M=
+github.com/aquasecurity/go-version v0.0.0-20210121072130-637058cfe492/go.mod h1:9Beu8XsUNNfzml7WBf3QmyPToP1wm1Gj/Vc5UJKqTzU=
github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q=
github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE=
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
-github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc=
-github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA=
-github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4=
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
-github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI=
github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
-github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
-github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
+github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so=
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
github.com/atomicgo/cursor v0.0.1/go.mod h1:cBON2QmmrysudxNBFthvMtN32r3jxVRIvzkUiF/RuIk=
github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
-github.com/aws/aws-sdk-go v1.44.217 h1:FcWC56MRl+k756aH3qeMQTylSdeJ58WN0iFz3fkyRz0=
-github.com/aws/aws-sdk-go v1.44.217/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
-github.com/aws/aws-sdk-go-v2 v1.7.1/go.mod h1:L5LuPC1ZgDr2xQS7AmIec/Jlc7O/Y1u2KxJyNVab250=
-github.com/aws/aws-sdk-go-v2 v1.14.0/go.mod h1:ZA3Y8V0LrlWj63MQAnRHgKf/5QB//LSZCPNWlWrNGLU=
-github.com/aws/aws-sdk-go-v2 v1.16.16 h1:M1fj4FE2lB4NzRb9Y0xdWsn2P0+2UHVxwKyOa4YJNjk=
-github.com/aws/aws-sdk-go-v2 v1.16.16/go.mod h1:SwiyXi/1zTUZ6KIAmLK5V5ll8SiURNUYOqTerZPaF9k=
-github.com/aws/aws-sdk-go-v2/config v1.5.0/go.mod h1:RWlPOAW3E3tbtNAqTwvSW54Of/yP3oiZXMI0xfUdjyA=
-github.com/aws/aws-sdk-go-v2/config v1.17.8 h1:b9LGqNnOdg9vR4Q43tBTVWk4J6F+W774MSchvKJsqnE=
-github.com/aws/aws-sdk-go-v2/config v1.17.8/go.mod h1:UkCI3kb0sCdvtjiXYiU4Zx5h07BOpgBTtkPu/49r+kA=
-github.com/aws/aws-sdk-go-v2/credentials v1.3.1/go.mod h1:r0n73xwsIVagq8RsxmZbGSRQFj9As3je72C2WzUIToc=
-github.com/aws/aws-sdk-go-v2/credentials v1.12.21 h1:4tjlyCD0hRGNQivh5dN8hbP30qQhMLBE/FgQR1vHHWM=
-github.com/aws/aws-sdk-go-v2/credentials v1.12.21/go.mod h1:O+4XyAt4e+oBAoIwNUYkRg3CVMscaIJdmZBOcPgJ8D8=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.3.0/go.mod h1:2LAuqPx1I6jNfaGDucWfA2zqQCYCOMCDHiCOciALyNw=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.17 h1:r08j4sbZu/RVi+BNxkBJwPMUYY3P8mgSDuKkZ/ZN1lE=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.17/go.mod h1:yIkQcCDYNsZfXpd5UX2Cy+sWA1jPgIhGTw9cOBzfVnQ=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.5/go.mod h1:2hXc8ooJqF2nAznsbJQIn+7h851/bu8GVC80OVTTqf8=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.23 h1:s4g/wnzMf+qepSNgTvaQQHNxyMLKSawNhKCPNy++2xY=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.23/go.mod h1:2DFxAQ9pfIRy0imBCJv+vZ2X6RKxves6fbnEuSry6b4=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.3.0/go.mod h1:miRSv9l093jX/t/j+mBCaLqFHo9xKYzJ7DGm1BsGoJM=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.17 h1:/K482T5A3623WJgWT8w1yRAFK4RzGzEl7y39yhtn9eA=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.17/go.mod h1:pRwaTYCJemADaqCbUAxltMoHKata7hmB5PjEXeu0kfg=
-github.com/aws/aws-sdk-go-v2/internal/ini v1.1.1/go.mod h1:Zy8smImhTdOETZqfyn01iNOe0CNggVbPjCajyaz6Gvg=
-github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24 h1:wj5Rwc05hvUSvKuOF29IYb9QrCLjU+rHAy/x/o0DK2c=
-github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24/go.mod h1:jULHjqqjDlbyTa7pfM7WICATnOv+iOhjletM3N0Xbu8=
-github.com/aws/aws-sdk-go-v2/service/ecr v1.4.1/go.mod h1:FglZcyeiBqcbvyinl+n14aT/EWC7S1MIH+Gan2iizt0=
-github.com/aws/aws-sdk-go-v2/service/ecr v1.15.0 h1:lY2Z2sBP+zSbJ6CvvmnFgPcgknoQ0OJV88AwVetRRFk=
-github.com/aws/aws-sdk-go-v2/service/ecr v1.15.0/go.mod h1:4zYI85WiYDhFaU1jPFVfkD7HlBcdnITDE3QxDwy4Kus=
-github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.4.1/go.mod h1:eD5Eo4drVP2FLTw0G+SMIPWNWvQRGGTtIZR2XeAagoA=
-github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.12.0 h1:LsqBpyRofMG6eDs6YGud6FhdGyIyXelAasPOZ6wWLro=
-github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.12.0/go.mod h1:IArQ3IBR00FkuraKwudKZZU32OxJfdTdwV+W5iZh3Y4=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.2.1/go.mod h1:zceowr5Z1Nh2WVP8bf/3ikB41IZW59E4yIYbg+pC6mw=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17 h1:Jrd/oMh0PKQc6+BowB+pLEwLIgaQF29eYbe7E1Av9Ug=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17/go.mod h1:4nYOrY41Lrbk2170/BGkcJKBhws9Pfn8MG3aGqjjeFI=
-github.com/aws/aws-sdk-go-v2/service/kms v1.18.11 h1:IxfVvdMedvCHXOWIuypaCjmNqGOP1uaXnaSVQzut7KE=
-github.com/aws/aws-sdk-go-v2/service/kms v1.18.11/go.mod h1:DZtboupHLNr0p6qHw9r3kR8MUnN/rc4AAVmNpe2ocuU=
-github.com/aws/aws-sdk-go-v2/service/sso v1.3.1/go.mod h1:J3A3RGUvuCZjvSuZEcOpHDnzZP/sKbhDWV2T1EOzFIM=
-github.com/aws/aws-sdk-go-v2/service/sso v1.11.23 h1:pwvCchFUEnlceKIgPUouBJwK81aCkQ8UDMORfeFtW10=
-github.com/aws/aws-sdk-go-v2/service/sso v1.11.23/go.mod h1:/w0eg9IhFGjGyyncHIQrXtU8wvNsTJOP0R6PPj0wf80=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.6 h1:OwhhKc1P9ElfWbMKPIbMMZBV6hzJlL2JKD76wNNVzgQ=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.6/go.mod h1:csZuQY65DAdFBt1oIjO5hhBR49kQqop4+lcuCjf2arA=
-github.com/aws/aws-sdk-go-v2/service/sts v1.6.0/go.mod h1:q7o0j7d7HrJk/vr9uUt3BVRASvcU7gYZB9PUgPiByXg=
-github.com/aws/aws-sdk-go-v2/service/sts v1.16.19 h1:9pPi0PsFNAGILFfPCk8Y0iyEBGc6lu6OQ97U7hmdesg=
-github.com/aws/aws-sdk-go-v2/service/sts v1.16.19/go.mod h1:h4J3oPZQbxLhzGnk+j9dfYHi5qIOVJ5kczZd658/ydM=
-github.com/aws/smithy-go v1.6.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=
-github.com/aws/smithy-go v1.11.0/go.mod h1:3xHYmszWVx2c0kIwQeEVf9uSm4fYZt67FBJnwub1bgM=
-github.com/aws/smithy-go v1.13.3 h1:l7LYxGuzK6/K+NzJ2mC+VvLUbae0sL3bXU//04MkmnA=
-github.com/aws/smithy-go v1.13.3/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
-github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20220517224237-e6f29200ae04 h1:p2I85zYI9z5/c/3Q0LiO3RtNXcmXHTtJfml/hV16zNg=
-github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20220517224237-e6f29200ae04/go.mod h1:Z+bXnIbhKJYSvxNwsNnwde7pDKxuqlEZCbUBoTwAqf0=
+github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
+github.com/aws/aws-sdk-go v1.54.9 h1:e0Czh9AhrCVPuyaIUnibYmih3cYexJKlqlHSJ2eMKbI=
+github.com/aws/aws-sdk-go v1.54.9/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
+github.com/aws/aws-sdk-go-v2 v1.21.2/go.mod h1:ErQhvNuEMhJjweavOYhxVkn2RUx7kQXVATHrjKtxIpM=
+github.com/aws/aws-sdk-go-v2 v1.24.1 h1:xAojnj+ktS95YZlDf0zxWBkbFtymPeDP+rvUQIH3uAU=
+github.com/aws/aws-sdk-go-v2 v1.24.1/go.mod h1:LNh45Br1YAkEKaAqvmE1m8FUx6a5b/V0oAKV7of29b4=
+github.com/aws/aws-sdk-go-v2/config v1.26.6 h1:Z/7w9bUqlRI0FFQpetVuFYEsjzE3h7fpU6HuGmfPL/o=
+github.com/aws/aws-sdk-go-v2/config v1.26.6/go.mod h1:uKU6cnDmYCvJ+pxO9S4cWDb2yWWIH5hra+32hVh1MI4=
+github.com/aws/aws-sdk-go-v2/credentials v1.16.16 h1:8q6Rliyv0aUFAVtzaldUEcS+T5gbadPbWdV1WcAddK8=
+github.com/aws/aws-sdk-go-v2/credentials v1.16.16/go.mod h1:UHVZrdUsv63hPXFo1H7c5fEneoVo9UXiz36QG1GEPi0=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.11 h1:c5I5iH+DZcH3xOIMlz3/tCKJDaHFwYEmxvlh2fAcFo8=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.11/go.mod h1:cRrYDYAMUohBJUtUnOhydaMHtiK/1NZ0Otc9lIb6O0Y=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.43/go.mod h1:auo+PiyLl0n1l8A0e8RIeR8tOzYPfZZH/JNlrJ8igTQ=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.10 h1:vF+Zgd9s+H4vOXd5BMaPWykta2a6Ih0AKLq/X6NYKn4=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.10/go.mod h1:6BkRjejp/GR4411UGqkX8+wFMbFbqsUIimfK4XjOKR4=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.37/go.mod h1:Qe+2KtKml+FEsQF/DHmDV+xjtche/hwoF75EG4UlHW8=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.10 h1:nYPe006ktcqUji8S2mqXf9c/7NdiKriOwMvWQHgYztw=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.10/go.mod h1:6UV4SZkVvmODfXKql4LCbaZUpF7HO2BX38FgBf9ZOLw=
+github.com/aws/aws-sdk-go-v2/internal/ini v1.7.3 h1:n3GDfwqF2tzEkXlv5cuy4iy7LpKDtqDMcNLfZDu9rls=
+github.com/aws/aws-sdk-go-v2/internal/ini v1.7.3/go.mod h1:6fQQgfuGmw8Al/3M2IgIllycxV7ZW7WCdVSqfBeUiCY=
+github.com/aws/aws-sdk-go-v2/service/ecr v1.20.2 h1:y6LX9GUoEA3mO0qpFl1ZQHj1rFyPWVphlzebiSt2tKE=
+github.com/aws/aws-sdk-go-v2/service/ecr v1.20.2/go.mod h1:Q0LcmaN/Qr8+4aSBrdrXXePqoX0eOuYpJLbYpilmWnA=
+github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.18.2 h1:PpbXaecV3sLAS6rjQiaKw4/jyq3Z8gNzmoJupHAoBp0=
+github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.18.2/go.mod h1:fUHpGXr4DrXkEDpGAjClPsviWf+Bszeb0daKE0blxv8=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4 h1:/b31bi3YVNlkzkBrm9LfpaKoaYZUxIAj4sHfOTmLfqw=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4/go.mod h1:2aGXHFmbInwgP9ZfpmdIfOELL79zhdNYNmReK8qDfdQ=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.10 h1:DBYTXwIGQSGs9w4jKm60F5dmCQ3EEruxdc0MFh+3EY4=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.10/go.mod h1:wohMUQiFdzo0NtxbBg0mSRGZ4vL3n0dKjLTINdcIino=
+github.com/aws/aws-sdk-go-v2/service/kms v1.27.9 h1:W9PbZAZAEcelhhjb7KuwUtf+Lbc+i7ByYJRuWLlnxyQ=
+github.com/aws/aws-sdk-go-v2/service/kms v1.27.9/go.mod h1:2tFmR7fQnOdQlM2ZCEPpFnBIQD1U8wmXmduBgZbOag0=
+github.com/aws/aws-sdk-go-v2/service/sso v1.18.7 h1:eajuO3nykDPdYicLlP3AGgOyVN3MOlFmZv7WGTuJPow=
+github.com/aws/aws-sdk-go-v2/service/sso v1.18.7/go.mod h1:+mJNDdF+qiUlNKNC3fxn74WWNN+sOiGOEImje+3ScPM=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.7 h1:QPMJf+Jw8E1l7zqhZmMlFw6w1NmfkfiSK8mS4zOx3BA=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.7/go.mod h1:ykf3COxYI0UJmxcfcxcVuz7b6uADi1FkiUz6Eb7AgM8=
+github.com/aws/aws-sdk-go-v2/service/sts v1.26.7 h1:NzO4Vrau795RkUdSHKEwiR01FaGzGOH1EETJ+5QHnm0=
+github.com/aws/aws-sdk-go-v2/service/sts v1.26.7/go.mod h1:6h2YuIoxaMSCFf5fi1EgZAwdfkGMgDY+DVfa61uLe4U=
+github.com/aws/smithy-go v1.15.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
+github.com/aws/smithy-go v1.19.0 h1:KWFKQV80DpP3vJrrA9sVAHQ5gc2z8i4EzrLhLlWXcBM=
+github.com/aws/smithy-go v1.19.0/go.mod h1:NukqUGpCZIILqqiV0NIjeFh24kd/FAa4beRb6nbIUPE=
+github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20231024185945-8841054dbdb8 h1:SoFYaT9UyGkR0+nogNyD/Lj+bsixB+SNuAS4ABlEs6M=
+github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20231024185945-8841054dbdb8/go.mod h1:2JF49jcDOrLStIXN/j/K1EKRq8a8R2qRnlZA6/o/c7c=
+github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
+github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
+github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk=
+github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg=
github.com/becheran/wildmatch-go v1.0.0 h1:mE3dGGkTmpKtT4Z+88t8RStG40yN9T+kFEGj2PZFSzA=
github.com/becheran/wildmatch-go v1.0.0/go.mod h1:gbMvj0NtVdJ15Mg/mH9uxk2R1QCistMyU7d9KFzroX4=
-github.com/beevik/etree v1.1.0/go.mod h1:r8Aw8JqVegEf0w2fDnATrX9VpkMcyFeM0FhwO62wh+A=
-github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
+github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas=
+github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4=
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
-github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
-github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM=
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
-github.com/bmatcuk/doublestar/v4 v4.6.0 h1:HTuxyug8GyFbRkrffIpzNCSK4luc0TY3wzXvzIZhEXc=
-github.com/bmatcuk/doublestar/v4 v4.6.0/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc=
-github.com/bradfitz/gomemcache v0.0.0-20190913173617-a41fca850d0b/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA=
+github.com/bmatcuk/doublestar/v2 v2.0.4 h1:6I6oUiT/sU27eE2OFcWqBhL1SwjyvQuOssxT4a1yidI=
+github.com/bmatcuk/doublestar/v2 v2.0.4/go.mod h1:QMmcs3H2AUQICWhfzLXz+IYln8lRQmTZRptLie8RgRw=
+github.com/bmatcuk/doublestar/v4 v4.6.1 h1:FH9SifrbvJhnlQpztAx++wlkk70QBf0iBWDwNy7PA4I=
+github.com/bmatcuk/doublestar/v4 v4.6.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc=
github.com/bradleyjkemp/cupaloy/v2 v2.8.0 h1:any4BmKE+jGIaMpnU8YgH/I2LPiLBufr6oMMlVBbn9M=
+github.com/bradleyjkemp/cupaloy/v2 v2.8.0/go.mod h1:bm7JXdkRd4BHJk9HpwqAI8BoAY1lps46Enkdqw6aRX0=
github.com/bshuster-repo/logrus-logstash-hook v1.0.0 h1:e+C0SB5R1pu//O4MQ3f9cFuPGoOVeF2fE4Og9otCc70=
+github.com/bshuster-repo/logrus-logstash-hook v1.0.0/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk=
+github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs=
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
-github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd h1:rFt+Y/IK1aEZkEHchZRSq9OQbsSzIT/OrI8YFFmRIng=
-github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembjv71DPz3uX/V/6MMlSyD9JBQ6kQ=
-github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o=
-github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
-github.com/bytecodealliance/wasmtime-go v1.0.0 h1:9u9gqaUiaJeN5IoD1L7egD8atOnTGyJcNp8BhkL9cUU=
+github.com/buildkite/agent/v3 v3.62.0 h1:yvzSjI8Lgifw883I8m9u8/L/Thxt4cLFd5aWPn3gg70=
+github.com/buildkite/agent/v3 v3.62.0/go.mod h1:jN6SokGXrVNNIpI0BGQ+j5aWeI3gin8F+3zwA5Q6gqM=
+github.com/buildkite/go-pipeline v0.3.2 h1:SW4EaXNwfjow7xDRPGgX0Rcx+dPj5C1kV9LKCLjWGtM=
+github.com/buildkite/go-pipeline v0.3.2/go.mod h1:iY5jzs3Afc8yHg6KDUcu3EJVkfaUkd9x/v/OH98qyUA=
+github.com/buildkite/interpolate v0.0.0-20200526001904-07f35b4ae251 h1:k6UDF1uPYOs0iy1HPeotNa155qXRWrzKnqAaGXHLZCE=
+github.com/buildkite/interpolate v0.0.0-20200526001904-07f35b4ae251/go.mod h1:gbPR1gPu9dB96mucYIR7T3B7p/78hRVSOuzIWLHK2Y4=
+github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
+github.com/bytecodealliance/wasmtime-go/v3 v3.0.2 h1:3uZCA/BLTIu+DqCfguByNMJa2HVHpXvjfy0Dy7g6fuA=
+github.com/bytecodealliance/wasmtime-go/v3 v3.0.2/go.mod h1:RnUjnIXxEJcL6BgCvNyzCCRzZcxCgsZCi+RNlvYor5Q=
github.com/cenkalti/backoff/v3 v3.2.2 h1:cfUAAO3yvKMYKPrvhDuHSwQnhZNk/RMHKdZqKTxfm6M=
github.com/cenkalti/backoff/v3 v3.2.2/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs=
-github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4=
-github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
+github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
+github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
@@ -354,19 +512,29 @@ github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/chai2010/gettext-go v1.0.2 h1:1Lwwip6Q2QGsAdl/ZKPCwTe9fe0CjlUbqj5bFNSjIRk=
github.com/chai2010/gettext-go v1.0.2/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA=
-github.com/chrismellard/docker-credential-acr-env v0.0.0-20220119192733-fe33c00cee21 h1:XlpL9EHrPOBJMLDDOf35/G4t5rGAFNNAZQ3cDcWavtc=
-github.com/chrismellard/docker-credential-acr-env v0.0.0-20220119192733-fe33c00cee21/go.mod h1:Zlre/PVxuSI9y6/UV4NwGixQ48RHQDSPiUkofr6rbMU=
+github.com/charmbracelet/bubbles v0.16.1 h1:6uzpAAaT9ZqKssntbvZMlksWHruQLNxg49H5WdeuYSY=
+github.com/charmbracelet/bubbles v0.16.1/go.mod h1:2QCp9LFlEsBQMvIYERr7Ww2H2bA7xen1idUDIzm/+Xc=
+github.com/charmbracelet/bubbletea v0.25.0 h1:bAfwk7jRz7FKFl9RzlIULPkStffg5k6pNt5dywy4TcM=
+github.com/charmbracelet/bubbletea v0.25.0/go.mod h1:EN3QDR1T5ZdWmdfDzYcqOCAps45+QIJbLOBxmVNWNNg=
+github.com/charmbracelet/harmonica v0.2.0 h1:8NxJWRWg/bzKqqEaaeFNipOu77YR5t8aSwG4pgaUBiQ=
+github.com/charmbracelet/harmonica v0.2.0/go.mod h1:KSri/1RMQOZLbw7AHqgcBycp8pgJnQMYYT8QZRqZ1Ao=
+github.com/charmbracelet/lipgloss v0.9.1 h1:PNyd3jvaJbg4jRHKWXnCj1akQm4rh8dbEzN1p/u1KWg=
+github.com/charmbracelet/lipgloss v0.9.1/go.mod h1:1mPmG4cxScwUQALAAnacHaigiiHB9Pmr+v1VEawJl6I=
+github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s=
+github.com/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb27589 h1:krfRl01rzPzxSxyLyrChD+U+MzsBXbm0OwYYB67uF+4=
+github.com/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb27589/go.mod h1:OuDyvmLnMCwa2ep4Jkm6nyA0ocJuZlGyk2gGseVzERM=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag=
github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
-github.com/clbanning/mxj/v2 v2.5.6 h1:Jm4VaCI/+Ug5Q57IzEoZbwx4iQFA6wkXv72juUSeK+g=
-github.com/clbanning/mxj/v2 v2.5.6/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=
+github.com/clbanning/mxj/v2 v2.5.5/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=
+github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME=
+github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
-github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I=
-github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs=
github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
+github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
+github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
@@ -377,104 +545,131 @@ github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWH
github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E=
-github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw=
+github.com/cockroachdb/apd/v3 v3.2.1 h1:U+8j7t0axsIgvQUqthuNm82HIrYXodOV2iWLWtEaIwg=
+github.com/cockroachdb/apd/v3 v3.2.1/go.mod h1:klXJcjp+FffLTHlhIG69tezTDvdP065naDsHzKhYSqc=
github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE=
+github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4=
github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be h1:J5BL2kskAlV9ckgEsNQXscjIaLiOYiZ75d4e94E6dcQ=
github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w=
github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM=
+github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw=
github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U=
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY=
github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk=
-github.com/containerd/containerd v1.7.1 h1:k8DbDkSOwt5rgxQ3uCI4WMKIJxIndSCBUaGm5oRn+Go=
-github.com/containerd/containerd v1.7.1/go.mod h1:gA+nJUADRBm98QS5j5RPROnt0POQSMK+r7P7EGMC/Qc=
-github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg=
+github.com/containerd/containerd v1.7.12 h1:+KQsnv4VnzyxWcfO9mlxxELaoztsDEjOuCMPAuPqgU0=
+github.com/containerd/containerd v1.7.12/go.mod h1:/5OMpE1p0ylxtEUGY8kuCYkDRzJm9NO1TFMWjUpdevk=
+github.com/containerd/continuity v0.4.2 h1:v3y/4Yz5jwnvqPKJJ+7Wf93fyWoCB3F5EclWG023MDM=
+github.com/containerd/continuity v0.4.2/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ=
+github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY=
+github.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Qu+MAb2o=
+github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
+github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
github.com/containerd/stargz-snapshotter/estargz v0.14.3 h1:OqlDCK3ZVUO6C3B/5FSkDwbkEETK84kQgEeFwDC+62k=
github.com/containerd/stargz-snapshotter/estargz v0.14.3/go.mod h1:KY//uOCIkSuNAHhJogcZtrNHdKrA99/FCCRjE3HD36o=
-github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
-github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
-github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
-github.com/coreos/go-oidc/v3 v3.4.0 h1:xz7elHb/LDwm/ERpwHd+5nb7wFHL32rsr6bBOgaeu6g=
-github.com/coreos/go-oidc/v3 v3.4.0/go.mod h1:eHUXhZtXPQLgEaDrOVTgwbgmz1xGOkJNye6h3zkD2Pw=
-github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
+github.com/containerd/ttrpc v1.2.2 h1:9vqZr0pxwOF5koz6N0N3kJ0zDHokrcPxIR/ZR2YFtOs=
+github.com/containerd/ttrpc v1.2.2/go.mod h1:sIT6l32Ph/H9cvnJsfXM5drIVzTr5A2flTf1G5tYZak=
+github.com/containerd/typeurl/v2 v2.1.1 h1:3Q4Pt7i8nYwy2KmQWIw2+1hTvwTE/6w9FqcttATPO/4=
+github.com/containerd/typeurl/v2 v2.1.1/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0=
+github.com/coreos/go-oidc/v3 v3.9.0 h1:0J/ogVOd4y8P0f0xUh8l9t07xRP/d8tccvjHl2dcsSo=
+github.com/coreos/go-oidc/v3 v3.9.0/go.mod h1:rTKz2PYwftcrtoCzV5g5kvfJoWcm0Mk8AF8y1iAQro4=
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
-github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
+github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs=
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
-github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
-github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
+github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
-github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
-github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
-github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM=
+github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/creack/pty v1.1.17/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
-github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY=
-github.com/cyberphone/json-canonicalization v0.0.0-20210823021906-dc406ceaf94b h1:lMzA7yYThpwx7iYNpTeiQnRH6h5JSfSYMJdz+pxZOW8=
-github.com/cyberphone/json-canonicalization v0.0.0-20210823021906-dc406ceaf94b/go.mod h1:uzvlm1mxhHkdfqitSA92i7Se+S9ksOn3a3qmv/kyOCw=
-github.com/cyphar/filepath-securejoin v0.2.3 h1:YX6ebbZCZP7VkM3scTTokDgBL2TY741X51MTk3ycuNI=
-github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
-github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U=
+github.com/creack/pty v1.1.21 h1:1/QdRyBaHHJP61QkWMXlOIBfsgdDeeKfK8SYVUWJKf0=
+github.com/creack/pty v1.1.21/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
+github.com/cyberphone/json-canonicalization v0.0.0-20231011164504-785e29786b46 h1:2Dx4IHfC1yHWI12AxQDJM1QbRCDfk6M+blLzlZCXdrc=
+github.com/cyberphone/json-canonicalization v0.0.0-20231011164504-785e29786b46/go.mod h1:uzvlm1mxhHkdfqitSA92i7Se+S9ksOn3a3qmv/kyOCw=
+github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=
+github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
+github.com/danieljoos/wincred v1.2.0 h1:ozqKHaLK0W/ii4KVbbvluM91W2H3Sh0BncbUNPS7jLE=
+github.com/danieljoos/wincred v1.2.0/go.mod h1:FzQLLMKBFdvu+osBrnFODiv32YGwCfx0SkRa/eYHgec=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
+github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/daviddengcn/go-colortext v1.0.0 h1:ANqDyC0ys6qCSvuEK7l3g5RaehL/Xck9EX8ATG8oKsE=
github.com/daviddengcn/go-colortext v1.0.0/go.mod h1:zDqEI5NVUop5QPpVJUxE9UO10hRnmkD5G4Pmri9+m4c=
-github.com/defenseunicorns/oras-go v1.2.4-0.20230605015028-85c595ed4b64 h1:SCwmnKa2RSZtW50bKudiPdYUucX3xqlbbUt8AJiu5SA=
-github.com/defenseunicorns/oras-go v1.2.4-0.20230605015028-85c595ed4b64/go.mod h1:9YC1InrDJmkX0HhBLTXIixGH+l8bsPjRURmmaI2TvBk=
+github.com/defenseunicorns/gojsonschema v0.0.0-20231116163348-e00f069122d6 h1:gwevOZ0fxT2nzM9hrtdPbsiOHjFqDRIYMzJHba3/G6Q=
+github.com/defenseunicorns/gojsonschema v0.0.0-20231116163348-e00f069122d6/go.mod h1:StKLYMmPj1R5yIs6CK49EkcW1TvUYuw5Vri+LRk7Dy8=
+github.com/defenseunicorns/pkg/helpers v1.1.3 h1:EVVuniq02qfAouR//AT0eoCngLWfFORj8H6+pI8M7uo=
+github.com/defenseunicorns/pkg/helpers v1.1.3/go.mod h1:F4S5VZLDrlNWQKklzv4v9tFWjjZNhxJ1gT79j4XiLwk=
+github.com/defenseunicorns/pkg/helpers/v2 v2.0.1 h1:j08rz9vhyD9Bs+yKiyQMY2tSSejXRMxTqEObZ5M1Wbk=
+github.com/defenseunicorns/pkg/helpers/v2 v2.0.1/go.mod h1:u1PAqOICZyiGIVA2v28g55bQH1GiAt0Bc4U9/rnWQvQ=
+github.com/defenseunicorns/pkg/kubernetes v0.0.1 h1:HNQBV6XXFvlDvFdOCCWam0/LCgq67M+ggQKiRIoM2vU=
+github.com/defenseunicorns/pkg/kubernetes v0.0.1/go.mod h1:AWB1iBbDO4VTmRO/E/8e0tVN0kkWbg+v8dhs9Hd9KXA=
+github.com/defenseunicorns/pkg/oci v1.0.1 h1:WPrWRrae1L19X1vuhy6yYMR2zrTzgBbJHp3ImgUm4ZM=
+github.com/defenseunicorns/pkg/oci v1.0.1/go.mod h1:qZ3up/d0P81taW37fKR4lb19jJhQZJVtNOEJMu00dHQ=
github.com/deitch/magic v0.0.0-20230404182410-1ff89d7342da h1:ZOjWpVsFZ06eIhnh4mkaceTiVoktdU67+M7KDHJ268M=
github.com/deitch/magic v0.0.0-20230404182410-1ff89d7342da/go.mod h1:B3tI9iGHi4imdLi4Asdha1Sc6feLMTfPLXh9IUYmysk=
-github.com/denisenkom/go-mssqldb v0.9.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
github.com/depcheck-test/depcheck-test v0.0.0-20220607135614-199033aaa936 h1:foGzavPWwtoyBvjWyKJYDYsyzy+23iBV7NKTwdk+LRY=
-github.com/derailed/k9s v0.27.4 h1:eGDs3Tbv9GVlCrSwC4Iij8u8d4nNZIY+i1XTdz5D2Pw=
-github.com/derailed/k9s v0.27.4/go.mod h1:BrzlrwOZJO69BoFTa1yXlsI9YA5ssi4rozyCtUBRJBk=
-github.com/derailed/popeye v0.11.1 h1:bjt5mXkcXY696ipuJqwY1sa5s3i431L9BlkQc6EuaqE=
-github.com/derailed/popeye v0.11.1/go.mod h1:NkvjHH1F94tE7Ui17PlYiagQcFt7yXUV2hIhPzSK+0w=
+github.com/depcheck-test/depcheck-test v0.0.0-20220607135614-199033aaa936/go.mod h1:ttKPnOepYt4LLzD+loXQ1rT6EmpyIYHro7TAJuIIlHo=
+github.com/derailed/k9s v0.31.7 h1:PFDSvP3iC2D2RMnFtOkvuomkNK4AVcGDYsjGTlho/js=
+github.com/derailed/k9s v0.31.7/go.mod h1:ukOXuWhbAu+/eMqPhfkdG4NVHbK3IwpXdN4ooFxhMFs=
+github.com/derailed/popeye v0.11.2 h1:8MKMjYBJdYNktTKeh98TeT127jZY6CFAsurrENoTZCY=
+github.com/derailed/popeye v0.11.2/go.mod h1:HygqX7A8BwidorJjJUnWDZ5AvbxHIU7uRwXgOtn9GwY=
github.com/derailed/tcell/v2 v2.3.1-rc.3 h1:9s1fmyRcSPRlwr/C9tcpJKCujbrtmPpST6dcMUD2piY=
github.com/derailed/tcell/v2 v2.3.1-rc.3/go.mod h1:nf68BEL8fjmXQHJT3xZjoZFs2uXOzyJcNAQqGUEMrFY=
-github.com/derailed/tview v0.8.1 h1:hvNR3LLrWEuaQbPYfBnRn7bYkxCP26K6nX9J+MGlhyw=
-github.com/derailed/tview v0.8.1/go.mod h1:q+odnnhO6QDPpBT+0dqaWj+X+uoJ6MJehXj9shgP+Cw=
-github.com/dgraph-io/badger/v3 v3.2103.2 h1:dpyM5eCJAtQCBcMCZcT4UBZchuTJgCywerHHgmxfxM8=
-github.com/dgraph-io/ristretto v0.1.0 h1:Jv3CGQHp9OjuMBSne1485aDpUkTKEcUqF+jm/LuerPI=
-github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
+github.com/derailed/tview v0.8.3 h1:jhN7LW7pfCWf7Z6VC5Dpi/1usavOBZxz2mY90//TMsU=
+github.com/derailed/tview v0.8.3/go.mod h1:q+odnnhO6QDPpBT+0dqaWj+X+uoJ6MJehXj9shgP+Cw=
+github.com/dgraph-io/badger/v3 v3.2103.5 h1:ylPa6qzbjYRQMU6jokoj4wzcaweHylt//CH0AKt0akg=
+github.com/dgraph-io/badger/v3 v3.2103.5/go.mod h1:4MPiseMeDQ3FNCYwRbbcBOGJLf5jsE0PPFzRiKjtcdw=
+github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8=
+github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA=
github.com/dgrijalva/jwt-go/v4 v4.0.0-preview1/go.mod h1:+hnT3ywWDTAFrW5aE+u2Sa/wT555ZqwoCS+pk3p6ry4=
-github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
+github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
+github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48 h1:fRzb/w+pyskVMQ+UbP35JkH8yB7MYb4q/qhBarqZE6g=
github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA=
-github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8=
+github.com/digitorus/pkcs7 v0.0.0-20230713084857-e76b763bdc49/go.mod h1:SKVExuS+vpu2l9IoOc0RwqE7NYnb0JlcFHFnEJkVDzc=
+github.com/digitorus/pkcs7 v0.0.0-20230818184609-3a137a874352 h1:ge14PCmCvPjpMQMIAH7uKg0lrtNSOdpYsRXlwk3QbaE=
+github.com/digitorus/pkcs7 v0.0.0-20230818184609-3a137a874352/go.mod h1:SKVExuS+vpu2l9IoOc0RwqE7NYnb0JlcFHFnEJkVDzc=
+github.com/digitorus/timestamp v0.0.0-20231217203849-220c5c2851b7 h1:lxmTCgmHE1GUYL7P0MlNa00M67axePTq+9nBSGddR8I=
+github.com/digitorus/timestamp v0.0.0-20231217203849-220c5c2851b7/go.mod h1:GvWntX9qiTlOud0WkQ6ewFm0LPy5JUR1Xo0Ngbd1w6Y=
github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U=
github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE=
-github.com/distribution/distribution v2.8.2+incompatible h1:k9+4DKdOG+quPFZXT/mUsiQrGu9vYCp+dXpuPkuqhk8=
-github.com/distribution/distribution v2.8.2+incompatible/go.mod h1:EgLm2NgWtdKgzF9NpMzUKgzmR7AMmb0VQi2B+ZzDRjc=
-github.com/distribution/distribution/v3 v3.0.0-20221208165359-362910506bc2 h1:aBfCb7iqHmDEIp6fBvC/hQUddQfg+3qdYjwzaiP9Hnc=
-github.com/docker/cli v24.0.2+incompatible h1:QdqR7znue1mtkXIJ+ruQMGQhpw2JzMJLRXp6zpzF6tM=
-github.com/docker/cli v24.0.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
-github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8=
-github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
-github.com/docker/docker v24.0.2+incompatible h1:eATx+oLz9WdNVkQrr0qjQ8HvRJ4bOOxfzEo8R+dA3cg=
-github.com/docker/docker v24.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
-github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y=
-github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A=
-github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0=
+github.com/distribution/distribution/v3 v3.0.0-alpha.1 h1:jn7I1gvjOvmLztH1+1cLiUFud7aeJCIQcgzugtwjyJo=
+github.com/distribution/distribution/v3 v3.0.0-alpha.1/go.mod h1:LCp4JZp1ZalYg0W/TN05jarCQu+h4w7xc7ZfQF4Y/cY=
+github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0=
+github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
+github.com/docker/cli v26.0.0+incompatible h1:90BKrx1a1HKYpSnnBFR6AgDq/FqkHxwlUyzJVPxD30I=
+github.com/docker/cli v26.0.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
+github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
+github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
+github.com/docker/docker v24.0.9+incompatible h1:HPGzNmwfLZWdxHqK9/II92pyi1EpYKsAqcl4G0Of9v0=
+github.com/docker/docker v24.0.9+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/docker/docker-credential-helpers v0.8.0 h1:YQFtbBQb4VrpoPxhFuzEBPQ9E16qz5SpHLS+uswaCp8=
+github.com/docker/docker-credential-helpers v0.8.0/go.mod h1:UGFXcuoQ5TxPiB54nHOZ32AWRqQdECoh/Mg0AlEYb40=
github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8=
+github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA=
github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8=
github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw=
-github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1 h1:ZClxb8laGDf5arXfYcAtECDFgAgHklGI8CxgjHnXKJ4=
-github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
+github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE=
github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 h1:iFaUwBSo5Svw6L7HYpRu/0lE3e0BaElwnNO1qkNQxBY=
github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s=
github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
-github.com/elazarl/goproxy v0.0.0-20221015165544-a0805db90819 h1:RIB4cRk+lBqKK3Oy0r2gRX4ui7tuhiZq2SuTtTCi0/0=
-github.com/emicklei/go-restful/v3 v3.10.2 h1:hIovbnmBTLjHXkqEBUz3HGpXZdM7ZrE9fJIZIqlJLqE=
-github.com/emicklei/go-restful/v3 v3.10.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
-github.com/emicklei/proto v1.10.0 h1:pDGyFRVV5RvV+nkBK9iy3q67FBy9Xa7vwrOTE+g5aGw=
-github.com/emicklei/proto v1.10.0/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A=
+github.com/edsrzf/mmap-go v1.1.0 h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ=
+github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q=
+github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU=
+github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM=
+github.com/elliotchance/orderedmap v1.5.1 h1:G1X4PYlljzimbdQ3RXmtIZiQ9d6aRQ3sH1nzjq5mECE=
+github.com/elliotchance/orderedmap v1.5.1/go.mod h1:wsDwEaX5jEoyhbs7x93zk2H/qv0zwuhg4inXhDkYqys=
+github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g=
+github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+github.com/emicklei/proto v1.12.1 h1:6n/Z2pZAnBwuhU66Gs8160B8rrrYKo7h2F2sCOnNceE=
+github.com/emicklei/proto v1.12.1/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A=
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
@@ -489,202 +684,177 @@ github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPO
github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws=
-github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
-github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
+github.com/evanphx/json-patch v5.7.0+incompatible h1:vgGkfT/9f8zE6tvSCe74nfpAVDQ2tG6yudJd8LBksgI=
+github.com/evanphx/json-patch v5.7.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
+github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg=
+github.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ=
github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM=
github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4=
-github.com/facebookgo/clock v0.0.0-20150410010913-600d898af40a h1:yDWHCSQ40h88yih2JAcL6Ls/kVkSE8GFACTGVnMPruw=
-github.com/facebookgo/limitgroup v0.0.0-20150612190941-6abd8d71ec01 h1:IeaD1VDVBPlx3viJT9Md8if8IxxJnO+x0JCGb054heg=
-github.com/facebookgo/muster v0.0.0-20150708232844-fd3d7953fd52 h1:a4DFiKFJiDRGFD1qIcqGLX/WlUMD9dyLSLDt+9QZgt8=
github.com/facebookincubator/flog v0.0.0-20190930132826-d2511d0ce33c/go.mod h1:QGzNH9ujQ2ZUr/CjDGZGWeDAVStrWNjHeEcjJL96Nuk=
github.com/facebookincubator/nvdtools v0.1.5 h1:jbmDT1nd6+k+rlvKhnkgMokrCAzHoASWE5LtHbX2qFQ=
github.com/facebookincubator/nvdtools v0.1.5/go.mod h1:Kh55SAWnjckS96TBSrXI99KrEKH4iB0OJby3N8GRJO4=
-github.com/fairwindsops/pluto/v5 v5.17.0 h1:tTw9C00Sgf+j2v46+D3iRcvF9KTNDD4se1Ph9eaL9jQ=
-github.com/fairwindsops/pluto/v5 v5.17.0/go.mod h1:k8cJm1WcjQ2LAXx7dI85344deHfo40S/WB21tejujg0=
+github.com/fairwindsops/pluto/v5 v5.18.4 h1:jwSWs5zl+yu3uRuzsiZ0huKo1U4p/B8lxGBtuDF2jbU=
+github.com/fairwindsops/pluto/v5 v5.18.4/go.mod h1:X1S9WoMBn2bReAYjoGDZpdaoLI2CHb787IlDaDKsYYU=
github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8=
github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
-github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs=
-github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw=
+github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
+github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
github.com/fatih/set v0.2.1 h1:nn2CaJyknWE/6txyUDGwysr3G5QC6xWB/PtVjPBbeaA=
github.com/fatih/set v0.2.1/go.mod h1:+RKtMCH+favT2+3YecHGxcc0b4KyVWA1QWWJUs4E0CI=
-github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo=
-github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk=
-github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0=
-github.com/fluxcd/helm-controller/api v0.35.0 h1:UyhKXPni5z69DzPW7GtECGGdUwKsB+OTI0A/wc7HmFY=
-github.com/fluxcd/helm-controller/api v0.35.0/go.mod h1:CdHMtr5wM0xgDt/PS147H7QQS+zDxAFgDW3ZN8MnUlU=
-github.com/fluxcd/pkg/apis/acl v0.1.0 h1:EoAl377hDQYL3WqanWCdifauXqXbMyFuK82NnX6pH4Q=
-github.com/fluxcd/pkg/apis/acl v0.1.0/go.mod h1:zfEZzz169Oap034EsDhmCAGgnWlcWmIObZjYMusoXS8=
-github.com/fluxcd/pkg/apis/kustomize v1.1.1 h1:MSGn4z0R9PptmoPFHnx2nEZ8Jtl1sKfw0cuDQY2HYwM=
-github.com/fluxcd/pkg/apis/kustomize v1.1.1/go.mod h1:0pCu0ecIY+ZM0iE/hOHYwCMZ3b0SpBrjJ1SH3FFyYdE=
-github.com/fluxcd/pkg/apis/meta v1.1.1 h1:sLAKLbEu7rRzJ+Mytffu3NcpfdbOBTa6hcpOQzFWm+M=
-github.com/fluxcd/pkg/apis/meta v1.1.1/go.mod h1:soCfzjFWbm1mqybDcOywWKTCEYlH3skpoNGTboVk234=
-github.com/fluxcd/source-controller/api v1.0.1 h1:nycylbNBnQd+EO4UHpqXqAQJ1cGAPxgBbrfERCQ1pp8=
-github.com/fluxcd/source-controller/api v1.0.1/go.mod h1:rAY5FRFGZUKpIFNyYANHIgPgJPvbALBHWsq/zHw/cXQ=
+github.com/felixge/fgprof v0.9.3 h1:VvyZxILNuCiUCSXtPtYmmtGvb65nqXh2QFWc0Wpf2/g=
+github.com/felixge/fgprof v0.9.3/go.mod h1:RdbpDgzqYVh/T9fPELJyV7EYJuHB55UTEULNun8eiPw=
+github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
+github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
+github.com/fluxcd/helm-controller/api v0.37.4 h1:rkBMqYXexyf1s5BS8QpxGi691DsCi+yugIFCM5fNKLU=
+github.com/fluxcd/helm-controller/api v0.37.4/go.mod h1:KFdP5Lbrc4Vv+Jt4xRj6UUo3qiwdBqBPl1xiiAnBe9c=
+github.com/fluxcd/pkg/apis/acl v0.3.0 h1:UOrKkBTOJK+OlZX7n8rWt2rdBmDCoTK+f5TY2LcZi8A=
+github.com/fluxcd/pkg/apis/acl v0.3.0/go.mod h1:WVF9XjSMVBZuU+HTTiSebGAWMgM7IYexFLyVWbK9bNY=
+github.com/fluxcd/pkg/apis/kustomize v1.3.0 h1:qvB46CfaOWcL1SyR2RiVWN/j7/035D0OtB1ltLN7rgI=
+github.com/fluxcd/pkg/apis/kustomize v1.3.0/go.mod h1:PCXf5kktTzNav0aH2Ns3jsowqwmA9xTcsrEOoPzx/K8=
+github.com/fluxcd/pkg/apis/meta v1.5.0 h1:/G82d2Az5D9op3F+wJUpD8jw/eTV0suM6P7+cSURoUM=
+github.com/fluxcd/pkg/apis/meta v1.5.0/go.mod h1:Y3u7JomuuKtr5fvP1Iji2/50FdRe5GcBug2jawNVkdM=
+github.com/fluxcd/source-controller/api v1.3.0 h1:Z5Lq0aJY87yg0cQDEuwGLKS60GhdErCHtsi546HUt10=
+github.com/fluxcd/source-controller/api v1.3.0/go.mod h1:+tfd0vltjcVs/bbnq9AlYR9AAHSVfM/Z4v4TpQmdJf4=
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
+github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
github.com/foxcpp/go-mockdns v1.0.0 h1:7jBqxd3WDWwi/6WhDvacvH1XsN3rOLXyHM1uhvIx6FI=
-github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps=
-github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY=
+github.com/foxcpp/go-mockdns v1.0.0/go.mod h1:lgRN6+KxQBawyIghpnl5CezHFGS9VLzvtVlwxvzXTQ4=
+github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
+github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU=
github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=
-github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
-github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
-github.com/fvbommel/sortorder v1.0.2 h1:mV4o8B2hKboCdkJm+a7uX/SIpZob4JzUpc5GGnM45eo=
-github.com/fvbommel/sortorder v1.0.2/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0=
-github.com/gabriel-vasile/mimetype v1.4.0 h1:Cn9dkdYsMIu56tGho+fqzh7XmvY2YyGU0FnbhiOsEro=
-github.com/gabriel-vasile/mimetype v1.4.0/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8=
+github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
+github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
+github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw=
+github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0=
+github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0=
+github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk=
github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko=
github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg=
-github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/github/go-spdx/v2 v2.1.2 h1:p+Tv0yMgcuO0/vnMe9Qh4tmUgYhI6AsLVlakZ/Sx+DM=
-github.com/github/go-spdx/v2 v2.1.2/go.mod h1:hMCrsFgT0QnCwn7G8gxy/MxMpy67WgZrwFeISTn0o6w=
-github.com/glebarez/go-sqlite v1.20.3 h1:89BkqGOXR9oRmG58ZrzgoY/Fhy5x0M+/WV48U5zVrZ4=
-github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY=
+github.com/github/go-spdx/v2 v2.2.0 h1:yBBLMasHA70Ujd35OpL/OjJOWWVNXcJGbars0GinGRI=
+github.com/github/go-spdx/v2 v2.2.0/go.mod h1:hMCrsFgT0QnCwn7G8gxy/MxMpy67WgZrwFeISTn0o6w=
+github.com/gkampitakis/ciinfo v0.3.0 h1:gWZlOC2+RYYttL0hBqcoQhM7h1qNkVqvRCV1fOvpAv8=
+github.com/gkampitakis/ciinfo v0.3.0/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo=
+github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M=
+github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk=
+github.com/gkampitakis/go-snaps v0.4.12 h1:YeMgKOm0XW3f/Pt2rYpUlpyF8nG6lYGe9oXFJw5LdME=
+github.com/gkampitakis/go-snaps v0.4.12/go.mod h1:PpnF1KPXQAHBdb/DHoi/1VmlwE+ZkVHzl+QHmgzMSz8=
+github.com/glebarez/go-sqlite v1.21.2 h1:3a6LFC4sKahUunAmynQKLZceZCOzUthkRkEAl9gAXWo=
+github.com/glebarez/go-sqlite v1.21.2/go.mod h1:sfxdZyhQjTM2Wry3gVYWaW072Ri1WMdWJi0k6+3382k=
+github.com/glebarez/sqlite v1.10.0 h1:u4gt8y7OND/cCei/NMHmfbLxF6xP2wgKcT/BJf2pYkc=
+github.com/glebarez/sqlite v1.10.0/go.mod h1:IJ+lfSOmiekhQsFTJRx/lHtGYmCdtAiTaf5wI9u5uHA=
+github.com/gliderlabs/ssh v0.3.6 h1:ZzjlDa05TcFRICb3anf/dSPN3ewz1Zx6CMLPWgkm3b8=
+github.com/gliderlabs/ssh v0.3.6/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8=
github.com/go-chi/chi v4.1.2+incompatible h1:fGFk2Gmi/YKXk0OmGfBh0WgmN3XB8lVnEyNz34tQRec=
github.com/go-chi/chi v4.1.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ=
-github.com/go-chi/chi/v5 v5.0.8 h1:lD+NLqFcAi1ovnVZpsnObHGW4xb4J8lNmoYVfECH1Y0=
-github.com/go-chi/chi/v5 v5.0.8/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
-github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4=
-github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg=
-github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f h1:Pz0DHeFij3XFhoBRGUDPzSJ+w2UcK5/0JvF8DRI58r8=
-github.com/go-git/go-git/v5 v5.7.0 h1:t9AudWVLmqzlo+4bqdf7GY+46SUuRsx59SboFxkq2aE=
-github.com/go-git/go-git/v5 v5.7.0/go.mod h1:coJHKEOk5kUClpsNlXrUvPrDxY3w3gjHvhcZd8Fodw8=
+github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU=
+github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow=
+github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
+github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=
+github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4=
+github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gorp/gorp/v3 v3.1.0 h1:ItKF/Vbuj31dmV4jxA1qblpSwkl9g1typ24xoe70IGs=
github.com/go-gorp/gorp/v3 v3.1.0/go.mod h1:dLEjIyyRNiXvNZ8PSmzpt1GsWAUK8kjVhEpjH8TixEw=
+github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A=
+github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8=
+github.com/go-jose/go-jose/v3 v3.0.3 h1:fFKWeig/irsp7XD2zBxvnmA/XaRWp5V3CBsZXJF7G7k=
+github.com/go-jose/go-jose/v3 v3.0.3/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
-github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
-github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ=
-github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
+github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
-github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo=
-github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY=
-github.com/go-openapi/analysis v0.21.4 h1:ZDFLvSNxpDaomuCueM0BlSXxpANBlFYiBvr+GXrvIHc=
-github.com/go-openapi/analysis v0.21.4/go.mod h1:4zQ35W4neeZTqh3ol0rv/O8JBbka9QyAgQRPp9y3pfo=
-github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M=
-github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M=
-github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M=
-github.com/go-openapi/errors v0.20.3 h1:rz6kiC84sqNQoqrtulzaL/VERgkoCyB6WdEkc2ujzUc=
-github.com/go-openapi/errors v0.20.3/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk=
-github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
-github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
-github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE=
-github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs=
-github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns=
-github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo=
-github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE=
-github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
-github.com/go-openapi/loads v0.21.1/go.mod h1:/DtAMXXneXFjbQMGEtbamCZb+4x7eGwkvZCvBmwUG+g=
-github.com/go-openapi/loads v0.21.2 h1:r2a/xFIYeZ4Qd2TnGpWDIQNcP80dIaZgf704za8enro=
-github.com/go-openapi/loads v0.21.2/go.mod h1:Jq58Os6SSGz0rzh62ptiu8Z31I+OTHqmULx5e/gJbNw=
-github.com/go-openapi/runtime v0.24.2 h1:yX9HMGQbz32M87ECaAhGpJjBmErO3QLcgdZj9BzGx7c=
-github.com/go-openapi/runtime v0.24.2/go.mod h1:AKurw9fNre+h3ELZfk6ILsfvPN+bvvlaU/M9q/r9hpk=
-github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I=
-github.com/go-openapi/spec v0.20.6/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA=
-github.com/go-openapi/spec v0.20.7 h1:1Rlu/ZrOCCob0n+JKKJAWhNWMPW8bOZRg8FJaY+0SKI=
-github.com/go-openapi/spec v0.20.7/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA=
-github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg=
-github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k=
-github.com/go-openapi/strfmt v0.21.2/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k=
-github.com/go-openapi/strfmt v0.21.3 h1:xwhj5X6CjXEZZHMWy1zKJxvW9AfHC9pkyUjLvHtKG7o=
-github.com/go-openapi/strfmt v0.21.3/go.mod h1:k+RzNO0Da+k3FrrynSNN8F7n/peCmQQqbbXjtDfvmGg=
-github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
-github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
-github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
-github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g=
-github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
-github.com/go-openapi/validate v0.21.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg=
-github.com/go-openapi/validate v0.22.0 h1:b0QecH6VslW/TxtpKgzpO1SNG7GU2FsaqKdP1E2T50Y=
-github.com/go-openapi/validate v0.22.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg=
-github.com/go-piv/piv-go v1.10.0 h1:P1Y1VjBI5DnXW0+YkKmTuh5opWnMIrKriUaIOblee9Q=
-github.com/go-piv/piv-go v1.10.0/go.mod h1:NZ2zmjVkfFaL/CF8cVQ/pXdXtuj110zEKGdJM6fJZZM=
-github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A=
-github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
-github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU=
-github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
-github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho=
-github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
-github.com/go-playground/validator/v10 v10.11.0 h1:0W+xRM511GY47Yy3bZUbJVitCNg2BOGlCyvTqsp/xIw=
-github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
+github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
+github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
+github.com/go-openapi/analysis v0.22.0 h1:wQ/d07nf78HNj4u+KiSY0sT234IAyePPbMgpUjUJQR0=
+github.com/go-openapi/analysis v0.22.0/go.mod h1:acDnkkCI2QxIo8sSIPgmp1wUlRohV7vfGtAIVae73b0=
+github.com/go-openapi/errors v0.21.0 h1:FhChC/duCnfoLj1gZ0BgaBmzhJC2SL/sJr8a2vAobSY=
+github.com/go-openapi/errors v0.21.0/go.mod h1:jxNTMUxRCKj65yb/okJGEtahVd7uvWnuWfj53bse4ho=
+github.com/go-openapi/jsonpointer v0.20.2 h1:mQc3nmndL8ZBzStEo3JYF8wzmeWffDH4VbXz58sAx6Q=
+github.com/go-openapi/jsonpointer v0.20.2/go.mod h1:bHen+N0u1KEO3YlmqOjTT9Adn1RfD91Ar825/PuiRVs=
+github.com/go-openapi/jsonreference v0.20.4 h1:bKlDxQxQJgwpUSgOENiMPzCTBVuc7vTdXSSgNeAhojU=
+github.com/go-openapi/jsonreference v0.20.4/go.mod h1:5pZJyJP2MnYCpoeoMAql78cCHauHj0V9Lhc506VOpw4=
+github.com/go-openapi/loads v0.21.5 h1:jDzF4dSoHw6ZFADCGltDb2lE4F6De7aWSpe+IcsRzT0=
+github.com/go-openapi/loads v0.21.5/go.mod h1:PxTsnFBoBe+z89riT+wYt3prmSBP6GDAQh2l9H1Flz8=
+github.com/go-openapi/runtime v0.27.1 h1:ae53yaOoh+fx/X5Eaq8cRmavHgDma65XPZuvBqvJYto=
+github.com/go-openapi/runtime v0.27.1/go.mod h1:fijeJEiEclyS8BRurYE1DE5TLb9/KZl6eAdbzjsrlLU=
+github.com/go-openapi/spec v0.20.13 h1:XJDIN+dLH6vqXgafnl5SUIMnzaChQ6QTo0/UPMbkIaE=
+github.com/go-openapi/spec v0.20.13/go.mod h1:8EOhTpBoFiask8rrgwbLC3zmJfz4zsCUueRuPM6GNkw=
+github.com/go-openapi/strfmt v0.22.0 h1:Ew9PnEYc246TwrEspvBdDHS4BVKXy/AOVsfqGDgAcaI=
+github.com/go-openapi/strfmt v0.22.0/go.mod h1:HzJ9kokGIju3/K6ap8jL+OlGAbjpSv27135Yr9OivU4=
+github.com/go-openapi/swag v0.22.9 h1:XX2DssF+mQKM2DHsbgZK74y/zj4mo9I99+89xUmuZCE=
+github.com/go-openapi/swag v0.22.9/go.mod h1:3/OXnFfnMAwBD099SwYRk7GD3xOrr1iL7d/XNLXVVwE=
+github.com/go-openapi/validate v0.22.4 h1:5v3jmMyIPKTR8Lv9syBAIRxG6lY0RqeBPB1LKEijzk8=
+github.com/go-openapi/validate v0.22.4/go.mod h1:qm6O8ZIcPVdSY5219468Jv7kBdGvkiZLPOmqnqTUZ2A=
+github.com/go-piv/piv-go v1.11.0 h1:5vAaCdRTFSIW4PeqMbnsDlUZ7odMYWnHBDGdmtU/Zhg=
+github.com/go-piv/piv-go v1.11.0/go.mod h1:NZ2zmjVkfFaL/CF8cVQ/pXdXtuj110zEKGdJM6fJZZM=
+github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
+github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
+github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
+github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
+github.com/go-playground/validator/v10 v10.16.0 h1:x+plE831WK4vaKHO/jpgUGsvLKIqRRkz6M78GuJAfGE=
+github.com/go-playground/validator/v10 v10.16.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
+github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI=
+github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow=
github.com/go-restruct/restruct v1.2.0-alpha h1:2Lp474S/9660+SJjpVxoKuWX09JsXHSrdV7Nv3/gkvc=
github.com/go-restruct/restruct v1.2.0-alpha/go.mod h1:KqrpKpn4M8OLznErihXTGLlsXFGeLxHUrLRRI/1YjGk=
-github.com/go-rod/rod v0.111.0 h1:aMNNdz10GYPYec9z1WsFqwAdRYVsuufVTOrah7whG3I=
+github.com/go-rod/rod v0.114.5 h1:1x6oqnslwFVuXJbJifgxspJUd3O4ntaGhRLHt+4Er9c=
+github.com/go-rod/rod v0.114.5/go.mod h1:aiedSEFg5DwG/fnNbUOTPMTTWX3MRj6vIs/a684Mthw=
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=
+github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
-github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4=
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
+github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg=
-github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0=
-github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY=
-github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg=
-github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
-github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
-github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs=
-github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI=
-github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI=
-github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk=
-github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28=
-github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo=
-github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk=
-github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw=
-github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360=
-github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg=
-github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE=
-github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8=
+github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
github.com/gobuffalo/logger v1.0.6 h1:nnZNpxYo0zx+Aj9RfMPBm+x9zAU2OayFh/xrAWi34HU=
github.com/gobuffalo/logger v1.0.6/go.mod h1:J31TBEHR1QLV2683OXTAItYIg8pv2JMHnF/quuAbMjs=
-github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc=
-github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc=
-github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4=
-github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4=
github.com/gobuffalo/packd v1.0.1 h1:U2wXfRr4E9DH8IdsDLlRFwTZTK7hLfq9qT/QHXGVe/0=
github.com/gobuffalo/packd v1.0.1/go.mod h1:PP2POP3p3RXGz7Jh6eYEf93S7vA2za6xM7QT85L4+VY=
-github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ=
-github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0=
github.com/gobuffalo/packr/v2 v2.8.3 h1:xE1yzvnO56cUC0sTpKR3DIbxZgB54AftTFMhB2XEWlY=
github.com/gobuffalo/packr/v2 v2.8.3/go.mod h1:0SahksCVcx4IMnigTjiFuyldmTrdTctXsOdiU5KwbKc=
-github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw=
github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
-github.com/goccy/go-yaml v1.11.0 h1:n7Z+zx8S9f9KgzG6KtQKf+kwqXZlLNR2F6018Dgau54=
-github.com/goccy/go-yaml v1.11.0/go.mod h1:H+mJrWtjPTJAHvRbV09MCK9xYwODM+wRTVFFTWckfng=
-github.com/godbus/dbus v4.1.0+incompatible/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw=
+github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
+github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
+github.com/goccy/go-yaml v1.11.3 h1:B3W9IdWbvrUu2OYQGwvU1nZtvMQJPBKgBUuweJjLj6I=
+github.com/goccy/go-yaml v1.11.3/go.mod h1:wKnAMd44+9JAAnGQpWVEgBzGt3YuTaQ4uXoHvE4m7WU=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
-github.com/godror/godror v0.24.2/go.mod h1:wZv/9vPiUib6tkoDl+AZ/QLf5YZgMravZ7jxH2eQWAE=
+github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
+github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
-github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
-github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
+github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
+github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE=
-github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
-github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68=
+github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -716,8 +886,8 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
-github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
+github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
@@ -728,16 +898,16 @@ github.com/golangplus/bytes v1.0.0/go.mod h1:AdRaCFwmc/00ZzELMWb01soso6W1R/++O1X
github.com/golangplus/fmt v1.0.0/go.mod h1:zpM0OfbMCjPtd2qkTD/jX2MgiFCqklhSUFyDW44gVQE=
github.com/golangplus/testing v1.0.0 h1:+ZeeiKZENNOMkTTELoSySazi+XaEhVO0mb+eanrSEUQ=
github.com/golangplus/testing v1.0.0/go.mod h1:ZDreixUV3YzhoVraIDyOzHrr76p6NUh6k/pPg/Q3gYA=
-github.com/gomodule/redigo v1.8.2 h1:H5XSIre1MB5NbPYFp+i1NBbb5qN1W8Y8YAQoAYbkm8k=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU=
github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
-github.com/google/certificate-transparency-go v1.1.6 h1:SW5K3sr7ptST/pIvNkSVWMiJqemRmkjJPPT0jzXdOOY=
-github.com/google/certificate-transparency-go v1.1.6/go.mod h1:0OJjOsOk+wj6aYQgP7FU0ioQ0AJUmnWPFMqTjQeazPQ=
-github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw=
-github.com/google/gnostic v0.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0=
-github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E=
+github.com/google/certificate-transparency-go v1.1.7 h1:IASD+NtgSTJLPdzkthwvAG1ZVbF2WtFg4IvoA68XGSw=
+github.com/google/certificate-transparency-go v1.1.7/go.mod h1:FSSBo8fyMVgqptbfF6j5p/XNdgQftAhSmXcIxV9iphE=
+github.com/google/flatbuffers v2.0.8+incompatible h1:ivUb1cGomAB101ZM1T0nOiWz9pSrTMoa9+EiY7igmkM=
+github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
+github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 h1:0VpGH+cDhbDtdcweoyCVsF3fhN8kejK6rFe/2FFX2nU=
+github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49/go.mod h1:BkkQ4L1KS1xMt2aWSPStnn55ChGC0DPOn2FQYj+f25M=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
@@ -752,12 +922,13 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-containerregistry v0.15.2 h1:MMkSh+tjSdnmJZO7ljvEqV1DjfekB6VUEAZgy3a+TQE=
-github.com/google/go-containerregistry v0.15.2/go.mod h1:wWK+LnOv4jXMM23IT/F1wdYftGWGr47Is8CG+pmHK1Q=
-github.com/google/go-github/v45 v45.2.0 h1:5oRLszbrkvxDDqBCNj2hjDZMKmvexaZ1xw/FCD+K3FI=
-github.com/google/go-github/v45 v45.2.0/go.mod h1:FObaZJEDSTa/WGCzZ2Z3eoCDXWJKMenWWTrd8jrta28=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-containerregistry v0.19.0 h1:uIsMRBV7m/HDkDxE/nXMnv1q+lOOSPlQ/ywc5JbB8Ic=
+github.com/google/go-containerregistry v0.19.0/go.mod h1:u0qB2l7mvtWVR5kNcbFIhFY1hLbf8eeGapA+vbFDCtQ=
+github.com/google/go-github/v55 v55.0.0 h1:4pp/1tNMB9X/LuAhs5i0KQAE40NmiR/y6prLNb9x9cg=
+github.com/google/go-github/v55 v55.0.0/go.mod h1:JLahOTA1DnXzhxEymmFF5PP2tSS9JVNj68mSZNDwskA=
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@@ -765,10 +936,13 @@ github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/licensecheck v0.3.1 h1:QoxgoDkaeC4nFrtGN1jV7IPmDCHFNIVh54e5hSt6sPs=
github.com/google/licensecheck v0.3.1/go.mod h1:ORkR35t/JjW+emNKtfJDII0zlciG9JgbT7SmsohlHmY=
+github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
+github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=
+github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
@@ -778,29 +952,35 @@ github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hf
github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ=
-github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo=
+github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
+github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b h1:RMpPgZTSApbPf7xaVel+QkoGPRLFLrwFO89uDUHEGf0=
+github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/s2a-go v0.1.3 h1:FAgZmpLl/SXurPEZyCMPBIiiYeTbqfjlbdnCNTAkbGE=
-github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A=
+github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
+github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
-github.com/google/trillian v1.5.2 h1:roGP6G8aaAch7vP08+oitPkvmZzxjTfIkguozqJ04Ok=
-github.com/google/trillian v1.5.2/go.mod h1:H8vOoa2dxd3xCdMzOOwt9kIz/3MSoJhcqLJGG8iRwbg=
+github.com/google/tink/go v1.7.0 h1:6Eox8zONGebBFcCBqkVmt60LaWZa6xg1cl/DwAh/J1w=
+github.com/google/tink/go v1.7.0/go.mod h1:GAUOd+QE3pgj9q8VKIGTCP33c/B7eb4NhxLcgTJZStM=
+github.com/google/trillian v1.5.3 h1:3ioA5p09qz+U9/t2riklZtaQdZclaStp0/eQNfewNRg=
+github.com/google/trillian v1.5.3/go.mod h1:p4tcg7eBr7aT6DxrAoILpc3uXNfcuAvZSnQKonVg+Eo=
+github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
+github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
-github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k=
-github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k=
+github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
+github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg=
+github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
+github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0=
@@ -808,33 +988,36 @@ github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0
github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM=
github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM=
github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c=
-github.com/googleapis/gax-go/v2 v2.8.0 h1:UBtEZqx1bjXtOQ5BVTkuYghXrr3N4V123VKJK67vJZc=
-github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI=
+github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo=
+github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY=
+github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA=
+github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E=
github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4=
-github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
github.com/gookit/color v1.2.5/go.mod h1:AhIE+pS6D4Ql0SQWbBeXPHw7gY0/sjHoA4s/n1KB7xg=
github.com/gookit/color v1.4.2/go.mod h1:fqRyamkC1W8uxl+lxCQxOT09l/vYfZ+QeiX3rKQHCoQ=
github.com/gookit/color v1.5.0/go.mod h1:43aQb+Zerm/BWh2GnrgOQm7ffz7tvQXEKV6BFMl7wAo=
-github.com/gookit/color v1.5.3 h1:twfIhZs4QLCtimkP7MOxlF3A0U/5cDPseRT9M/+2SCE=
-github.com/gookit/color v1.5.3/go.mod h1:NUzwzeehUfl7GIb36pqId+UGmRfQcU/WiiyTTeNjHtE=
+github.com/gookit/color v1.5.4 h1:FZmqs7XOyGgCAxmWyPslpiok1k05wmY3SJTytgvYFs0=
+github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4=
-github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
-github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
-github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
+github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q=
+github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
+github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
+github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY=
github.com/gosuri/uitable v0.0.4/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo=
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM=
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
-github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
-github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
-github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
+github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
-github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 h1:RtRsiaGvWxcwd8y3BiRZxsylPT8hLWZ5SPcfI+3IDNk=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0/go.mod h1:TzP6duP4Py2pHLVPPQp42aoYI92+PCrVotyR5e8Vqlk=
+github.com/hako/durafmt v0.0.0-20210608085754-5c1018a4e16b h1:wDUNC2eKiL35DbLvsDhiblTUXHxcOPwQSCzi7xpQUN4=
+github.com/hako/durafmt v0.0.0-20210608085754-5c1018a4e16b/go.mod h1:VzxiSdG6j1pi7rwGm/xYI5RbtpBgM8sARDXlvEvxlu0=
github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M=
-github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
@@ -843,112 +1026,109 @@ github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtng
github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
-github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
+github.com/hashicorp/go-getter v1.7.5 h1:dT58k9hQ/vbxNMwoI5+xFYAJuv6152UNvdHokfI5wE4=
+github.com/hashicorp/go-getter v1.7.5/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744=
github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
github.com/hashicorp/go-hclog v1.0.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
-github.com/hashicorp/go-hclog v1.3.1 h1:vDwF1DFNZhntP4DAjuTpOw3uEgMUpXh1pB5fW9DqHpo=
-github.com/hashicorp/go-hclog v1.3.1/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
+github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=
+github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
-github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc=
github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA=
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
-github.com/hashicorp/go-plugin v1.4.5 h1:oTE/oQR4eghggRg8VY7PAz3dr++VwDNBGCcOfIvHpBo=
-github.com/hashicorp/go-plugin v1.4.5/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s=
github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
-github.com/hashicorp/go-retryablehttp v0.7.1 h1:sUiuQAnLlbvmExtFQs72iFW/HXeUn8Z1aJLQ4LJJbTQ=
-github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
-github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
+github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU=
+github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk=
github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc=
github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=
-github.com/hashicorp/go-secure-stdlib/mlock v0.1.2 h1:p4AKXPPS24tO8Wc8i1gLvSKdmkiSY5xuju57czJ/IJQ=
-github.com/hashicorp/go-secure-stdlib/mlock v0.1.2/go.mod h1:zq93CJChV6L9QTfGKtfBxKqD7BqqXx5O04A/ns2p5+I=
+github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo=
+github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I=
github.com/hashicorp/go-secure-stdlib/parseutil v0.1.7 h1:UpiO20jno/eV1eVZcxqWnUohyKRe1g8FPV/xH1s/2qs=
github.com/hashicorp/go-secure-stdlib/parseutil v0.1.7/go.mod h1:QmrqtbKuxxSWTN3ETMPuB+VtEiBJ/A9XhoYGv8E1uD8=
github.com/hashicorp/go-secure-stdlib/strutil v0.1.1/go.mod h1:gKOamz3EwoIoJq7mlMIRBpVTAUn8qPCrEclOKKWhD3U=
github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9CdjCtrXrXGuOpxEA7Ts=
github.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4=
github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
-github.com/hashicorp/go-sockaddr v1.0.2 h1:ztczhD1jLxIRjVejw8gFomI1BQZOe2WoVOu0SyteCQc=
github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A=
+github.com/hashicorp/go-sockaddr v1.0.5 h1:dvk7TIXCZpmfOlM+9mlcrWmWjw/wlKT+VDq2wMvfPJU=
+github.com/hashicorp/go-sockaddr v1.0.5/go.mod h1:uoUUmtwU7n9Dv3O4SNLeFvg0SxQ3lyjsj6+CCykpaxI=
github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
-github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=
github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
+github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=
+github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
-github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
+github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c=
+github.com/hashicorp/golang-lru/arc/v2 v2.0.5 h1:l2zaLDubNhW4XO3LnliVj0GXO3+/CGNJAg1dcN2Fpfw=
+github.com/hashicorp/golang-lru/arc/v2 v2.0.5/go.mod h1:ny6zBSQZi2JxIeYcv7kt2sH2PXJtirBN7RDhRpxPkxU=
+github.com/hashicorp/golang-lru/v2 v2.0.5 h1:wW7h1TG88eUIJ2i69gaE3uNVtEPIagzhGvHgwfx2Vm4=
+github.com/hashicorp/golang-lru/v2 v2.0.5/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
+github.com/hashicorp/hcl v1.0.1-vault-5 h1:kI3hhbbyzr4dldA8UdTb7ZlVVlI2DACdCfz31RPDgJM=
+github.com/hashicorp/hcl v1.0.1-vault-5/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM=
github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
-github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY=
github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc=
-github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=
github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=
-github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk=
github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4=
-github.com/hashicorp/vault/api v1.8.0 h1:7765sW1XBt+qf4XKIYE4ebY9qc/yi9V2/egzGSUNMZU=
-github.com/hashicorp/vault/api v1.8.0/go.mod h1:uJrw6D3y9Rv7hhmS17JQC50jbPDAZdjZoTtrCCxxs7E=
-github.com/hashicorp/vault/sdk v0.6.0 h1:6Z+In5DXHiUfZvIZdMx7e2loL1PPyDjA4bVh9ZTIAhs=
-github.com/hashicorp/vault/sdk v0.6.0/go.mod h1:+DRpzoXIdMvKc88R4qxr+edwy/RvH5QK8itmxLiDHLc=
-github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=
-github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
+github.com/hashicorp/vault/api v1.10.0 h1:/US7sIjWN6Imp4o/Rj1Ce2Nr5bki/AXi9vAW3p2tOJQ=
+github.com/hashicorp/vault/api v1.10.0/go.mod h1:jo5Y/ET+hNyz+JnKDt8XLAdKs+AM0G5W0Vp1IrFI8N8=
+github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
+github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec h1:qv2VnGeEQHchGaZ/u7lxST/RaJw+cv273q79D81Xbog=
github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec/go.mod h1:Q48J4R4DvxnHolD5P8pOtXigYlRuPLGl6moFx3ulM68=
-github.com/honeycombio/beeline-go v1.10.0 h1:cUDe555oqvw8oD76BQJ8alk7FP0JZ/M/zXpNvOEDLDc=
-github.com/honeycombio/libhoney-go v1.16.0 h1:kPpqoz6vbOzgp7jC6SR7SkNj7rua7rgxvznI6M3KdHc=
-github.com/howeyc/gopass v0.0.0-20190910152052-7cb4b85ec19c/go.mod h1:lADxMC39cJJqL93Duh1xhAs4I2Zs8mKS89XWXFGp9cs=
+github.com/howeyc/gopass v0.0.0-20210920133722-c8aef6fb66ef h1:A9HsByNhogrvm9cWb28sjiS3i7tcKCkflWFEkHfuAgM=
+github.com/howeyc/gopass v0.0.0-20210920133722-c8aef6fb66ef/go.mod h1:lADxMC39cJJqL93Duh1xhAs4I2Zs8mKS89XWXFGp9cs=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
-github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
-github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU=
github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
-github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 h1:i462o439ZjprVSFSZLZxcsoAe592sZB1rci2Z8j4wdk=
-github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA=
github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
+github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI=
+github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w=
github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
-github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
-github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM=
-github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
-github.com/in-toto/in-toto-golang v0.3.4-0.20220709202702-fa494aaa0add h1:DAh7mHiRT7wc6kKepYdCpH16ElPciMPQWJaJ7H3l/ng=
-github.com/in-toto/in-toto-golang v0.3.4-0.20220709202702-fa494aaa0add/go.mod h1:DQI8vlV6h6qSY/tCOoYKtxjWrkyiNpJ3WTV/WoBllmQ=
+github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4=
+github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
+github.com/in-toto/in-toto-golang v0.9.0 h1:tHny7ac4KgtsfrG6ybU8gVOZux2H8jN05AXJ9EBM1XU=
+github.com/in-toto/in-toto-golang v0.9.0/go.mod h1:xsBVrVsHNsB61++S6Dy2vWosKhuA3lUTQd+eF9HdeMo=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
+github.com/invopop/jsonschema v0.12.0 h1:6ovsNSuvn9wEQVOyc72aycBMVQFKz7cPdMJn10CvzRI=
+github.com/invopop/jsonschema v0.12.0/go.mod h1:ffZ5Km5SWWRAIN6wbDXItl95euhFz2uON45H2qjYt+0=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
-github.com/jedisct1/go-minisign v0.0.0-20211028175153-1c139d1cc84b h1:ZGiXF8sz7PDk6RgkP+A/SFfUD0ZR/AgG6SpRNEDKZy8=
-github.com/jedisct1/go-minisign v0.0.0-20211028175153-1c139d1cc84b/go.mod h1:hQmNrgofl+IY/8L+n20H6E6PWBBTokdsv+q49j0QhsU=
-github.com/jellydator/ttlcache/v2 v2.11.1 h1:AZGME43Eh2Vv3giG6GeqeLeFXxwxn1/qHItqWZl6U64=
-github.com/jellydator/ttlcache/v2 v2.11.1/go.mod h1:RtE5Snf0/57e+2cLWFYWCCsLas2Hy3c5Z4n14XmSvTI=
-github.com/jhump/protoreflect v1.13.0 h1:zrrZqa7JAc2YGgPSzZZkmUXJ5G6NRPdxOg/9t7ISImA=
-github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg=
-github.com/jinzhu/copier v0.3.5/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
+github.com/jedisct1/go-minisign v0.0.0-20230811132847-661be99b8267 h1:TMtDYDHKYY15rFihtRfck/bfFqNfvcabqvXAFQfAUpY=
+github.com/jedisct1/go-minisign v0.0.0-20230811132847-661be99b8267/go.mod h1:h1nSAbGFqGVzn6Jyl1R/iCcBUHN4g+gW1u9CoBTrb9E=
+github.com/jellydator/ttlcache/v3 v3.1.1 h1:RCgYJqo3jgvhl+fEWvjNW8thxGWsgxi+TPhRir1Y9y8=
+github.com/jellydator/ttlcache/v3 v3.1.1/go.mod h1:hi7MGFdMAwZna5n2tuvh63DvFLzVKySzCVW6+0gA2n4=
+github.com/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8=
+github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
+github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
+github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
+github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
+github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
-github.com/jmhodges/clock v0.0.0-20160418191101-880ee4c33548 h1:dYTbLf4m0a5u0KLmPfB6mgxbcV7588bOCx79hxa5Sr4=
+github.com/jmhodges/clock v1.2.0 h1:eq4kys+NI0PLngzaHEe7AmPT90XMGIEySD1JfV1PDIs=
+github.com/jmhodges/clock v1.2.0/go.mod h1:qKjhA7x7u/lQpPB1XAqX1b1lCI/w3/fNuYpI/ZjLynI=
github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g=
github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ=
-github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
-github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
-github.com/jonboulle/clockwork v0.3.0 h1:9BSCMi8C+0qdApAp4auwX0RkLGUjs956h0EkuQymUhg=
-github.com/jonboulle/clockwork v0.3.0/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8=
+github.com/jonboulle/clockwork v0.4.0 h1:p4Cf1aMWXnXAUh8lVfewRBx1zaTSYKrKMF2g3ST4RZ4=
+github.com/jonboulle/clockwork v0.4.0/go.mod h1:xgRqUGwRcjKCO1vbZUEtSLrqKoPSsUpK7fnezOII0kc=
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
@@ -962,43 +1142,43 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
-github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw=
-github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4=
-github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA=
github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw=
github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk=
+github.com/kastenhq/goversion v0.0.0-20230811215019-93b2f8823953 h1:WdAeg/imY2JFPc/9CST4bZ80nNJbiBFCAdSZCSgrS5Y=
+github.com/kastenhq/goversion v0.0.0-20230811215019-93b2f8823953/go.mod h1:6o+UrvuZWc4UTyBhQf0LGjW9Ld7qJxLz/OqvSOWWlEc=
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
-github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.11.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
-github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI=
-github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
-github.com/klauspost/cpuid v1.2.0 h1:NMpwD2G9JSFOE1/TJjGSo5zG7Yb2bTe7eq1jH+irmeE=
+github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
+github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
+github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.0.10/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c=
github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c=
-github.com/klauspost/cpuid/v2 v2.2.3 h1:sxCkb+qR91z4vsqw4vGGZlDgPz3G7gjaLyK3V8y70BU=
-github.com/klauspost/pgzip v1.2.5 h1:qnWYvvKqedOF2ulHpMG72XQol4ILEJ8k2wwRl/Km8oE=
+github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg=
+github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
+github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU=
+github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
+github.com/knqyf263/go-apk-version v0.0.0-20200609155635-041fdbb8563f h1:GvCU5GXhHq+7LeOzx/haG7HSIZokl3/0GkoUFzsRJjg=
+github.com/knqyf263/go-apk-version v0.0.0-20200609155635-041fdbb8563f/go.mod h1:q59u9px8b7UTj0nIjEjvmTWekazka6xIt6Uogz5Dm+8=
+github.com/knqyf263/go-deb-version v0.0.0-20190517075300-09fca494f03d h1:X4cedH4Kn3JPupAwwWuo4AzYp16P0OyLO9d7OnMZc/c=
+github.com/knqyf263/go-deb-version v0.0.0-20190517075300-09fca494f03d/go.mod h1:o8sgWoz3JADecfc/cTYD92/Et1yMqMy0utV1z+VaZao=
github.com/knqyf263/go-rpmdb v0.0.0-20230301153543-ba94b245509b h1:boYyvL3tbUuKcMN029mpCl7oYYJ7yIXujLj+fiW4Alc=
github.com/knqyf263/go-rpmdb v0.0.0-20230301153543-ba94b245509b/go.mod h1:9LQcoMCMQ9vrF7HcDtXfvqGO4+ddxFQ8+YF/0CVGDww=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/kortschak/utter v1.0.1/go.mod h1:vSmSjbyrlKjjsL71193LmzBOKgwePk9DH6uFaWHIInc=
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
@@ -1011,13 +1191,11 @@ github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq
github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o=
github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk=
github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw=
-github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w=
-github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
-github.com/letsencrypt/boulder v0.0.0-20220929215747-76583552c2be h1:Cx2bsfM27RBF/45zP1xhFN9FHDxo40LdYdE5L+GWVTw=
-github.com/letsencrypt/boulder v0.0.0-20220929215747-76583552c2be/go.mod h1:j/WMsOEcTSfy6VR1PkiIo20qH1V9iRRzb7ishoKkN0g=
+github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q=
+github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
+github.com/letsencrypt/boulder v0.0.0-20231026200631-000cd05d5491 h1:WGrKdjHtWC67RX96eTkYD2f53NDHhrq/7robWTAfk4s=
+github.com/letsencrypt/boulder v0.0.0-20231026200631-000cd05d5491/go.mod h1:o158RFmdEbYyIZmXAbrvmJWesbyxlLKee6X64VPVuOc=
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
-github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
-github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0=
@@ -1027,29 +1205,25 @@ github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z
github.com/lithammer/fuzzysearch v1.1.8 h1:/HIuJnjHuXS8bKaiTMeeDlW2/AyIWk2brx1V8LFgLN4=
github.com/lithammer/fuzzysearch v1.1.8/go.mod h1:IdqeyBClc3FFqSzYq/MXESsS4S0FsZ5ajtkr5xPLts4=
github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381 h1:bqDmpDG49ZRnB5PcgP0RXtQvnMSgIF14M7CBd2shtXs=
+github.com/logrusorgru/aurora v0.0.0-20200102142835-e9ef32dff381/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w=
-github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
-github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
-github.com/magiconair/properties v1.8.4/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
-github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
-github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
-github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
github.com/markbates/errx v1.1.0 h1:QDFeR+UP95dO12JgW+tgi2UVfo0V8YBHiUIOaeBPiEI=
github.com/markbates/errx v1.1.0/go.mod h1:PLa46Oex9KNbVDZhKel8v1OT7hD5JZ2eI7AHhA0wswc=
-github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE=
github.com/markbates/oncer v1.0.0 h1:E83IaVAHygyndzPimgUYJjbshhDTALZyXxvk9FOlQRY=
github.com/markbates/oncer v1.0.0/go.mod h1:Z59JA581E9GP6w96jai+TGqafHPW+cPfRxz2aSZ0mcI=
github.com/markbates/safe v1.0.1 h1:yjZkbvRM6IzKj9tlu/zMJLS0n/V351OZWRnF3QfaUxI=
github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0=
-github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A=
-github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA=
+github.com/maruel/natural v1.1.0 h1:2z1NgP/Vae+gYrtC0VuvrTJ6U35OuyUqDdfluLqMWuQ=
+github.com/maruel/natural v1.1.0/go.mod h1:eFVhYCcUOfZFxXoDZam8Ktya72wa79fNC3lc/leA0DQ=
+github.com/masahiro331/go-mvn-version v0.0.0-20210429150710-d3157d602a08 h1:AevUBW4cc99rAF8q8vmddIP8qd/0J5s/UyltGbp66dg=
+github.com/masahiro331/go-mvn-version v0.0.0-20210429150710-d3157d602a08/go.mod h1:JOkBRrE1HvgTyjk6diFtNGgr8XJMtIfiBzkL5krqzVk=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
@@ -1059,28 +1233,30 @@ github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
-github.com/mattn/go-isatty v0.0.6/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
+github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84=
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
-github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
-github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98=
-github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
-github.com/mattn/go-oci8 v0.1.1/go.mod h1:wjDx6Xm9q7dFtHJvIlrI99JytznLw5wQ4R+9mNXJwGI=
+github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/mattn/go-localereader v0.0.2-0.20220822084749-2491eb6c1c75 h1:P8UmIzZMYDR+NGImiFvErt6VWfIRPuGM+vyjiEdkmIw=
+github.com/mattn/go-localereader v0.0.2-0.20220822084749-2491eb6c1c75/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88=
+github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
+github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
-github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU=
-github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
+github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
+github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
-github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U=
github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
-github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
-github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
+github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg=
+github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k=
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI=
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
@@ -1091,18 +1267,18 @@ github.com/microsoft/go-rustaudit v0.0.0-20220730194248-4b17361d90a5/go.mod h1:v
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso=
github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI=
-github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA=
+github.com/miekg/dns v1.1.55 h1:GoQ4hpsj0nFLYe+bWiCToyrBEJXkQfOOIvFGFy0lEgo=
+github.com/miekg/dns v1.1.55/go.mod h1:uInx36IzPl7FYnDcMeVWxj9byh7DutNykX4G9Sj60FY=
github.com/miekg/pkcs11 v1.0.3-0.20190429190417-a667d056470f/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs=
-github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs=
github.com/miekg/pkcs11 v1.1.1 h1:Ugu9pdy6vAYku5DEpVWVFPYnzV+bxB+iRdbuFSu7TvU=
github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs=
+github.com/mikefarah/yq/v4 v4.43.1 h1:1bCrQwVDhjGnPboQidy30hu6U2TCd8sUQTy1hKCHOGI=
+github.com/mikefarah/yq/v4 v4.43.1/go.mod h1:jcSqtyUKbPWvwaa8cNw8Ej4rmPb3iWE8zYvpkTvM7oc=
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI=
-github.com/mitchellh/cli v1.1.5/go.mod h1:v8+iFts2sPIKUV1ltktPXMCC8fumSKFItNcD2cLtRR4=
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
-github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
@@ -1111,13 +1287,10 @@ github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp
github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0=
github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
-github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4=
github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE=
-github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
-github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
@@ -1127,13 +1300,20 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg=
github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc=
-github.com/moby/moby v24.0.2+incompatible h1:yH+5dRHH1x3XRKzl1THA2aGTy6CHYnkt5N924ADMax8=
-github.com/moby/moby v24.0.2+incompatible/go.mod h1:fDXVQ6+S340veQPv35CzDahGBmHsiclFwfEygB/TWMc=
+github.com/moby/moby v24.0.9+incompatible h1:Z/hFbZJqC5Fmuf6jesMLdHU71CMAgdiSJ1ZYey+bFmg=
+github.com/moby/moby v24.0.9+incompatible/go.mod h1:fDXVQ6+S340veQPv35CzDahGBmHsiclFwfEygB/TWMc=
github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8=
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78=
-github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA=
-github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
+github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI=
+github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc=
+github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo=
+github.com/moby/sys/signal v0.7.0 h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI=
+github.com/moby/sys/signal v0.7.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg=
+github.com/moby/sys/user v0.1.0 h1:WmZ93f5Ux6het5iituh9x2zAG7NFY9Aqi49jjE1PaQg=
+github.com/moby/sys/user v0.1.0/go.mod h1:fKJhFOnsCN6xZ5gSfbM6zaHGgDJMrqt9/reuj4T7MmU=
+github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0=
+github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -1150,23 +1330,31 @@ github.com/mozillazg/docker-credential-acr-helper v0.3.0 h1:DVWFZ3/O8BP6Ue3iS/Ol
github.com/mozillazg/docker-credential-acr-helper v0.3.0/go.mod h1:cZlu3tof523ujmLuiNUb6JsjtHcNA70u1jitrrdnuyA=
github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de h1:D5x39vF5KCwKQaw+OC9ZPiLVHXz3UFw2+psEX+gYcto=
github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de/go.mod h1:kJun4WP5gFuHZgRjZUWWuH1DTxCtxbHDOIJsudS8jzY=
+github.com/muesli/ansi v0.0.0-20211031195517-c9f0611b6c70 h1:kMlmsLSbjkikxQJ1IPwaM+7LJ9ltFu/fi8CRzvSnQmA=
+github.com/muesli/ansi v0.0.0-20211031195517-c9f0611b6c70/go.mod h1:fQuZ0gauxyBcmsdE3ZT4NasjaRdxmbCS0jRHsrWu3Ho=
+github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=
+github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
+github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s=
+github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8=
+github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo=
+github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus=
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
-github.com/nelsam/hel/v2 v2.3.2/go.mod h1:1ZTGfU2PFTOd5mx22i5O0Lc2GY933lQ2wb/ggy+rL3w=
-github.com/nelsam/hel/v2 v2.3.3/go.mod h1:1ZTGfU2PFTOd5mx22i5O0Lc2GY933lQ2wb/ggy+rL3w=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/nozzle/throttler v0.0.0-20180817012639-2ea982251481 h1:Up6+btDp321ZG5/zdSLo48H9Iaq0UQGthrhWC6pCxzE=
+github.com/nozzle/throttler v0.0.0-20180817012639-2ea982251481/go.mod h1:yKZQO8QE2bHlgozqWDiRVqTFlLQSj30K/6SAK8EeYFw=
github.com/nwaples/rardecode v1.1.0 h1:vSxaY8vQhOcVr4mm5e8XllHWTiM4JF507A0Katqw7MQ=
github.com/nwaples/rardecode v1.1.0/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
-github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA=
-github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU=
github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
+github.com/oleiade/reflections v1.0.1 h1:D1XO3LVEYroYskEsoSiGItp9RUxG6jWnCVvrqH0HHQM=
+github.com/oleiade/reflections v1.0.1/go.mod h1:rdFxbxq4QXVZWj0F+e9jqjDkc7dbp97vkRixKo2JR60=
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
@@ -1175,90 +1363,102 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
-github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q=
+github.com/onsi/ginkgo/v2 v2.17.1 h1:V++EzdbhI4ZV4ev0UTIj0PzhzOcReJFyJaLjtSF55M8=
+github.com/onsi/ginkgo/v2 v2.17.1/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro=
-github.com/onsi/gomega v1.27.7 h1:fVih9JD6ogIiHUN6ePK7HJidyEDpWGVB5mzM7cWNXoU=
-github.com/open-policy-agent/opa v0.45.0 h1:P5nuhVRtR+e58fk3CMMbiqr6ZFyWQPNOC3otsorGsFs=
-github.com/open-policy-agent/opa v0.45.0/go.mod h1:/OnsYljNEWJ6DXeFOOnoGn8CvwZGMUS4iRqzYdJvmBI=
+github.com/onsi/gomega v1.32.0 h1:JRYU78fJ1LPxlckP6Txi/EYqJvjtMrDC04/MM5XRHPk=
+github.com/onsi/gomega v1.32.0/go.mod h1:a4x4gW6Pz2yK1MAmvluYme5lvYTn61afQ2ETw/8n4Lg=
+github.com/open-policy-agent/opa v0.61.0 h1:nhncQ2CAYtQTV/SMBhDDPsCpCQsUW+zO/1j+T5V7oZg=
+github.com/open-policy-agent/opa v0.61.0/go.mod h1:7OUuzJnsS9yHf8lw0ApfcbrnaRG1EkN3J2fuuqi4G/E=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
-github.com/opencontainers/image-spec v1.1.0-rc4 h1:oOxKUJWnFC4YGHCCMNql1x4YaDfYBTS5Y4x/Cgeo1E0=
-github.com/opencontainers/image-spec v1.1.0-rc4/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8=
+github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug=
+github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM=
+github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg=
+github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
+github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU=
+github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec=
github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
-github.com/otiai10/copy v1.12.0 h1:cLMgSQnXBs1eehF0Wy/FAGsgDTDmAqFR7rQylBb1nDY=
-github.com/otiai10/copy v1.12.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww=
+github.com/openvex/go-vex v0.2.5 h1:41utdp2rHgAGCsG+UbjmfMG5CWQxs15nGqir1eRgSrQ=
+github.com/openvex/go-vex v0.2.5/go.mod h1:j+oadBxSUELkrKh4NfNb+BPo77U3q7gdKME88IO/0Wo=
+github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU=
+github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w=
github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks=
+github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM=
+github.com/owenrumney/go-sarif v1.1.2-0.20231003122901-1000f5e05554 h1:FvA4bwjKpPqik5WsQ8+4z4DKWgA1tO1RTTtNKr5oYNA=
+github.com/owenrumney/go-sarif v1.1.2-0.20231003122901-1000f5e05554/go.mod h1:n73K/hcuJ50MiVznXyN4rde6fZY7naGKWBXOLFTyc94=
+github.com/package-url/packageurl-go v0.1.1 h1:KTRE0bK3sKbFKAk3yy63DpeskU7Cvs/x/Da5l+RtzyU=
+github.com/package-url/packageurl-go v0.1.1/go.mod h1:uQd4a7Rh3ZsVg5j0lNyAfyxIeGde9yrlhjF78GzeW0c=
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
-github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY=
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
-github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
-github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE=
-github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc=
-github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
+github.com/pborman/indent v1.2.1 h1:lFiviAbISHv3Rf0jcuh489bi06hj98JsVMtIDZQb9yM=
+github.com/pborman/indent v1.2.1/go.mod h1:FitS+t35kIYtB5xWTZAPhnmrxcciEEOdbyrrpz5K6Vw=
+github.com/pborman/uuid v1.2.1 h1:+ZZIw58t/ozdjRaXh/3awHfmWRbzYxJoAdNJxe/3pvw=
+github.com/pborman/uuid v1.2.1/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
-github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ=
-github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4=
+github.com/pelletier/go-toml/v2 v2.2.0 h1:QLgLl2yMN7N+ruc31VynXs1vhMZa7CeHHejIeBAsoHo=
+github.com/pelletier/go-toml/v2 v2.2.0/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI=
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
github.com/petergtz/pegomock v2.9.0+incompatible h1:BKfb5XfkJfehe5T+O1xD4Zm26Sb9dnRj7tHxLYwUPiI=
+github.com/petergtz/pegomock v2.9.0+incompatible/go.mod h1:nuBLWZpVyv/fLo56qTwt/AUau7jgouO1h7bEvZCq82o=
github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI=
-github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM=
-github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
+github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE=
github.com/pierrec/lz4/v4 v4.1.2/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
-github.com/pierrec/lz4/v4 v4.1.15 h1:MO0/ucJhngq7299dKLwIMtgTfbkoSPF6AoMYDd8Q4q0=
-github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
+github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ=
+github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI=
+github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
+github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
+github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/profile v1.7.0 h1:hnbDkaNWPCLMO9wGLdBFTIZvzDrDfBM2072E1S9gJkA=
+github.com/pkg/profile v1.7.0/go.mod h1:8Uer0jas47ZQMJ7VD+OHknK4YDY07LPUC6dEvqDjvNo=
github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
-github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
+github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s=
-github.com/poy/onpar v0.0.0-20200406201722-06f95a1c68e8/go.mod h1:nSbFQvMj97ZyhFRSJYtut+msi4sOY6zJDGCdSc+/rZU=
github.com/poy/onpar v1.1.2 h1:QaNrNiZx0+Nar5dLgTVp5mXkyoVFIbepjyEoGSnhbAY=
github.com/poy/onpar v1.1.2/go.mod h1:6X8FLNoxyr9kkmnlqpK6LSoiOtrO6MICtWwEuWkLjzg=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
-github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g=
github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
-github.com/prometheus/client_golang v1.15.1 h1:8tXpTmJbyH5lydzFPoxSIJ0J46jdh3tylbvM1xCv0LI=
-github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk=
+github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk=
+github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY=
-github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
-github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
-github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
+github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw=
+github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI=
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc=
github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
-github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM=
-github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc=
+github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM=
+github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
-github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ=
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
-github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI=
-github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY=
-github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
-github.com/protocolbuffers/txtpbfmt v0.0.0-20220428173112-74888fd59c2b h1:zd/2RNzIRkoGGMjE+YIsZ85CnDIz672JK2F3Zl4vux4=
-github.com/protocolbuffers/txtpbfmt v0.0.0-20220428173112-74888fd59c2b/go.mod h1:KjY0wibdYKc4DYkerHSbguaf3JeIPGhNJBp2BNiFH78=
+github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
+github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
+github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
+github.com/protocolbuffers/txtpbfmt v0.0.0-20231025115547-084445ff1adf h1:014O62zIzQwvoD7Ekj3ePDF5bv9Xxy0w6AZk0qYbjUk=
+github.com/protocolbuffers/txtpbfmt v0.0.0-20231025115547-084445ff1adf/go.mod h1:jgxiZysxFPM+iWKwQwPR+y+Jvo54ARd4EisXxKYpB5c=
github.com/pterm/pterm v0.12.27/go.mod h1:PhQ89w4i95rhgE+xedAoqous6K9X+r6aSOI2eFF7DZI=
github.com/pterm/pterm v0.12.29/go.mod h1:WI3qxgvoQFFGKGjGnJR849gU0TsEOvKn5Q8LlY1U7lg=
github.com/pterm/pterm v0.12.30/go.mod h1:MOqLIyMOgmTDz9yorcYbcw+HsgoZo3BQfg2wtl3HEFE=
@@ -1266,31 +1466,33 @@ github.com/pterm/pterm v0.12.31/go.mod h1:32ZAWZVXD7ZfG0s8qqHXePte42kdz8ECtRyEej
github.com/pterm/pterm v0.12.33/go.mod h1:x+h2uL+n7CP/rel9+bImHD5lF3nM9vJj80k9ybiiTTE=
github.com/pterm/pterm v0.12.36/go.mod h1:NjiL09hFhT/vWjQHSj1athJpx6H8cjpHXNAK5bUw8T8=
github.com/pterm/pterm v0.12.40/go.mod h1:ffwPLwlbXxP+rxT0GsgDTzS3y3rmpAO1NMjUkGTYf8s=
-github.com/pterm/pterm v0.12.62 h1:Xjj5Wl6UR4Il9xOiDUOZRwReRTdO75if/JdWsn9I59s=
-github.com/pterm/pterm v0.12.62/go.mod h1:+c3ujjE7N5qmNx6eKAa7YVSC6m/gCorJJKhzwYTbL90=
-github.com/qur/ar v0.0.0-20130629153254-282534b91770/go.mod h1:SjlYv2m9lpV0UW6K7lDqVJwEIIvSjaHbGk7nIfY8Hxw=
+github.com/pterm/pterm v0.12.78 h1:QTWKaIAa4B32GKwqVXtu9m1DUMgWw3VRljMkMevX+b8=
+github.com/pterm/pterm v0.12.78/go.mod h1:1v/gzOF1N0FsjbgTHZ1wVycRkKiatFvJSJC4IGaQAAo=
github.com/rakyll/hey v0.1.4 h1:hhc8GIqHN4+rPFZvkM9lkCQGi7da0sINM83xxpFkbPA=
github.com/rakyll/hey v0.1.4/go.mod h1:nAOTOo+L52KB9SZq/M6J18kxjto4yVtXQDjU2HgjUPI=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
+github.com/redis/go-redis/extra/rediscmd/v9 v9.0.5 h1:EaDatTxkdHG+U3Bk4EUr+DZ7fOGwTfezUiUJMaIcaho=
+github.com/redis/go-redis/extra/rediscmd/v9 v9.0.5/go.mod h1:fyalQWdtzDBECAQFBJuQe5bzQ02jGd5Qcbgb97Flm7U=
+github.com/redis/go-redis/extra/redisotel/v9 v9.0.5 h1:EfpWLLCyXw8PSM2/XNJLjI3Pb27yVE+gIAfeqp8LUCc=
+github.com/redis/go-redis/extra/redisotel/v9 v9.0.5/go.mod h1:WZjPDy7VNzn77AAfnAfVjZNvfJTYfPetfZk5yoSTLaQ=
+github.com/redis/go-redis/v9 v9.3.0 h1:RiVDjmig62jIWp7Kk4XVLs0hzV6pI3PyTnnL0cnn0u0=
+github.com/redis/go-redis/v9 v9.3.0/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
+github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
+github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis=
github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
-github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
-github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
-github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
-github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
-github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
-github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
-github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
-github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
-github.com/rs/zerolog v1.29.1 h1:cO+d60CHkknCbvzEWxP0S9K6KqyTjrCNUy1LdQLCGPc=
-github.com/rs/zerolog v1.29.1/go.mod h1:Le6ESbR7hc+DP6Lt1THiV8CQSdkkNrd3R0XbEgp3ZBU=
-github.com/rubenv/sql-migrate v1.4.0 h1:y4ndB3hq5tmjvQ8jcuqhLgeEqoxIjEidN5RaCkKOAAE=
-github.com/rubenv/sql-migrate v1.4.0/go.mod h1:lRxHt4vTgRJtpGbulUUYHA9dzfbBJXRt+PwUF/jeNYo=
+github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
+github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
+github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
+github.com/rs/zerolog v1.31.0 h1:FcTR3NnLWW+NnTwwhFWiJSZr4ECLpqCm6QsEnyvbV4A=
+github.com/rs/zerolog v1.31.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
+github.com/rubenv/sql-migrate v1.5.2 h1:bMDqOnrJVV/6JQgQ/MxOpU+AdO8uzYYA/TxFUBzFtS0=
+github.com/rubenv/sql-migrate v1.5.2/go.mod h1:H38GW8Vqf8F0Su5XignRyaRcbXbJunSWxs+kmzlg0Is=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
@@ -1298,21 +1500,32 @@ github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb
github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk=
github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc=
+github.com/saferwall/pe v1.4.8 h1:ey/L8FGBMrJ1Xh+Rltj1MAFPZ4LOQYGJqNa5B1Na6B0=
+github.com/saferwall/pe v1.4.8/go.mod h1:SNzv3cdgk8SBI0UwHfyTcdjawfdnN+nbydnEL7GZ25s=
github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig=
+github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ=
+github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4=
+github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=
+github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
github.com/sahilm/fuzzy v0.1.0 h1:FzWGaw2Opqyu+794ZQ9SYifWv2EIXpwP4q8dY1kDAwI=
github.com/sahilm/fuzzy v0.1.0/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y=
-github.com/sassoftware/go-rpmutils v0.1.1/go.mod h1:euhXULoBpvAxqrBHEyJS4Tsu3hHxUmQWNymxoJbzgUY=
+github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d h1:hrujxIzL1woJ7AwssoOcM/tq5JjjG2yYOc8odClEiXA=
+github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU=
+github.com/sanity-io/litter v1.5.5 h1:iE+sBxPBzoK6uaEP5Lt3fHNgpKcHXc/A2HGETy0uJQo=
+github.com/sanity-io/litter v1.5.5/go.mod h1:9gzJgR2i4ZpjZHsKvUXIRQVk7P+yM3e+jAF7bU2UI5U=
github.com/sassoftware/go-rpmutils v0.2.0 h1:pKW0HDYMFWQ5b4JQPiI3WI12hGsVoW0V8+GMoZiI/JE=
github.com/sassoftware/go-rpmutils v0.2.0/go.mod h1:TJJQYtLe/BeEmEjelI3b7xNZjzAukEkeWKmoakvaOoI=
-github.com/sassoftware/relic v0.0.0-20210427151427-dfb082b79b74 h1:sUNzanSKA9z/h8xXl+ZJoxIYZL0Qx306MmxqRrvUgr0=
-github.com/sassoftware/relic v0.0.0-20210427151427-dfb082b79b74/go.mod h1:YlB8wFIZmFLZ1JllNBfSURzz52fBxbliNgYALk1UDmk=
-github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
+github.com/sassoftware/relic v7.2.1+incompatible h1:Pwyh1F3I0r4clFJXkSI8bOyJINGqpgjJU3DYAZeI05A=
+github.com/sassoftware/relic v7.2.1+incompatible/go.mod h1:CWfAxv73/iLZ17rbyhIEq3K9hs5w6FpNMdUT//qR+zk=
+github.com/sassoftware/relic/v7 v7.6.1 h1:O5s8ewCgq5QYNpv45dK4u6IpBmDM9RIcsbf/G1uXepQ=
+github.com/sassoftware/relic/v7 v7.6.1/go.mod h1:NxwtWxWxlUa9as2qZi635Ye6bBT/tGnMALLq7dSfOOU=
github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e h1:7q6NSFZDeGfvvtIRwBrU/aegEYJYmvev0cHAwo17zZQ=
github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e/go.mod h1:DkpGd78rljTxKAnTDPFqXSGxvETQnJyuSOQwsHycqfs=
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
github.com/sebdah/goldie/v2 v2.5.3 h1:9ES/mNN+HNUbNWpVAlrzuZ7jE+Nrczbj8uFRjM7624Y=
-github.com/secure-systems-lab/go-securesystemslib v0.4.0 h1:b23VGrQhTA8cN2CbBw7/FulN9fTtqYUdS5+Oxzt+DUE=
-github.com/secure-systems-lab/go-securesystemslib v0.4.0/go.mod h1:FGBZgq2tXWICsxWQW1msNf49F0Pf2Op5Htayx335Qbs=
+github.com/sebdah/goldie/v2 v2.5.3/go.mod h1:oZ9fp0+se1eapSRjfYbsV/0Hqhbuu3bJVvKI/NNtssI=
+github.com/secure-systems-lab/go-securesystemslib v0.8.0 h1:mr5An6X45Kb2nddcFlbmfHkLguCE9laoZCUzEEpIZXA=
+github.com/secure-systems-lab/go-securesystemslib v0.8.0/go.mod h1:UH2VZVuJfCYR8WgMlCU1uFsOUU+KeyrTWcSS73NBOzU=
github.com/segmentio/ksuid v1.0.4 h1:sBo2BdShXjmcugAMwjugoGUdUV0pcxY5mW4xKRn3v4c=
github.com/segmentio/ksuid v1.0.4/go.mod h1:/XUiZBD3kVx5SmUOl55voK5yeAbBNNIed+2O73XgrPE=
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
@@ -1325,79 +1538,73 @@ github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFR
github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8=
github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
-github.com/sigstore/cosign v1.13.1 h1:+5oF8jisEcDw2TuXxCADC1u5//HfdnJhGbpv9Isiwu4=
-github.com/sigstore/cosign v1.13.1/go.mod h1:PlfJODkovUOKsLrGI7Su57Ie/Eb/Ks7hRHw3tn5hQS4=
-github.com/sigstore/fulcio v0.6.0 h1:YNfnGm9EjYPlzHiPDcIVhslYj846jkPtHQH+FTKNncw=
-github.com/sigstore/fulcio v0.6.0/go.mod h1:lwxzHDYYQ0lVVWqaj68ZQNkcP847aoF7AIa7ra9rRqA=
-github.com/sigstore/rekor v0.12.1-0.20220915152154-4bb6f441c1b2 h1:LD8LcwygdD2DxaINWwbkaUEBAknr205wmn66/N05s7c=
-github.com/sigstore/rekor v0.12.1-0.20220915152154-4bb6f441c1b2/go.mod h1:C/jZ3EZywl/Kew48fGMWQoh+1LxOMk0BkP3DHmtB+8M=
-github.com/sigstore/sigstore v1.4.4 h1:lVsnNTY8DUmy2hnwCPtimWfEqv+DIwleORkF8KyFsMs=
-github.com/sigstore/sigstore v1.4.4/go.mod h1:wIqu9sN72+pds31MMu89GchxXHy17k+VZWc+HY1ZXMA=
+github.com/sigstore/cosign/v2 v2.2.3 h1:WX7yawI+EXu9h7S5bZsfYCbB9XW6Jc43ctKy/NoOSiA=
+github.com/sigstore/cosign/v2 v2.2.3/go.mod h1:WpMn4MBt0cI23GdHsePwO4NxhX1FOz1ITGB3ALUjFaI=
+github.com/sigstore/fulcio v1.4.3 h1:9JcUCZjjVhRF9fmhVuz6i1RyhCc/EGCD7MOl+iqCJLQ=
+github.com/sigstore/fulcio v1.4.3/go.mod h1:BQPWo7cfxmJwgaHlphUHUpFkp5+YxeJes82oo39m5og=
+github.com/sigstore/rekor v1.3.4 h1:RGIia1iOZU7fOiiP2UY/WFYhhp50S5aUm7YrM8aiA6E=
+github.com/sigstore/rekor v1.3.4/go.mod h1:1GubPVO2yO+K0m0wt/3SHFqnilr/hWbsjSOe7Vzxrlg=
+github.com/sigstore/sigstore v1.8.1 h1:mAVposMb14oplk2h/bayPmIVdzbq2IhCgy4g6R0ZSjo=
+github.com/sigstore/sigstore v1.8.1/go.mod h1:02SL1158BSj15bZyOFz7m+/nJzLZfFd9A8ab3Kz7w/E=
+github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.1 h1:rEDdUefulkIQaMJyzLwtgPDLNXBIltBABiFYfb0YmgQ=
+github.com/sigstore/sigstore/pkg/signature/kms/aws v1.8.1/go.mod h1:RCdYCc1IxCYWzh2IdzdA6Yf7JIY0cMRqH08fpQYechw=
+github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.1 h1:DvRWG99QGWZC5mp42SEde2Xke/Q384Idnj2da7yB+Mk=
+github.com/sigstore/sigstore/pkg/signature/kms/azure v1.8.1/go.mod h1:s13mo3a0UCQS3+PAUUZfvKe48sMDMsHk2GE1b2YfPcU=
+github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.8.1 h1:lwdRsJv1UbBemuk7w5YfXAQilQxMoFevrzamdPbG0wY=
+github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.8.1/go.mod h1:2OaSQ80EcdyVRSQ3T4d1lsc6Scopblsiq8U2AEk5K1A=
+github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.1 h1:9Ki0qudKpc1FQdef7xHO2bkLyTuw+qNUpWRzjBEmF4c=
+github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.8.1/go.mod h1:nhIgyu4YwwNgalIwTGsoAzam16jjAn3ADRSWKbWPwGI=
+github.com/sigstore/timestamp-authority v1.2.1 h1:j9RmqSAdvKgSofeltPO4x7d+1M3AXaROBzUJ+AA7L5Q=
+github.com/sigstore/timestamp-authority v1.2.1/go.mod h1:Ce+vWWEf0QaKLY2u6mpwEJbmYXEVeOfUk4fQ69kE6ck=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
-github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
-github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
-github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
-github.com/skeema/knownhosts v1.1.1 h1:MTk78x9FPgDFVFkDLTrsnnfCJl7g1C/nnKvePgrIngE=
-github.com/skeema/knownhosts v1.1.1/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo=
+github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ=
+github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo=
github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA=
github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog=
+github.com/smallstep/assert v0.0.0-20200723003110-82e2b9b3b262 h1:unQFBIznI+VYD1/1fApl1A+9VcBk+9dcqGfnePY87LY=
+github.com/smallstep/assert v0.0.0-20200723003110-82e2b9b3b262/go.mod h1:MyOHs9Po2fbM1LHej6sBUT8ozbxmMOFG+E+rx/GSGuc=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/assertions v1.1.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
-github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
+github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
+github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spdx/gordf v0.0.0-20201111095634-7098f93598fb/go.mod h1:uKWaldnbMnjsSAXRurWqqrdyZen1R7kxl8TkmWk2OyM=
-github.com/spdx/tools-golang v0.5.2 h1:dtMNjJreWPe37584ajk7m/rQtfJaLpRMk7pUGgvekOg=
-github.com/spdx/tools-golang v0.5.2/go.mod h1:/ETOahiAo96Ob0/RAIBmFZw6XN0yTnyr/uFZm2NTMhI=
-github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
+github.com/spdx/tools-golang v0.5.3 h1:ialnHeEYUC4+hkm5vJm4qz2x+oEJbS0mAMFrNXdQraY=
+github.com/spdx/tools-golang v0.5.3/go.mod h1:/ETOahiAo96Ob0/RAIBmFZw6XN0yTnyr/uFZm2NTMhI=
github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4=
-github.com/spf13/afero v1.4.1/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
-github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM=
-github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ=
-github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
+github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=
+github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY=
github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
-github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
-github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA=
-github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48=
-github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
-github.com/spf13/cobra v0.0.6/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE=
-github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE=
-github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk=
+github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0=
+github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4=
-github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I=
-github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
-github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
-github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
+github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0=
+github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho=
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
-github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
-github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE=
-github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
-github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns=
github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM=
-github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc=
-github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg=
-github.com/spiffe/go-spiffe/v2 v2.1.1 h1:RT9kM8MZLZIsPTH+HKQEP5yaAk3yd/VBzlINaRjXs8k=
-github.com/spiffe/go-spiffe/v2 v2.1.1/go.mod h1:5qg6rpqlwIub0JAiF1UK9IMD6BpPTmvG6yfSgDBs5lg=
-github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
-github.com/streadway/amqp v1.0.0/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
+github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ=
+github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk=
+github.com/spiffe/go-spiffe/v2 v2.1.7 h1:VUkM1yIyg/x8X7u1uXqSRVRCdMdfRIEdFBzpqoeASGk=
+github.com/spiffe/go-spiffe/v2 v2.1.7/go.mod h1:QJDGdhXllxjxvd5B+2XnhhXB/+rC8gr+lNrtOryiWeE=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
-github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
+github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
-github.com/stretchr/testify v1.3.1-0.20190311161405-34c6fa2dc709/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
@@ -1406,117 +1613,122 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
-github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
+github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
+github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
+github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
-github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8=
-github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0=
-github.com/sylabs/sif/v2 v2.8.1 h1:whr4Vz12RXfLnYyVGHoD/rD/hbF2g9OW7BJHa+WIqW8=
-github.com/sylabs/sif/v2 v2.8.1/go.mod h1:LQOdYXC9a8i7BleTKRw9lohi0rTbXkJOeS9u0ebvgyM=
+github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
+github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
+github.com/sylabs/sif/v2 v2.11.5 h1:7ssPH3epSonsTrzbS1YxeJ9KuqAN7ISlSM61a7j/mQM=
+github.com/sylabs/sif/v2 v2.11.5/go.mod h1:GBoZs9LU3e4yJH1dcZ3Akf/jsqYgy5SeguJQC+zd75Y=
github.com/sylabs/squashfs v0.6.1 h1:4hgvHnD9JGlYWwT0bPYNt9zaz23mAV3Js+VEgQoRGYQ=
github.com/sylabs/squashfs v0.6.1/go.mod h1:ZwpbPCj0ocIvMy2br6KZmix6Gzh6fsGQcCnydMF+Kx8=
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs=
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48=
github.com/tchap/go-patricia/v2 v2.3.1 h1:6rQp39lgIYZ+MHmdEq4xzuk1t7OdC35z/xm0BGhTkes=
github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k=
-github.com/tent/canonical-json-go v0.0.0-20130607151641-96e4ba3a7613 h1:iGnD/q9160NWqKZZ5vY4p0dMiYMRknzctfSkqA4nBDw=
-github.com/tent/canonical-json-go v0.0.0-20130607151641-96e4ba3a7613/go.mod h1:g6AnIpDSYMcphz193otpSIzN+11Rs+AAIIC6rm1enug=
+github.com/terminalstatic/go-xsd-validate v0.1.5 h1:RqpJnf6HGE2CB/lZB1A8BYguk8uRtcvYAPLCF15qguo=
+github.com/terminalstatic/go-xsd-validate v0.1.5/go.mod h1:18lsvYFofBflqCrvo1umpABZ99+GneNTw2kEEc8UPJw=
github.com/thales-e-security/pool v0.0.2 h1:RAPs4q2EbWsTit6tpzuvTFlgFRJ3S8Evf5gtvVDbmPg=
github.com/thales-e-security/pool v0.0.2/go.mod h1:qtpMm2+thHtqhLzTwgDBj/OuNnMpupY8mv0Phz0gjhU=
github.com/therootcompany/xz v1.0.1 h1:CmOtsn1CbtmyYiusbfmhmkpAAETj0wBIH6kCYaX+xzw=
github.com/therootcompany/xz v1.0.1/go.mod h1:3K3UH1yCKgBneZYhuQUvJ9HPD19UEXEI0BWbMn8qNMY=
-github.com/theupdateframework/go-tuf v0.5.2-0.20220930112810-3890c1e7ace4 h1:1i/Afw3rmaR1gF3sfVkG2X6ldkikQwA9zY380LrR5YI=
-github.com/theupdateframework/go-tuf v0.5.2-0.20220930112810-3890c1e7ace4/go.mod h1:vAqWV3zEs89byeFsAYoh/Q14vJTgJkHwnnRCWBBBINY=
-github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
+github.com/theupdateframework/go-tuf v0.7.0 h1:CqbQFrWo1ae3/I0UCblSbczevCCbS31Qvs5LdxRWqRI=
+github.com/theupdateframework/go-tuf v0.7.0/go.mod h1:uEB7WSY+7ZIugK6R1hiBMBjQftaFzn7ZCDJcp1tCUug=
+github.com/tidwall/gjson v1.17.0 h1:/Jocvlh98kcTfpN2+JzGQWQcqrPQwDrVEMApx/M5ZwM=
+github.com/tidwall/gjson v1.17.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
+github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
+github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4=
github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
+github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY=
+github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=
github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 h1:e/5i7d4oYZ+C1wj2THlRK+oAhjeS/TRQwMfkIuet3w0=
github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399/go.mod h1:LdwHTNJT99C5fTAzDz0ud328OgXz+gierycbcIx2fRs=
-github.com/tjfoc/gmsm v1.3.2 h1:7JVkAn5bvUJ7HtU08iW6UiD+UTmJTIToHCfeFzkcCxM=
github.com/tjfoc/gmsm v1.3.2/go.mod h1:HaUcFuY0auTiaHB9MHFGCPx5IaLhTUd2atbCFBQXn9w=
-github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
+github.com/tjfoc/gmsm v1.4.1 h1:aMe1GlZb+0bLjn+cKTPEvvn9oUEBlJitaZiiBwsbgho=
+github.com/tjfoc/gmsm v1.4.1/go.mod h1:j4INPkHWMrhJb38G+J6W4Tw0AbuN8Thu3PbdVYhVcTE=
github.com/transparency-dev/merkle v0.0.2 h1:Q9nBoQcZcgPamMkGn7ghV8XiTZ/kRxn1yCG81+twTK4=
github.com/transparency-dev/merkle v0.0.2/go.mod h1:pqSy+OXefQ1EDUVmAJ8MUhHB9TXGuzVAT58PqBoHz1A=
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
-github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/ulikunitz/xz v0.5.9/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
-github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8=
github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
-github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8=
+github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=
+github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
+github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
github.com/vbatts/go-mtree v0.5.3 h1:S/jYlfG8rZ+a0bhZd+RANXejy7M4Js8fq9U+XoWTd5w=
github.com/vbatts/go-mtree v0.5.3/go.mod h1:eXsdoPMdL2jcJx6HweWi9lYQxBsTp4lNhqqAjgkZUg8=
-github.com/vbatts/tar-split v0.11.3 h1:hLFqsOLQ1SsppQNTMpkpPXClLDfC2A3Zgy9OUU+RVck=
-github.com/vbatts/tar-split v0.11.3/go.mod h1:9QlHN18E+fEH7RdG+QAJJcuya3rqT7eXSTY7wGrAokY=
-github.com/vifraa/gopom v0.2.1 h1:MYVMAMyiGzXPPy10EwojzKIL670kl5Zbae+o3fFvQEM=
-github.com/vifraa/gopom v0.2.1/go.mod h1:oPa1dcrGrtlO37WPDBm5SqHAT+wTgF8An1Q71Z6Vv4o=
-github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU=
-github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g=
+github.com/vbatts/tar-split v0.11.5 h1:3bHCTIheBm1qFTcgh9oPu+nNBtX+XJIupG/vacinCts=
+github.com/vbatts/tar-split v0.11.5/go.mod h1:yZbwRsSeGjusneWgA781EKej9HF8vme8okylkAeNKLk=
+github.com/vifraa/gopom v1.0.0 h1:L9XlKbyvid8PAIK8nr0lihMApJQg/12OBvMA28BcWh0=
+github.com/vifraa/gopom v1.0.0/go.mod h1:oPa1dcrGrtlO37WPDBm5SqHAT+wTgF8An1Q71Z6Vv4o=
+github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc=
+github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
github.com/wagoodman/go-partybus v0.0.0-20230516145632-8ccac152c651 h1:jIVmlAFIqV3d+DOxazTR9v+zgj8+VYuQBzPgBZvWBHA=
github.com/wagoodman/go-partybus v0.0.0-20230516145632-8ccac152c651/go.mod h1:b26F2tHLqaoRQf8DywqzVaV1MQ9yvjb0OMcNl7Nxu20=
-github.com/wagoodman/go-progress v0.0.0-20230301185719-21920a456ad5 h1:lwgTsTy18nYqASnH58qyfRW/ldj7Gt2zzBvgYPzdA4s=
-github.com/wagoodman/go-progress v0.0.0-20230301185719-21920a456ad5/go.mod h1:jLXFoL31zFaHKAAyZUh+sxiTDFe1L1ZHrcK2T1itVKA=
-github.com/wagoodman/jotframe v0.0.0-20211129225309-56b0d0a4aebb h1:Yz6VVOcLuWLAHYlJzTw7JKnWxdV/WXpug2X0quEzRnY=
-github.com/wagoodman/jotframe v0.0.0-20211129225309-56b0d0a4aebb/go.mod h1:nDi3BAC5nEbVbg+WSJDHLbjHv0ZToq8nMPA97XMxF3E=
-github.com/xanzy/go-gitlab v0.73.1 h1:UMagqUZLJdjss1SovIC+kJCH4k2AZWXl58gJd38Y/hI=
-github.com/xanzy/go-gitlab v0.73.1/go.mod h1:d/a0vswScO7Agg1CZNz15Ic6SSvBG9vfw8egL99t4kA=
+github.com/wagoodman/go-presenter v0.0.0-20211015174752-f9c01afc824b h1:uWNQ0khA6RdFzODOMwKo9XXu7fuewnnkHykUtuKru8s=
+github.com/wagoodman/go-presenter v0.0.0-20211015174752-f9c01afc824b/go.mod h1:ewlIKbKV8l+jCj8rkdXIs361ocR5x3qGyoCSca47Gx8=
+github.com/wagoodman/go-progress v0.0.0-20230925121702-07e42b3cdba0 h1:0KGbf+0SMg+UFy4e1A/CPVvXn21f1qtWdeJwxZFoQG8=
+github.com/wagoodman/go-progress v0.0.0-20230925121702-07e42b3cdba0/go.mod h1:jLXFoL31zFaHKAAyZUh+sxiTDFe1L1ZHrcK2T1itVKA=
+github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc=
+github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw=
+github.com/xanzy/go-gitlab v0.96.0 h1:LGkZ+wSNMRtHIBaYE4Hq3dZVjprwHv3Y1+rhKU3WETs=
+github.com/xanzy/go-gitlab v0.96.0/go.mod h1:ETg8tcj4OhrB84UEgeE8dSuV/0h4BBL1uOV/qK0vlyI=
github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw=
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
-github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs=
-github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g=
-github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM=
-github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8=
-github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
+github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4=
+github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM=
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo=
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0=
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
-github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=
-github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo=
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos=
-github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ=
github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0=
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs=
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
-github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
-github.com/yashtewari/glob-intersection v0.1.0 h1:6gJvMYQlTDOL3dMsPF6J0+26vwX9MB8/1q3uAdhmTrg=
-github.com/yashtewari/glob-intersection v0.1.0/go.mod h1:LK7pIC3piUjovexikBbJ26Yml7g8xa5bsjfx2v1fwok=
+github.com/yashtewari/glob-intersection v0.2.0 h1:8iuHdN88yYuCzCdjt0gDe+6bAhUwBeEWqThExu54RFg=
+github.com/yashtewari/glob-intersection v0.2.0/go.mod h1:LK7pIC3piUjovexikBbJ26Yml7g8xa5bsjfx2v1fwok=
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
+github.com/ysmood/fetchup v0.2.3 h1:ulX+SonA0Vma5zUFXtv52Kzip/xe7aj4vqT5AJwQ+ZQ=
+github.com/ysmood/fetchup v0.2.3/go.mod h1:xhibcRKziSvol0H1/pj33dnKrYyI2ebIvz5cOOkYGns=
github.com/ysmood/goob v0.4.0 h1:HsxXhyLBeGzWXnqVKtmT9qM7EuVs/XOgkX7T6r1o1AQ=
-github.com/ysmood/gson v0.7.2 h1:1iWUvpi5DPvd2j59W7ifRPR9DiAZ3Ga+fmMl1mJrRbM=
+github.com/ysmood/goob v0.4.0/go.mod h1:u6yx7ZhS4Exf2MwciFr6nIM8knHQIE22lFpWHnfql18=
+github.com/ysmood/got v0.34.1 h1:IrV2uWLs45VXNvZqhJ6g2nIhY+pgIG1CUoOcqfXFl1s=
+github.com/ysmood/got v0.34.1/go.mod h1:yddyjq/PmAf08RMLSwDjPyCvHvYed+WjHnQxpH851LM=
+github.com/ysmood/gson v0.7.3 h1:QFkWbTH8MxyUTKPkVWAENJhxqdBa4lYTQWqZCiLG6kE=
+github.com/ysmood/gson v0.7.3/go.mod h1:3Kzs5zDl21g5F/BlLTNcuAGAYLKt2lV5G8D1zF3RNmg=
github.com/ysmood/leakless v0.8.0 h1:BzLrVoiwxikpgEQR0Lk8NyBN5Cit2b1z+u0mgL4ZJak=
+github.com/ysmood/leakless v0.8.0/go.mod h1:R8iAXPRaG97QJwqxs74RdwzcRHT1SWCGTNqY8q0JvMQ=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.30/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
-github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43 h1:+lm10QQTNSBd8DVTNGHx7o/IKu9HYDvLMffDhbyLccI=
-github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50 h1:hlE8//ciYMztlGpl/VA+Zm1AcTPHYkHJPbHqE6WJUXE=
-github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f h1:ERexzlUfuTvpE74urLSbIQW0Z/6hF9t8U4NsJLaioAY=
-github.com/zalando/go-keyring v0.1.0/go.mod h1:RaxNwUITJaHVdQ0VC7pELPZ3tOWn13nr0gZMZEhpVU0=
-github.com/zeebo/errs v1.2.2 h1:5NFypMTuSdoySVTqlNs1dEoU21QVamMQJxW/Fii5O7g=
-github.com/zeebo/errs v1.2.2/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4=
-go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
-go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=
+github.com/yuin/gopher-lua v1.1.1 h1:kYKnWBjvbNP4XLT3+bPEwAXJx262OhaHDWDVOPjL46M=
+github.com/yuin/gopher-lua v1.1.1/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw=
+github.com/zalando/go-keyring v0.2.2 h1:f0xmpYiSrHtSNAVgwip93Cg8tuF45HJM6rHq/A5RI/4=
+github.com/zalando/go-keyring v0.2.2/go.mod h1:sI3evg9Wvpw3+n4SqplGSJUMwtDeROfD4nsFz4z9PG0=
+github.com/zclconf/go-cty v1.14.0 h1:/Xrd39K7DXbHzlisFP9c4pHao4yyf+/Ug9LEz+Y/yhc=
+github.com/zclconf/go-cty v1.14.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
+github.com/zeebo/errs v1.3.0 h1:hmiaKqgYZzcVgRL1Vkc1Mn2914BbzB0IBxs+ebeutGs=
+github.com/zeebo/errs v1.3.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4=
+github.com/zyedidia/generic v1.2.2-0.20230320175451-4410d2372cb1 h1:V+UsotZpAVvfj3X/LMoEytoLzSiP6Lg0F7wdVyu9gGg=
+github.com/zyedidia/generic v1.2.2-0.20230320175451-4410d2372cb1/go.mod h1:ly2RBz4mnz1yeuVbQA/VFwGjK3mnHGRj1JuoG336Bis=
go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=
-go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
-go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ=
go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs=
-go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg=
-go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng=
-go.mongodb.org/mongo-driver v1.8.3/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY=
-go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8=
-go.mongodb.org/mongo-driver v1.11.6 h1:XM7G6PjiGAO5betLF13BIa5TlLUUE3uJ/2Ox3Lz1K+o=
-go.mongodb.org/mongo-driver v1.11.6/go.mod h1:G9TgswdsWjX4tmDA5zfs2+6AEPpYJwqblyjsfuh8oXY=
+go.mongodb.org/mongo-driver v1.13.1 h1:YIc7HTYsKndGK4RFzJ3covLz1byri52x0IoMB0Pt/vk=
+go.mongodb.org/mongo-driver v1.13.1/go.mod h1:wcDf1JBCXy2mOW0bWHwO/IOYqdca1MPCwDtFu/Z9+eo=
+go.mozilla.org/pkcs7 v0.0.0-20210826202110-33d05740a352 h1:CCriYyAfq1Br1aIYettdHZTy8mBTIPo7We18TuO/bak=
+go.mozilla.org/pkcs7 v0.0.0-20210826202110-33d05740a352/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
@@ -1526,61 +1738,81 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
-go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM=
-go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU=
-go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M=
-go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8=
+go.opentelemetry.io/contrib/exporters/autoexport v0.46.1 h1:ysCfPZB9AjUlMa1UHYup3c9dAOCMQX/6sxSfPBUoxHw=
+go.opentelemetry.io/contrib/exporters/autoexport v0.46.1/go.mod h1:ha0aiYm+DOPsLHjh0zoQ8W8sLT+LJ58J3j47lGpSLrU=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 h1:vS1Ao/R55RNV4O7TA2Qopok8yN+X0LIP6RVWLFkprck=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0/go.mod h1:BMsdeOxN04K0L5FNUBfjFdvwWGNe/rkmSwH4Aelu/X0=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.52.0 h1:9l89oX4ba9kHbBol3Xin3leYJ+252h0zszDtBwyKe2A=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.52.0/go.mod h1:XLZfZboOJWHNKUv7eH0inh0E9VV6eWDFB/9yJyTLPp0=
+go.opentelemetry.io/otel v1.27.0 h1:9BZoF3yMK/O1AafMiQTVu0YDj5Ea4hPhxCs7sGva+cg=
+go.opentelemetry.io/otel v1.27.0/go.mod h1:DMpAK8fzYRzs+bi3rS5REupisuqTheUlSZJ1WnZaPAQ=
+go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.44.0 h1:jd0+5t/YynESZqsSyPz+7PAFdEop0dlN0+PkyHYo8oI=
+go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.44.0/go.mod h1:U707O40ee1FpQGyhvqnzmCJm1Wh6OX6GGBVn0E6Uyyk=
+go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.44.0 h1:bflGWrfYyuulcdxf14V6n9+CoQcu5SAAdHmDPAJnlps=
+go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.44.0/go.mod h1:qcTO4xHAxZLaLxPd60TdE88rxtItPHgHWqOhOGRr0as=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.22.0 h1:9M3+rhx7kZCIQQhQRYaZCdNu1V73tm4TvXs2ntl98C4=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.22.0/go.mod h1:noq80iT8rrHP1SfybmPiRGc9dc5M8RPmGvtwo7Oo7tc=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.22.0 h1:H2JFgRcGiyHg7H7bwcwaQJYrNFqCqrbTQ8K4p1OvDu8=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.22.0/go.mod h1:WfCWp1bGoYK8MeULtI15MmQVczfR+bFkk0DF3h06QmQ=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0 h1:digkEZCJWobwBqMwC0cwCq8/wkkRy/OowZg5OArWZrM=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0/go.mod h1:/OpE/y70qVkndM0TrxT4KBoN3RsFZP0QaofcfYrj76I=
+go.opentelemetry.io/otel/exporters/prometheus v0.44.0 h1:08qeJgaPC0YEBu2PQMbqU3rogTlyzpjhCI2b58Yn00w=
+go.opentelemetry.io/otel/exporters/prometheus v0.44.0/go.mod h1:ERL2uIeBtg4TxZdojHUwzZfIFlUIjZtxubT5p4h1Gjg=
+go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v0.44.0 h1:dEZWPjVN22urgYCza3PXRUGEyCB++y1sAqm6guWFesk=
+go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v0.44.0/go.mod h1:sTt30Evb7hJB/gEk27qLb1+l9n4Tb8HvHkR0Wx3S6CU=
+go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.21.0 h1:VhlEQAPp9R1ktYfrPk5SOryw1e9LDDTZCbIPFrho0ec=
+go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.21.0/go.mod h1:kB3ufRbfU+CQ4MlUcqtW8Z7YEOBeK2DJ6CmR5rYYF3E=
+go.opentelemetry.io/otel/metric v1.27.0 h1:hvj3vdEKyeCi4YaYfNjv2NUje8FqKqUY8IlF0FxV/ik=
+go.opentelemetry.io/otel/metric v1.27.0/go.mod h1:mVFgmRlhljgBiuk/MP/oKylr4hs85GZAylncepAX/ak=
+go.opentelemetry.io/otel/sdk v1.26.0 h1:Y7bumHf5tAiDlRYFmGqetNcLaVUZmh4iYfmGxtmz7F8=
+go.opentelemetry.io/otel/sdk v1.26.0/go.mod h1:0p8MXpqLeJ0pzcszQQN4F0S5FVjBLgypeGSngLsmirs=
+go.opentelemetry.io/otel/sdk/metric v1.21.0 h1:smhI5oD714d6jHE6Tie36fPx4WDFIg+Y6RfAY4ICcR0=
+go.opentelemetry.io/otel/sdk/metric v1.21.0/go.mod h1:FJ8RAsoPGv/wYMgBdUJXOm+6pzFY3YdljnXtv1SBE8Q=
+go.opentelemetry.io/otel/trace v1.27.0 h1:IqYb813p7cmbHk0a5y6pD5JPakbVfftRXABGt5/Rscw=
+go.opentelemetry.io/otel/trace v1.27.0/go.mod h1:6RiD1hkAprV4/q+yd2ln1HG9GoPx39SuvvstaLBl+l4=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
-go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 h1:+FNtrFTmVw0YZGpBGX56XDee331t6JAXeK2bcyhLOOc=
-go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o=
-go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
+go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
+go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
+go.starlark.net v0.0.0-20230525235612-a134d8f9ddca h1:VdD38733bfYv5tUZwEIskMM93VanwNIi5bIKnDrJdEY=
+go.starlark.net v0.0.0-20230525235612-a134d8f9ddca/go.mod h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds=
+go.step.sm/crypto v0.42.1 h1:OmwHm3GJO8S4VGWL3k4+I+Q4P/F2s+j8msvTyGnh1Vg=
+go.step.sm/crypto v0.42.1/go.mod h1:yNcTLFQBnYCA75fC5bklBoTAT7y0dRZsB1TkinB8JMs=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
-go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ=
-go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
-go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
-go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
+go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
+go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
-go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8=
-go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak=
-go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
+go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
+go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
-go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60=
-go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg=
+go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
+go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191219195013-becbf705a915/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20200930160638-afb6bcd081ae/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
+golang.org/x/crypto v0.0.0-20201012173705-84dcc777aaee/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
-golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
-golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
-golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU=
+golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
+golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
-golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk=
-golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
+golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I=
+golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
+golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI=
+golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -1591,8 +1823,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
-golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug=
-golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc=
+golang.org/x/exp v0.0.0-20231108232855-2478ac86f678 h1:mchzmB1XO2pMaKFRqk/+MV3mgGG96aqaPXaMifQU47w=
+golang.org/x/exp v0.0.0-20231108232855-2478ac86f678/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
@@ -1621,23 +1853,20 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=
-golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
+golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181017193950-04a2e542c03f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -1659,22 +1888,18 @@ golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20200930145003-4acb6c075d10/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8=
-golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM=
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
@@ -1683,16 +1908,20 @@ golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su
golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
+golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
+golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
+golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
-golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
+golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
-golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50=
-golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
+golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
+golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ=
+golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
+golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -1704,7 +1933,6 @@ golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ
golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
@@ -1715,44 +1943,43 @@ golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j
golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE=
+golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE=
golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
-golang.org/x/oauth2 v0.8.0 h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8=
-golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE=
+golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
+golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
+golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A=
+golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs=
+golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20200930132711-30421366ff76/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
-golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
+golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
+golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1761,7 +1988,6 @@ golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1786,7 +2012,6 @@ golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201005172224-997123666555/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1794,16 +2019,13 @@ golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -1811,7 +2033,6 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -1833,33 +2054,38 @@ golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220906165534-d0df966e6959/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20221013171732-95e765b1cc43/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM=
-golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
+golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
-golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
-golang.org/x/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0=
-golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
+golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
+golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo=
+golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
+golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA=
+golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1871,19 +2097,19 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc=
-golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
+golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
-golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
+golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
@@ -1891,13 +2117,9 @@ golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
@@ -1906,7 +2128,6 @@ golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
@@ -1924,7 +2145,6 @@ golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapK
golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
-golang.org/x/tools v0.0.0-20200313205530-4303120df7d8/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
@@ -1942,19 +2162,16 @@ golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4f
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210112230658-8b4aab62c064/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo=
-golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
+golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
+golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -1962,8 +2179,9 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T
golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk=
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
+golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=
+golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
@@ -1985,7 +2203,6 @@ google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34q
google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=
google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=
-google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8=
google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo=
google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4=
google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw=
@@ -2003,18 +2220,26 @@ google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/S
google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8=
google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs=
google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA=
+google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA=
google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw=
google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg=
google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o=
-google.golang.org/api v0.122.0 h1:zDobeejm3E7pEG1mNHvdxvjs5XJoCMzyNH+CmwL94Es=
-google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms=
+google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g=
+google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw=
+google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw=
+google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI=
+google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
+google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
+google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
+google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70=
+google.golang.org/api v0.186.0 h1:n2OPp+PPXX0Axh4GuSsL5QL8xQCTb2oDwyzPnQvqUug=
+google.golang.org/api v0.186.0/go.mod h1:hvRbBmgoje49RV3xqVXrmP6w93n6ehGgIVPYrGtBFFc=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
-google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
@@ -2045,16 +2270,13 @@ google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEY
google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200806141610-86f49bd18e98/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
@@ -2084,7 +2306,6 @@ google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ6
google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
-google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
@@ -2097,16 +2318,42 @@ google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX
google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
+google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
-google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A=
-google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU=
+google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
+google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
+google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
+google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE=
+google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc=
+google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=
+google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=
+google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=
+google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=
+google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=
+google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=
+google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=
+google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=
+google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=
+google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=
+google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw=
+google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI=
+google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI=
+google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U=
+google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
+google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
+google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s=
+google.golang.org/genproto v0.0.0-20240624140628-dc46fd24d27d h1:PksQg4dV6Sem3/HkBX+Ltq8T0ke0PKIRBNBatoDTVls=
+google.golang.org/genproto v0.0.0-20240624140628-dc46fd24d27d/go.mod h1:s7iA721uChleev562UJO2OYB0PPT9CMFjV+Ce7VJH5M=
+google.golang.org/genproto/googleapis/api v0.0.0-20240624140628-dc46fd24d27d h1:Aqf0fiIdUQEj0Gn9mKFFXoQfTTEaNopWpfVyYADxiSg=
+google.golang.org/genproto/googleapis/api v0.0.0-20240624140628-dc46fd24d27d/go.mod h1:Od4k8V1LQSizPRUK4OzZ7TBE/20k+jPczUDAEyvn69Y=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d h1:k3zyW3BYYR30e8v3x0bTDdE9vpYFjZHK+HcyqkrppWk=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
-google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
@@ -2137,10 +2384,13 @@ google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11
google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
-google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag=
-google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8=
+google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
+google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
+google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
+google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
+google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY=
+google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
-google.golang.org/grpc/examples v0.0.0-20201130180447-c456688b1860/go.mod h1:Ly7ZA/ARzg8fnPU9TyZIxoz33sEUuWX7txiqs8lPTgE=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
@@ -2155,35 +2405,35 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
-google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
+google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
-gopkg.in/alexcesaro/statsd.v2 v2.0.0 h1:FXkZSCZIH17vLCO5sO2UucTHsH9pc+17F6pl3JVCwMc=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/evanphx/json-patch.v5 v5.6.0 h1:BMT6KIwBD9CaU91PJCZIe46bDmBWa9ynTQgJIOpfQBk=
+gopkg.in/evanphx/json-patch.v5 v5.6.0/go.mod h1:/kvTRh1TVm5wuM6OkHxqXtE/1nUZZpihg29RtuIyfvk=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
+gopkg.in/go-jose/go-jose.v2 v2.6.3 h1:nt80fvSDlhKWQgSWyHyy5CfmlQr+asih51R8PTWNKKs=
+gopkg.in/go-jose/go-jose.v2 v2.6.3/go.mod h1:zzZDPkNNw/c9IE7Z9jr11mBZQhKQTMzoEEIoEdZlFBI=
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
-gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
-gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
-gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
-gopkg.in/square/go-jose.v2 v2.4.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
-gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI=
-gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
+gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473 h1:6D+BvnJ/j6e222UW8s2qTSe3wGBtvo0MbVQG/c5k8RE=
+gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473/go.mod h1:N1eN2tsCx0Ydtgjl4cqmbRCsY4/+z4cYDeqwZTk6zog=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
-gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
@@ -2194,15 +2444,15 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o=
-helm.sh/helm/v3 v3.12.2 h1:kFyDBr/mgJUlyGzVTCieG4wW0zmo7fcNRWK0+FKkxqU=
-helm.sh/helm/v3 v3.12.2/go.mod h1:v1PMayudIfZAvec3Wp4wAErensvK/rv5fu/xCiE6t3I=
+gorm.io/gorm v1.25.5 h1:zR9lOiiYf09VNh5Q1gphfyia1JpiClIWG9hQaxB/mls=
+gorm.io/gorm v1.25.5/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
+gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU=
+gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU=
+helm.sh/helm/v3 v3.14.2 h1:V71fv+NGZv0icBlr+in1MJXuUIHCiPG1hW9gEBISTIA=
+helm.sh/helm/v3 v3.14.2/go.mod h1:2itvvDv2WSZXTllknfQo6j7u3VVgMAvm8POCDgYH424=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
@@ -2210,55 +2460,65 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-honnef.co/go/tools v0.0.1-2020.1.5/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-k8s.io/api v0.27.4 h1:0pCo/AN9hONazBKlNUdhQymmnfLRbSZjd5H5H3f0bSs=
-k8s.io/api v0.27.4/go.mod h1:O3smaaX15NfxjzILfiln1D8Z3+gEYpjEpiNA/1EVK1Y=
-k8s.io/apiextensions-apiserver v0.27.3 h1:xAwC1iYabi+TDfpRhxh4Eapl14Hs2OftM2DN5MpgKX4=
-k8s.io/apiextensions-apiserver v0.27.3/go.mod h1:BH3wJ5NsB9XE1w+R6SSVpKmYNyIiyIz9xAmBl8Mb+84=
-k8s.io/apimachinery v0.27.4 h1:CdxflD4AF61yewuid0fLl6bM4a3q04jWel0IlP+aYjs=
-k8s.io/apimachinery v0.27.4/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E=
-k8s.io/apiserver v0.27.3 h1:AxLvq9JYtveYWK+D/Dz/uoPCfz8JC9asR5z7+I/bbQ4=
-k8s.io/apiserver v0.27.3/go.mod h1:Y61+EaBMVWUBJtxD5//cZ48cHZbQD+yIyV/4iEBhhNA=
-k8s.io/cli-runtime v0.27.4 h1:Zb0eci+58eHZNnoHhjRFc7W88s8dlG12VtIl3Nv2Hto=
-k8s.io/cli-runtime v0.27.4/go.mod h1:k9Z1xiZq2xNplQmehpDquLgc+rE+pubpO1cK4al4Mlw=
-k8s.io/client-go v0.27.4 h1:vj2YTtSJ6J4KxaC88P4pMPEQECWMY8gqPqsTgUKzvjk=
-k8s.io/client-go v0.27.4/go.mod h1:ragcly7lUlN0SRPk5/ZkGnDjPknzb37TICq07WhI6Xc=
-k8s.io/component-base v0.27.4 h1:Wqc0jMKEDGjKXdae8hBXeskRP//vu1m6ypC+gwErj4c=
-k8s.io/component-base v0.27.4/go.mod h1:hoiEETnLc0ioLv6WPeDt8vD34DDeB35MfQnxCARq3kY=
-k8s.io/component-helpers v0.27.4 h1:l1hn/Zx9mWXflo5xz1mo5RRW2g8b6rptWCG7My6rYoE=
-k8s.io/component-helpers v0.27.4/go.mod h1:ayW5btpTdJkVv+CcxhzNRfWT+oPrV6T6qZ1Ay6NEJNI=
-k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg=
-k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
-k8s.io/kube-openapi v0.0.0-20230525220651-2546d827e515 h1:OmK1d0WrkD3IPfkskvroRykOulHVHf0s0ZIFRjyt+UI=
-k8s.io/kube-openapi v0.0.0-20230525220651-2546d827e515/go.mod h1:kzo02I3kQ4BTtEfVLaPbjvCkX97YqGve33wzlb3fofQ=
-k8s.io/kubectl v0.27.4 h1:RV1TQLIbtL34+vIM+W7HaS3KfAbqvy9lWn6pWB9els4=
-k8s.io/kubectl v0.27.4/go.mod h1:qtc1s3BouB9KixJkriZMQqTsXMc+OAni6FeKAhq7q14=
-k8s.io/metrics v0.27.4 h1:2s04bods7rA507iouGbxD55YrKNlFjLYzm30noOl9Sk=
-k8s.io/metrics v0.27.4/go.mod h1:kRvfhFC7wCQEFvu6H92uiV7v05z3Ty/vtluYT5D2Xpk=
-k8s.io/utils v0.0.0-20230505201702-9f6742963106 h1:EObNQ3TW2D+WptiYXlApGNLVy0zm/JIBVY9i+M4wpAU=
-k8s.io/utils v0.0.0-20230505201702-9f6742963106/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-modernc.org/libc v1.22.5 h1:91BNch/e5B0uPbJFgqbxXuOnxBQjlS//icfQEGmvyjE=
-modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ=
-modernc.org/memory v1.5.0 h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds=
-modernc.org/sqlite v1.23.1 h1:nrSBg4aRQQwq59JpvGEQ15tNxoO5pX/kUjcRNwSAGQM=
-oras.land/oras-go/v2 v2.2.1 h1:3VJTYqy5KfelEF9c2jo1MLSpr+TM3mX8K42wzZcd6qE=
-oras.land/oras-go/v2 v2.2.1/go.mod h1:GeAwLuC4G/JpNwkd+bSZ6SkDMGaaYglt6YK2WvZP7uQ=
+k8s.io/api v0.30.0 h1:siWhRq7cNjy2iHssOB9SCGNCl2spiF1dO3dABqZ8niA=
+k8s.io/api v0.30.0/go.mod h1:OPlaYhoHs8EQ1ql0R/TsUgaRPhpKNxIMrKQfWUp8QSE=
+k8s.io/apiextensions-apiserver v0.30.0 h1:jcZFKMqnICJfRxTgnC4E+Hpcq8UEhT8B2lhBcQ+6uAs=
+k8s.io/apiextensions-apiserver v0.30.0/go.mod h1:N9ogQFGcrbWqAY9p2mUAL5mGxsLqwgtUce127VtRX5Y=
+k8s.io/apimachinery v0.30.0 h1:qxVPsyDM5XS96NIh9Oj6LavoVFYff/Pon9cZeDIkHHA=
+k8s.io/apimachinery v0.30.0/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc=
+k8s.io/apiserver v0.30.0 h1:QCec+U72tMQ+9tR6A0sMBB5Vh6ImCEkoKkTDRABWq6M=
+k8s.io/apiserver v0.30.0/go.mod h1:smOIBq8t0MbKZi7O7SyIpjPsiKJ8qa+llcFCluKyqiY=
+k8s.io/cli-runtime v0.29.1 h1:By3WVOlEWYfyxhGko0f/IuAOLQcbBSMzwSaDren2JUs=
+k8s.io/cli-runtime v0.29.1/go.mod h1:vjEY9slFp8j8UoMhV5AlO8uulX9xk6ogfIesHobyBDU=
+k8s.io/client-go v0.30.0 h1:sB1AGGlhY/o7KCyCEQ0bPWzYDL0pwOZO4vAtTSh/gJQ=
+k8s.io/client-go v0.30.0/go.mod h1:g7li5O5256qe6TYdAMyX/otJqMhIiGgTapdLchhmOaY=
+k8s.io/component-base v0.30.0 h1:cj6bp38g0ainlfYtaOQuRELh5KSYjhKxM+io7AUIk4o=
+k8s.io/component-base v0.30.0/go.mod h1:V9x/0ePFNaKeKYA3bOvIbrNoluTSG+fSJKjLdjOoeXQ=
+k8s.io/component-helpers v0.29.1 h1:54MMEDu6xeJmMtAKztsPwu0kJKr4+jCUzaEIn2UXRoc=
+k8s.io/component-helpers v0.29.1/go.mod h1:+I7xz4kfUgxWAPJIVKrqe4ml4rb9UGpazlOmhXYo+cY=
+k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw=
+k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
+k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag=
+k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98=
+k8s.io/kubectl v0.29.1 h1:rWnW3hi/rEUvvg7jp4iYB68qW5un/urKbv7fu3Vj0/s=
+k8s.io/kubectl v0.29.1/go.mod h1:SZzvLqtuOJYSvZzPZR9weSuP0wDQ+N37CENJf0FhDF4=
+k8s.io/metrics v0.29.1 h1:qutc3aIPMCniMuEApuLaeYX47rdCn8eycVDx7R6wMlQ=
+k8s.io/metrics v0.29.1/go.mod h1:JrbV2U71+v7d/9qb90UVKL8r0uJ6Z2Hy4V7mDm05cKs=
+k8s.io/utils v0.0.0-20231127182322-b307cd553661 h1:FepOBzJ0GXm8t0su67ln2wAZjbQ6RxQGZDnzuLcrUTI=
+k8s.io/utils v0.0.0-20231127182322-b307cd553661/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+modernc.org/libc v1.29.0 h1:tTFRFq69YKCF2QyGNuRUQxKBm1uZZLubf6Cjh/pVHXs=
+modernc.org/libc v1.29.0/go.mod h1:DaG/4Q3LRRdqpiLyP0C2m1B8ZMGkQ+cCgOIjEtQlYhQ=
+modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4=
+modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo=
+modernc.org/memory v1.7.2 h1:Klh90S215mmH8c9gO98QxQFsY+W451E8AnzjoE2ee1E=
+modernc.org/memory v1.7.2/go.mod h1:NO4NVCQy0N7ln+T9ngWqOQfi7ley4vpwvARR+Hjw95E=
+modernc.org/sqlite v1.28.0 h1:Zx+LyDDmXczNnEQdvPuEfcFVA2ZPyaD7UCZDjef3BHQ=
+modernc.org/sqlite v1.28.0/go.mod h1:Qxpazz0zH8Z1xCFyi5GSL3FzbtZ3fvbjmywNogldEW0=
+oras.land/oras-go v1.2.4 h1:djpBY2/2Cs1PV87GSJlxv4voajVOMZxqqtq9AB8YNvY=
+oras.land/oras-go v1.2.4/go.mod h1:DYcGfb3YF1nKjcezfX2SNlDAeQFKSXmf+qrFmrh4324=
+oras.land/oras-go/v2 v2.5.0 h1:o8Me9kLY74Vp5uw07QXPiitjsw7qNXi8Twd+19Zf02c=
+oras.land/oras-go/v2 v2.5.0/go.mod h1:z4eisnLP530vwIOUOJeBIj0aGI0L1C3d53atvCBqZHg=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
-sigs.k8s.io/controller-runtime v0.15.0 h1:ML+5Adt3qZnMSYxZ7gAverBLNPSMQEibtzAgp0UPojU=
-sigs.k8s.io/controller-runtime v0.15.0/go.mod h1:7ngYvp1MLT+9GeZ+6lH3LOlcHkp/+tzA/fmHa4iq9kk=
+sigs.k8s.io/cli-utils v0.36.0 h1:k7GM6LmIMydtvM6Ad91XuqKk0QEVL9bVbaiX1uvWIrA=
+sigs.k8s.io/cli-utils v0.36.0/go.mod h1:uCFC3BPXB3xHFQyKkWUlTrncVDCKzbdDfqZqRTCrk24=
+sigs.k8s.io/controller-runtime v0.18.1 h1:RpWbigmuiylbxOCLy0tGnq1cU1qWPwNIQzoJk+QeJx4=
+sigs.k8s.io/controller-runtime v0.18.1/go.mod h1:tuAt1+wbVsXIT8lPtk5RURxqAnq7xkpv2Mhttslg7Hw=
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
-sigs.k8s.io/kustomize/api v0.13.4 h1:E38Hfx0G9R9v7vRgKshviPotJQETG0S2gD3JdHLCAsI=
-sigs.k8s.io/kustomize/api v0.13.4/go.mod h1:Bkaavz5RKK6ZzP0zgPrB7QbpbBJKiHuD3BB0KujY7Ls=
-sigs.k8s.io/kustomize/kustomize/v5 v5.0.1 h1:HWXbyKDNwGqol+s/sMNr/vnfNME/EoMdEraP4ZkUQek=
-sigs.k8s.io/kustomize/kustomize/v5 v5.0.1/go.mod h1:Q8o+soB41Pn1y26eXzG9cniuECDpTJe2eKOA1fENCU8=
-sigs.k8s.io/kustomize/kyaml v0.14.2 h1:9WSwztbzwGszG1bZTziQUmVMrJccnyrLb5ZMKpJGvXw=
-sigs.k8s.io/kustomize/kyaml v0.14.2/go.mod h1:AN1/IpawKilWD7V+YvQwRGUvuUOOWpjsHu6uHwonSF4=
-sigs.k8s.io/release-utils v0.7.3 h1:6pS8x6c5RmdUgR9qcg1LO6hjUzuE4Yo9TGZ3DemrZdM=
-sigs.k8s.io/release-utils v0.7.3/go.mod h1:n0mVez/1PZYZaZUTJmxewxH3RJ/Lf7JUDh7TG1CASOE=
-sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE=
-sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E=
-sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=
+sigs.k8s.io/kustomize/api v0.16.0 h1:/zAR4FOQDCkgSDmVzV2uiFbuy9bhu3jEzthrHCuvm1g=
+sigs.k8s.io/kustomize/api v0.16.0/go.mod h1:MnFZ7IP2YqVyVwMWoRxPtgl/5hpA+eCCrQR/866cm5c=
+sigs.k8s.io/kustomize/kustomize/v5 v5.0.4-0.20230601165947-6ce0bf390ce3 h1:vq2TtoDcQomhy7OxXLUOzSbHMuMYq0Bjn93cDtJEdKw=
+sigs.k8s.io/kustomize/kustomize/v5 v5.0.4-0.20230601165947-6ce0bf390ce3/go.mod h1:/d88dHCvoy7d0AKFT0yytezSGZKjsZBVs9YTkBHSGFk=
+sigs.k8s.io/kustomize/kyaml v0.16.0 h1:6J33uKSoATlKZH16unr2XOhDI+otoe2sR3M8PDzW3K0=
+sigs.k8s.io/kustomize/kyaml v0.16.0/go.mod h1:xOK/7i+vmE14N2FdFyugIshB8eF6ALpy7jI87Q2nRh4=
+sigs.k8s.io/release-utils v0.7.7 h1:JKDOvhCk6zW8ipEOkpTGDH/mW3TI+XqtPp16aaQ79FU=
+sigs.k8s.io/release-utils v0.7.7/go.mod h1:iU7DGVNi3umZJ8q6aHyUFzsDUIaYwNnNKGHo3YE5E3s=
+sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=
+sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
+sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
+sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
+software.sslmate.com/src/go-pkcs12 v0.2.0 h1:nlFkj7bTysH6VkC4fGphtjXRbezREPgrHuJG20hBGPE=
+software.sslmate.com/src/go-pkcs12 v0.2.0/go.mod h1:23rNcYsMabIc1otwLpTkCCPwUq6kQsTyowttG/as0kQ=
diff --git a/hack/.templates/jsfh-config.json b/hack/.templates/jsfh-config.json
deleted file mode 100644
index de0e3b8688..0000000000
--- a/hack/.templates/jsfh-config.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "custom_template_path": "hack/.templates/jsonschemaforhumans/base.md",
- "template_md_options": {
- "badge_as_image": true,
- "show_heading_numbers": false
- },
- "show_toc": false,
- "show_breadcrumbs": false,
- "footer_show_time": false,
- "deprecated_from_description": true
-}
diff --git a/hack/.templates/jsonschemaforhumans/base.md b/hack/.templates/jsonschemaforhumans/base.md
deleted file mode 100644
index 3eedb82c45..0000000000
--- a/hack/.templates/jsonschemaforhumans/base.md
+++ /dev/null
@@ -1,17 +0,0 @@
-{{ schema.keywords.get("title").literal | default("Zarf Package Schema") | md_heading(0) }}
-{% set contentBase %}
-{% with schema=schema, skip_headers=False %}
- {% include "content.md" %}
-{% endwith %}
-{% endset %}
-
-{{ md_get_toc() }}
-
-{{ contentBase }}
-
-----------------------------------------------------------------------------------------------------------------------------
-{% if config.with_footer -%}
-Generated from [zarf.schema.json](https://github.com/defenseunicorns/zarf/blob/main/zarf.schema.json){% if config.footer_show_time %} on {{ get_local_time() }}{% endif %}
-{%- endif -%}
-
-{{ "\n" }}
diff --git a/hack/.templates/jsonschemaforhumans/breadcrumbs.md b/hack/.templates/jsonschemaforhumans/breadcrumbs.md
deleted file mode 100644
index 099479b487..0000000000
--- a/hack/.templates/jsonschemaforhumans/breadcrumbs.md
+++ /dev/null
@@ -1,9 +0,0 @@
-{% filter md_escape_for_table %}
-{%- if config.show_breadcrumbs %}
- {%- for node in schema.nodes_from_root -%}
- {{ node.name_for_breadcrumbs }}{%- if not loop.last %} > {% endif -%}
- {%- endfor -%}
-{%- else -%}
- {{- schema.name_for_breadcrumbs or schema.property_name -}}
-{% endif %}
-{% endfilter %}
diff --git a/hack/.templates/jsonschemaforhumans/content.md b/hack/.templates/jsonschemaforhumans/content.md
deleted file mode 100644
index ebce47938f..0000000000
--- a/hack/.templates/jsonschemaforhumans/content.md
+++ /dev/null
@@ -1,92 +0,0 @@
-{#
- content is a template and not a macro in md
- because macro parameters are not through context
- when rendering a template from the macro and it caused
- serious problems when using recursive calls
- mandatory context parameters:
- schema
-#}
-{# context parameters default values #}
-{% set skip_headers = skip_headers or False %}
-{# end context parameters #}
-
-{% set keys = schema.keywords %}
-{%- if not skip_headers %}
-
-{% if schema.title and schema.title | length > 0 %}
-**Title:** {{ schema.title }}
-{% endif %}
-
-{% set description = (schema | get_description) %}
-{% include "section_description.md" %}
-
-{{ schema | md_type_info_table | md_generate_table }}
-
-{% endif %}
-
-{% if schema.should_be_a_link(config) %}
-{% elif schema.refers_to -%}
- {%- with schema=schema.refers_to_merged, skip_headers=True -%}
- {% include "content.md" %}
- {% endwith %}
-{% else %}
-
- {# Combining: allOf, anyOf, oneOf, not #}
- {% if schema.kw_all_of %}
- {% with operator="allOf", title="All of(Requirement)", current_node=schema.kw_all_of, skip_required=True %}
- {% include "tabbed_section.md" %}
- {% endwith %}
- {% endif %}
- {% if schema.kw_any_of %}
- {% with operator="anyOf", title="Any of(Option)", current_node=schema.kw_any_of, skip_required=True %}
- {% include "tabbed_section.md" %}
- {% endwith %}
- {% endif %}
- {% if schema.kw_one_of %}
- {% with operator="oneOf", title="One of(Option)",current_node=schema.kw_one_of, skip_required=True %}
- {% include "tabbed_section.md" %}
- {% endwith %}
- {% endif %}
- {% if schema.kw_not %}
- {% include "section_not.md" %}
- {% endif %}
-
- {# Enum and const #}
- {% if schema.kw_enum -%}
- {% include "section_one_of.md" %}
- {%- endif %}
- {%- if schema.kw_const -%}
- Specific value: `{{ schema.kw_const.raw | python_to_json }}`
- {%- endif -%}
-
- {# Conditional subschema, or if-then-else section #}
- {% if schema.has_conditional %}
- {% with skip_headers=False %}
- {% include "section_conditional_subschema.md" %}
- {% endwith %}
- {% endif %}
-
- {# Required properties that are not defined under "properties". They will only be listed #}
- {% include "section_undocumented_required_properties.md" %}
-
- {# Show the requested type(s) #}
- {{- schema | md_restrictions_table | md_generate_table -}}
-
- {# Show array restrictions #}
- {% if schema.type_name.startswith("array") %}
- {% include "section_array.md" %}
- {% endif %}
-
- {# Display examples #}
- {% set examples = schema.examples %}
- {% if examples %}
- {% include "section_examples.md" %}
- {% endif %}
-
- {# details of Properties, pattern properties, additional properties #}
- {% if schema.type_name == "object" %}
- {% with skip_required=False %}
- {% include "section_properties_details.md" %}
- {% endwith %}
- {% endif %}
-{% endif %}
diff --git a/hack/.templates/jsonschemaforhumans/section_array.md b/hack/.templates/jsonschemaforhumans/section_array.md
deleted file mode 100644
index 3db7504f45..0000000000
--- a/hack/.templates/jsonschemaforhumans/section_array.md
+++ /dev/null
@@ -1,36 +0,0 @@
-{% set min_items = schema.kw_min_items.literal or "N/A" %}
-{% set max_items = schema.kw_max_items.literal or "N/A" %}
-{% set kw_unique_items = schema.kw_unique_items.literal or "False" %}
-{% set kw_additional_items = schema.kw_additional_items.literal or "N/A" %}
-
-{{ md_badge("Min Items: " + min_items, "gold", show_text=False) }}
-{{ md_badge("Max Items: " + max_items, "gold", show_text=False) }}
-{{ md_badge("Item unicity: " + kw_unique_items, "gold", show_text=False) }}
-{{ md_badge("Additional items: " + kw_additional_items, "gold", show_text=False) }}
-
-
-{% if schema.array_items_def %} {% filter md_heading(2) %} {% with schema=schema.array_items_def %}{%- include "breadcrumbs.md" %}{% endwith %} {% endfilter %} {% with schema=schema.array_items_def, skip_headers=False, skip_required=True %} {% include "content.md" %} {% endwith %} {% endif %}
-
-{% if schema.kw_items %}
-{{ md_badge("Min Items: " + min_items, "gold", show_text=False) }}
-{{ md_badge("Max Items: " + max_items, "gold", show_text=False) }}
-{{ md_badge("Item unicity: " + kw_unique_items, "gold", show_text=False) }}
-{{ md_badge("Additional items: " + kw_additional_items, "gold", show_text=False) }}
-
-
-{% for item in schema.kw_items %}
- {% filter md_heading(3, item.html_id) %}
- {% with schema=item %}{%- include "breadcrumbs.md" %}{% endwith %}
- {% endfilter %}
- {% with schema=item, skip_headers=False, skip_required=True %}
- {% include "content.md" %}
- {% endwith %}
-{% endfor %}
-{% endif %}
-
-{% if schema.kw_contains and schema.kw_contains.literal != {} %}
-{{ "At least one of the items must be" | md_heading(3) }}
-{% with schema=schema.kw_contains, skip_headers=False, skip_required=True %}
- {% include "content.md" %}
-{% endwith %}
-{% endif %}
diff --git a/hack/.templates/jsonschemaforhumans/section_conditional_subschema.md b/hack/.templates/jsonschemaforhumans/section_conditional_subschema.md
deleted file mode 100644
index 4eea301310..0000000000
--- a/hack/.templates/jsonschemaforhumans/section_conditional_subschema.md
+++ /dev/null
@@ -1,24 +0,0 @@
-{% if schema.kw_if %}
- {% set first_property = schema.kw_if | get_first_property %}
-
- {% if schema.kw_then %}
- {%- filter md_heading(2) -%}If (
- {{- first_property.property_name | md_escape_for_table -}}
- {{- " = " -}}
- {{- first_property.kw_const.literal | python_to_json -}}
- ){%- endfilter -%}
- {% with schema=schema.kw_then, skip_headers=False%}
- {% include "content.md" %}
- {% endwith %}
- {% endif %}
- {% if schema.kw_else %}
- {%- filter md_heading(2) -%}Else (i.e. {{ " " }}
- {{- first_property.property_name | md_escape_for_table -}}
- {{- " != " -}}
- {{- first_property.kw_const.literal | python_to_json -}}
- ){%- endfilter -%}
- {% with schema=schema.kw_else, skip_headers=False %}
- {% include "content.md" %}
- {% endwith %}
- {% endif %}
-{% endif %}
diff --git a/hack/.templates/jsonschemaforhumans/section_description.md b/hack/.templates/jsonschemaforhumans/section_description.md
deleted file mode 100644
index 77cb9bfe9b..0000000000
--- a/hack/.templates/jsonschemaforhumans/section_description.md
+++ /dev/null
@@ -1,4 +0,0 @@
-{# Display description #}
-{% if description %}
-**Description:**{{ " " }}{{ description }}
-{% endif %}
diff --git a/hack/.templates/jsonschemaforhumans/section_examples.md b/hack/.templates/jsonschemaforhumans/section_examples.md
deleted file mode 100644
index ba0fbd6072..0000000000
--- a/hack/.templates/jsonschemaforhumans/section_examples.md
+++ /dev/null
@@ -1,8 +0,0 @@
-**Example{% if examples|length > 1 %}s{% endif %}:**
-
-
-{% for example in examples %}
-{% set example_id = schema.html_id ~ "_ex" ~ loop.index %}
-{{ example }}{%- if not loop.last %}, {% endif -%}
-{% endfor %}
-
diff --git a/hack/.templates/jsonschemaforhumans/section_not.md b/hack/.templates/jsonschemaforhumans/section_not.md
deleted file mode 100644
index bf2c9af388..0000000000
--- a/hack/.templates/jsonschemaforhumans/section_not.md
+++ /dev/null
@@ -1,4 +0,0 @@
-{{ "Must **not** be" | md_heading(3) }}
-{% with schema=schema.kw_not, skip_headers=False, skip_required=True %}
- {% include "content.md" %}
-{% endwith %}
diff --git a/hack/.templates/jsonschemaforhumans/section_one_of.md b/hack/.templates/jsonschemaforhumans/section_one_of.md
deleted file mode 100644
index 08dde2cc57..0000000000
--- a/hack/.templates/jsonschemaforhumans/section_one_of.md
+++ /dev/null
@@ -1,6 +0,0 @@
-:::note
-Must be one of:
-{% for enum_choice in schema.kw_enum.array_items %}
-* {{ enum_choice.literal | python_to_json }}
-{% endfor %}
-:::
diff --git a/hack/.templates/jsonschemaforhumans/section_properties_details.md b/hack/.templates/jsonschemaforhumans/section_properties_details.md
deleted file mode 100644
index d73ad70bc8..0000000000
--- a/hack/.templates/jsonschemaforhumans/section_properties_details.md
+++ /dev/null
@@ -1,59 +0,0 @@
-{% for sub_property in schema.iterate_properties %}
- {%- if sub_property.is_additional_properties and not sub_property.is_additional_properties_schema -%}
- {% continue %}
- {% endif %}
-
- {%- if sub_property is deprecated -%}
- {% continue %}
- {% endif %}
-
- {% set html_id = sub_property.html_id %}
-
- {% set description = sub_property | get_description %}
-
-{% if sub_property.type_name == "object" or sub_property.type_name == "array" %}
-
-{% else %}
-
-{% endif %}
-
- {% filter md_heading(1, html_id, True) -%}
- {%- filter replace('\n', '') -%}
- {%- if sub_property.is_pattern_property %} Pattern Property{% endif %} {% with schema=sub_property %}{%- include "breadcrumbs.md" %} {% endwith %}
- {%- if not skip_required and sub_property.property_name -%}
- {{ "*" if sub_property.is_required_property else "" -}}
- {%- endif -%}
- {%- endfilter %}
- {%- endfilter %}
-
-
-
-
-
- {% if sub_property.type_name == "object" or sub_property.type_name == "array" %}
- ## {% with schema=sub_property %}
- {%- for node in schema.nodes_from_root -%}
- {%- if node.name_for_breadcrumbs == "root" or node.name_for_breadcrumbs.endswith(" items") -%}{% continue %}{%- endif -%}
- {{ node.name_for_breadcrumbs }}{%- if not loop.last %} > {% endif -%}
- {%- endfor -%}
- {% endwith %}
- {% endif %}
-
- {% with schema=sub_property, skip_headers=False %}
- {% if sub_property.is_pattern_property %}
-:::note
-All properties whose name matches the regular expression
-```{{ sub_property.property_name }}``` ([Test](https://regex101.com/?regex={{ sub_property.property_name | urlencode }}))
-must respect the following conditions
-:::
- {% endif %}
- {%- if not skip_required and sub_property.property_name -%}
- {{ md_badge("Required", "red", show_text=False) if sub_property.is_required_property else "" -}}
- {%- endif -%}
- {% include "content.md" %}
- {% endwith %}
-
-
-
-
-{% endfor %}
diff --git a/hack/.templates/jsonschemaforhumans/section_undocumented_required_properties.md b/hack/.templates/jsonschemaforhumans/section_undocumented_required_properties.md
deleted file mode 100644
index 20e243d542..0000000000
--- a/hack/.templates/jsonschemaforhumans/section_undocumented_required_properties.md
+++ /dev/null
@@ -1,7 +0,0 @@
-{% set undocumented_required_properties = schema | get_undocumented_required_properties %}
-{% if undocumented_required_properties%}
-{{ "The following properties are required" | md_heading(3) }}
-{% for required_property in undocumented_required_properties %}
-* {{ required_property }}
-{% endfor %}
-{% endif %}
diff --git a/hack/.templates/jsonschemaforhumans/tabbed_section.md b/hack/.templates/jsonschemaforhumans/tabbed_section.md
deleted file mode 100644
index e675cd6d60..0000000000
--- a/hack/.templates/jsonschemaforhumans/tabbed_section.md
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-{{ current_node | md_array_items(title) | md_generate_table }}
-
-{% for node in current_node.array_items %}
-
-
- {% filter md_heading(2, node.html_id) -%}
- {% if node.is_pattern_property %}Pattern{% endif %} Property `{% with schema=node %}{%- include "breadcrumbs.md" %}{% endwith %}`
- {%- endfilter %}
-
- {% with schema=node, skip_headers=False %}
- {% include "content.md" %}
- {% endwith %}
-
-