Compare commits

..

12 Commits

@ -5,28 +5,11 @@ Purpose: Manage gpg keys for:
# Key Management # Key Management
* Role: New User: new key to be added; can be a new employee being added for first time, existing employee getting access to a new repo, key rotation, etc Roles:
* Role: Existing User: user who already has access to the appropriate project
* Definition: List of all users: [verify/.sops.yaml](verify/.sops.yaml)
* Keys Repository: This Git Repository (`communication-keys`), manages public keys and configuration in Project Repositories
* Project Repository: Git Repository for each Project which contains SOPS-Encrypted secrets, e.g. for GitOps Deployments using Helm Files
# Playbook for Configuring Access for New Users
## Overview:
1. In the Keys Repo (`communication-keys`): * New User: new key to be added; can be a new employee being added for first time, existing employee getting access to a new repo, key rotation, etc
1. New User creates,adds GPG Key * Existing User: user who already has access to the appropriate project
1. Existing User configures groups * Definition: List of all users: [verify/.sops.yaml](verify/.sops.yaml)
1. Existing User configures verification SOPS Config
1. New User installs SOPS
1. New User verifies SOPS installation using verification SOPS Config
1. **Status**: New User has working key, working sops installation. Caveat: No access to secrets in other repos yet
1. In the Project Repo
1. Existing User adds New User Key to SOPS Config, Secrets Files
1. New User verifies access
1. **Status**: New User has access to SOPS-encrypted secrets within Project Repo
## 1a. Onboarding: [New User]: create and add a gpg key ## 1a. Onboarding: [New User]: create and add a gpg key
1. Clone this repository 1. Clone this repository
@ -37,28 +20,40 @@ Purpose: Manage gpg keys for:
- CAVEAT: step 14 is not necessary, as it is specific to a GitHub account - CAVEAT: step 14 is not necessary, as it is specific to a GitHub account
1. add ONLY the _PUBLIC_ part of your gpg key!!! to your branch 1. add ONLY the _PUBLIC_ part of your gpg key!!! to your branch
- file format: `<email>@netgo.de.gpg.pub` - file format: `<email>@netgo.de.gpg.pub`
- **Example**: `max.musterman@netgo.de.gpg.pub`
1. git: commit the new file, push 1. git: commit the new file, push
1. gitlab: open a MergeRequest 1. open a MergeRequest
1. **Hand-Off**: Assign the MR to an Existing User in your Team to have your key added. 1. Hand-Off: Assign the MR to an Existing User in your Team to have your key added.
- Hint: Look up all Existing Users in the comments at: [verify/.sops.yaml](verify/.sops.yaml) - Hint: Look up all Existing Users in the comments at: [verify/.sops.yaml](verify/.sops.yaml)
## 1b. Onboarding: [Existing User|New User]: Add new user to groups ## 1b. Onboarding: [Existing User|New User]: Add new user to groups
**Prerequisite**: Determine the groups to which access is needed, e.g. a specific repository. If uncertain, ask a Team Member for help! Determine the groups to which access is needed, e.g. a specific repository.
If uncertain, ask a Team Member for help!
Technical Instructions - please forgive the complexity
Access for each repo is tracked using the `./groups/` directory; each sub-directory represents a "group" (Note: some "groups" are also "roles", e.g. `admin`)
**Technical Instructions** - please forgive the complexity Most of the groups correspond directly to git repository names, aka "project name"
Create a symlink from the group-directory back to the keyfile Create a symlink from the group-directory back to the keyfile
```shell
cd groups/<project_name>
ln -s ../../<path_to_key.gpg.pub>
```
1. `cd groups/<project_name>` Example:
- **Example**: `cd groups/devnso-adp-argocd`
- Explanation: Access for each repo is tracked using the `./groups/` directory; each sub-directory represents a "group" (Note: some "groups" are also "roles", e.g. `admin`)
- Explanation: Most of the groups correspond directly to git repository names, aka "project name"
1. `ln -s ../../<path_to_key.gpg.pub>`
- **Example**: `ln -s ../../max.musterman@netgo.de.gpg.pub`
## 2. Onboarding: [Existing User]: Configure sops config Add "Max Musterman" to the group for `devnso-adp-argocd`:
```shell
# navigate to group-directory for devnos
cd groups/devnso-adp-argocd
# symlink to pubkey for New User
ln -s ../../max.musterman@netgo.de.gpg.pub
```
## 3. Onboarding: [Existing User]: Configure sops config
Context: This repo stores the keys used to encrypt secrets in other repos; these "consumer" repos each contain a sops config `.sops.yaml` which manages access to the encrypted files (e.g. `secrets.yaml`) Context: This repo stores the keys used to encrypt secrets in other repos; these "consumer" repos each contain a sops config `.sops.yaml` which manages access to the encrypted files (e.g. `secrets.yaml`)
@ -66,116 +61,60 @@ For verification purposes, this repo also contains a _sample_ `.sops.yaml` to wh
### Update Verification SOPS Config ### Update Verification SOPS Config
1. Checkout the New User's branch titled `add_pubkey_[firstname]-[lastname]`. Follow the interactive prompts:
- CLI: e.g. `git branch add_pubkey_Max-Musterman` ```shell
1. Run `./verify/usr_confirm_keycfg.sh` ./verify/usr_confirm_keycfg.sh
1. git: commit the new file, push ```
1. **Status**: New User has working SOPS Configuration
1. **Hand-Off**: Proceed to next steps; Instruct New User to verify access to secrets
### Update Project SOPS Config ### Update Project SOPS Config
The following commands explain how to update the `.sops.yaml` for a repository. The following commands explain how to update the `.sops.yaml` for a repository:
Note: For a worked-through example, see next section. #### Prerequisite
1. **Prerequisite**
1. Obtain Project Repo
- CLI:: `git clone <repo_url>`
1. **Create Branch**
- CLI: `git checkout -b add_pubkey_[firstname]-[lastname] origin/main`
1. **Configure Project Repo for New User**
1. List available groups:
- CLI: `${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh --list_groups`
- Reminder: Group Name usually corresponds to Repository Name
1. Update sops config AND all secrets files:
- CLI: `${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh --group <group_name> --find_secrets
1. **Commit the changes, Create Change Request (PR/MR)**
1. git: commit the changes to `.sops.yaml` and secrets files (`secrets.yaml`) files
- CLI: `git add .sops.yaml $(find . -name secrets.yaml)`
- **CAVEAT**: check for other changes with `git status` ! The files do not always follow consistent conventions.
- CLI: `git commit -m "adds <firstname>.<lastname> to sops config"`
1. git: push branch
- CLI: `git push -u origin add_pubkey_[firstname]-[lastname]`
1. gitlab: open a MergeRequest, Review, Merge
1. **Status**: New User has access to SOPS-Encrypted Secrets within Project Repo
1. **Hand-Off**: Proceed to next steps; Instruct New User to verify access to secrets
#### Example
**Prerequisite**
Obtain Repo
```shell ```shell
# E.g. update sops config for DevNSO # E.g. update sops config for DevNSO
% git clone git@git.dev-at.de:cloud-solutions/nso/devnso-adp-argocd.git % git clone git@git.dev-at.de:cloud-solutions/nso/devnso-adp-argocd.git
% cd devnso-adp-argocd/ % cd devnso-adp-argocd/
``` ```
**Create Branch**
```shell
## OPINIONATED GIT - use preferred method
git checkout -b add_pubkey_max-musterman origin/main
```
**Configure Project Repo for New User** #### Commands
<!-- TODO: auto-determine group with git remote show origin -->
<!-- TODO: auto-determine secrets files by integrating the 'find . -name secrets.yaml' in the script -->
```shell ```shell
# List available groups # List available groups
# Output: % ${PATH_TO_THIS_REPO}/bin/update_sops.sh --list_groups
% ${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh --list_groups
# INFO: listing groups # INFO: listing groups
admin admin
automation automation
devnso-adp-argocd devnso-adp-argocd
# For a given group, update sops config AND all secrets files - New Users cannot add themselves! # For a given group, update sops config
# Output: % ${PATH_TO_THIS_REPO}/bin/update_sops.sh -g devnso-adp-argocd
% ${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh --group devnso-adp-argocd --find_secrets
# RUN: generate SOPS config # RUN: generate SOPS config
# RUN: gpg --import *.gpg.pub # WARN: no secrets file passed in, make sure to call 'sops updatekeys' on secrets files
# RUN: sops updatekeys ./loki/loki/secrets.yaml
...
# SUCCESS: all users with keys in this dir should have functional keys
```
**Commit the changes, Create Change Request (PR/MR)**
```shell
# git: commit the changes to `.sops.yaml` and secrets files (`secrets.yaml`) files
% git add .sops.yaml $(find . -name secrets.yaml)
# **CAVEAT**: check for other changes with `git status` ! The files do not always follow consistent conventions.
# output:
% git status
...
no changes added to commit (use "git add" and/or "git commit -a")
% git commit -m "adds max.musterman to sops config" # [OPTIONAL] For a given group, update sops config AND specified secrets file
% ${PATH_TO_THIS_REPO}/bin/update_sops.sh -g devnso-adp-argocd -s ./adp-api-devs/adp-api-devs/secrets.yaml
git push -u origin add_pubkey_max-musterman # commit the changes to any .sops.yaml or secrets files, e.g. with
## OPINIONATED GIT - use preferred method
% git add -p
% git commit -m "adds <firstname>.<lastname> to sops config"
% git push
``` ```
Now proceed to with the remaining steps, i.e. gitlab: open a MergeRequest, Review, Merge At this point, the New User has been configured and can grant themselves access to any of the secrets files in this project.
## 3. Onboarding: [New User] Configure SOPS ## 4. Onboarding: [New User] Configure SOPS
SOPS is used for encrypting secrets, e.g. credentials for various systems SOPS is used for encrypting secrets, e.g. credentials for various systems
## Install ## Install
1. **Install Sops** https://github.com/getsops/sops
1. https://github.com/getsops/sops
- Note: Note:
* MacOS: If desired, one can also use brew to install sops: `brew install sops`; although this is not officially maintained, [the formula is essentially the same as the official installation instructions](https://github.com/Homebrew/homebrew-core/blob/4496ce5131bc09e7065fa0aa8fb96366a3df6477/Formula/s/sops.rb) * MacOS: If desired, one can also use brew to install sops: `brew install sops`; although this is not officially maintained, [the formula is essentially the same as the official installation instructions](https://github.com/Homebrew/homebrew-core/blob/4496ce5131bc09e7065fa0aa8fb96366a3df6477/Formula/s/sops.rb)
1. **Configure Sops**
* Add the following to your `~/.bashrc` or `~/.zshrc` - but _not_ to your `~/.profile` as it must be set per session:
```shell
# Enable interactive passphrase prompt for SOPS
export GPG_TTY=$(tty)
```
1. **Verify SOPS Installation and Key Configuration**
1. `./verify/usr_confirm_keycfg.sh`
## Usage ## Usage
@ -184,15 +123,12 @@ Decrypt and Display Secrets in Terminal:
```bash ```bash
GPG_TTY=$(tty) sops secrets.yaml GPG_TTY=$(tty) sops secrets.yaml
``` ```
<!-- CAVEAT: if GPG_TTY is set in environment, no need to specify it again. Leaving it inline for this command to be explicit about requirement for correct functiuonality -->
Note: The `GPG_TTY` is necessary to have the password prompt appear. src: https://www.varokas.com/secrets-in-code-with-mozilla-sops/ Note: The `GPG_TTY` is necessary to have the password prompt appear. src: https://www.varokas.com/secrets-in-code-with-mozilla-sops/
Note: `secrets.yaml` is just an example; the file can have any name Note: `secrets.yaml` is just an example; the file can have any name
# Playbook for Removing Expired Keys ## 5. Offboarding: [Existing User]: Archive Expired Keys (EOL)
## Offboarding: [Existing User]: Archive Expired Keys (EOL)
To mark a key as expired: To mark a key as expired:
1. move it to the `archive/` dir 1. move it to the `archive/` dir
@ -218,7 +154,7 @@ find groups/ -name ${keyname}
# For each group, update sops config in that repo # For each group, update sops config in that repo
# Example: # Example:
% cd devnso-adp-argocd % cd devnso-adp-argocd
% ${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh --group devnso-adp-argocd --find_secrets % ${PATH_TO_THIS_REPO}/bin/update_sops.sh -g devnso-adp-argocd
# now git commit, push, etc # now git commit, push, etc
``` ```

@ -1,42 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQGNBGfrlH0BDAC4oO5PNsFJiLm0qUmVDzWflsiEDJoyKQYcbNblDOjTHjhnn0h7
OudpVFbw7ABj+TZ95ytdiVvMOsitINDzCH1zWrN2nvXi1l2JVo6rSWRVPO9OF8LJ
Z+Soomn28Wd39NvJkBwEgL1WRVck69Aqk0Z5bqfocm65vJSrBrg2V6LKRtF7tvTI
1CRaxK2yq4Vp4DPLUg4h+9g/OoCf1bS/QOqnv2wQ2kAe6/2Oarp+OBfwCaqpnVxt
6Q3XVBg9maooCTpdWzHydeyVzrLY08oiPXv6yfoOeOz/wLvhevbn0Y9GikpAfDT5
vUGaXrMegjIpOdNRRK20ZG/4eYfuASEMdNWlmacXKGNtk7/Vl0j5Z421WfhCmBYG
Av3L1n4n28yffZDL+nkAVN2iIh+n9cBK9Xfxpuhl6BWh7Axc9Az1yeNZ6E1veAkb
ngDb+gBqhzxoLuI2xW6Wfmz50aSdVtPXVUf6W/cyD7b51UNGKPiODj+aIJ68F+1w
cWuPzGu88Khorr0AEQEAAbQoYW5kcmVhcy5yb3RoZXIgPGFuZHJlYXMucm90aGVy
QG5ldGdvLmRlPokB0QQTAQgAOxYhBEPeigGr1wZxfDYBjEjEfBJcAi8pBQJn65R9
AhsDBQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAAAoJEEjEfBJcAi8pj8sMAIkT
G8jnmCc6QLzSWGUfJps9RqbKXSi3dgi89cXkgrNdAp1EgB8wEWhd3K8s6rhGqQMY
zc7CboEUq6iJSNgdSO4tM6UmNN91DtoPHeacO2bbJ9Bq7sVf42TAi2lOI6qYgA+X
MrGu/nI2dVzuuofKBE+VEUBqZKEwEW81NAoGvr7XHFXvWF56XiTaKtNUJOH/iDD2
AHV6OejwAaePw/enj+3y1O4FGa6ZIU9sfK02M9VGQvaIkKGpEaXhJV2aOmY//8rV
jE0hWWF91hCQzGbOKzRk9UDRA8yc5w8I3D+IFIWzrEzlJvpqeh4evUGkDgSTJFxC
WQts7GFowNCoGQG3Tt0qRrRs0riGh1rc9+1p836x0+6o+8wW6sSrXiEr7+JgmzVG
IHKMWRTBUtpLvIbE0mbKBCt3tTSiwGYM+zmht/yJ/9Au//wFBuoJI5gyaLPscHcI
dnnmmx7Ww/1Mq/MeaisyuVwpbaSnb4Z2Rk02DbRsTzzPDwNNQDZDX6QurGhS0bkB
jQRn65R9AQwAyNgXVnlefBsyFWvED0yVpKzf3afxUfKy66eNsfvRQDogVnxUddv/
azeD4t6wCGvXBYEQOd8e3N6yeEv3w6RoYGWDQgv22zpubvUChzlI1vs+qewrA+lC
ssBfpEJ1ymYL/HaxaJPDxpz3tvN9k4uCD4dvwK3V62itTwvTlXOTqa3QYMWIHmWs
qS1Up2f1nTDVOgHchZPiSwfrsuJX6b9WGt5ClXxy2iQQfUPcyyFwAh1VrJgG0mYB
qG2l0QJFLzlv21GpxqUl5HqbUnZ4i06nzHI3cH137xZKux96oxT4GIpRBuMLTGc1
Its1bebfeu4DIDBk5mJD58THBf2s6Qu8M2wkScaRrtuHgjLd6u6IIe55SyeAk025
x82m6Kk1zG83NkGbeCziBq5dwDQIbpb5jpYBYVV+YVEMv2zI99hGUDvghW22z81C
M3AUS35P+80r+IayGNIh1X02YTxw+1e6aOpBY9q2J+51wv6pwCDLIlhv1wQqMOZG
DXgDxFVTy5chABEBAAGJAbYEGAEIACAWIQRD3ooBq9cGcXw2AYxIxHwSXAIvKQUC
Z+uUfQIbDAAKCRBIxHwSXAIvKXJzC/9/tkAGf8FD7gyFfRCZcoTILZe98U0jez3j
yafmjcApUaIlFg8Z8LiNqcUpaPIpk5/3kJQU+cWS6opXLs6Ahg1vjb0G9G1vZ3yV
lqTIahxNQ0KOIvvh8pNrNxosBBunXNDDBAiJbrAPWA18s1OJ4lNFGKlpUtXfGn/h
5uu3cUBtWAk85x2gIiwp4wyyxsfA2A59QOAfbjEQmre28N+Chhb3CU0devWI5Yos
TYYb1JdR9bj+G1CxE21gSPHOzLexrbdosb8t49o6vkRn4qnxvMwrgzOZMWR0HjAw
oIjv5BKah5YSW0VBq279aMENtXsvRN25t2T3YB81QtDajxiX2tl+8C0tg9UNYmMu
+0d8ocNz+HcBdXnPcggkeR/tba8OEts5ycCLfVMddJbHgER3xDXbnYUssg3pndMg
ueCM1qeosWHhZT4+4/QVgZTiUzjyPwUUz8bFsyAKYVJAR9PC8M44pBcqyu5RarQu
tPQpHpp5OcriKFWxiZSM41Wm5yHn5Yc=
=BUTZ
-----END PGP PUBLIC KEY BLOCK-----

@ -1,13 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaD2xXRYJKwYBBAHaRw8BAQdAKL1LP1gP7t3R41tNdVH5cUu7OksuY7FDwoq0
EX/IznG0KkR1c3RpbiBCbGVzY2hrZSA8ZHVzdGluLmJsZXNjaGtlQG5ldGdvLmRl
PoiTBBMWCgA7FiEEjWAJEv1C71NS043SL9cfRX73u4sFAmg9sV0CGwMFCwkIBwIC
IgIGFQoJCAsCBBYCAwECHgcCF4AACgkQL9cfRX73u4trEAD/Z/e5IU9+PyU0oSFT
tu9i2t2muFwrNdxsrkgATNJoJqEBAPGRo5apeOwH/8rqfOnK89AMUPPD9DS5Giqg
RPOT4/UOuDgEaD2xXRIKKwYBBAGXVQEFAQEHQKI0sArCldO4QoHZZNUDpk2e92WC
aJSpEpqaQ1ODqGVwAwEIB4h4BBgWCgAgFiEEjWAJEv1C71NS043SL9cfRX73u4sF
Amg9sV0CGwwACgkQL9cfRX73u4tnzQEA5+wX3G6uInM8rkMCGxaZ4/0gV30Kc2ye
1YqWNjZBgKUBAKLeSWj7VzdV/nZ/rgmrZx44pQxbsv5IYaZbYKxanuwD
=vPAd
-----END PGP PUBLIC KEY BLOCK-----

@ -1,13 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaBTWbhYJKwYBBAHaRw8BAQdAkvaY0BFbzEITBsCR3A8JnjrWZ/4orlFY7Ixe
aUSE/de0Hkt5cmEgS2VyeiA8a3lyYS5rZXJ6QG5ldGdvLmRlPoiTBBMWCgA7FiEE
u6DCZkei2Hq6GG1vPShOpyX5VS4FAmgU1m4CGwMFCwkIBwICIgIGFQoJCAsCBBYC
AwECHgcCF4AACgkQPShOpyX5VS5KCAEA5Fc+i9r1+xVRKqlf+XqX6PT1uhWKyrR4
+p6D0Q8/aCcA+wSuUcrwSNTcxfKF65wKyuOiNw5lWTTYq8vcwjIDYgUIuDgEaBTW
bhIKKwYBBAGXVQEFAQEHQBddu45Nfx+u3scccplH1OBLxSeOn6nKiSyVrrd8ySII
AwEIB4h4BBgWCgAgFiEEu6DCZkei2Hq6GG1vPShOpyX5VS4FAmgU1m4CGwwACgkQ
PShOpyX5VS4XpQD+JFrljM9ywUV17RjxZQEWpvviHGnWXYiayy/LbULb0M0A/iba
nN8E8ow17zqpng5Jqm7a/IYy8yQsNB0FYf6ddMMC
=FqJe
-----END PGP PUBLIC KEY BLOCK-----

@ -1,13 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEZ8csoBYJKwYBBAHaRw8BAQdA4XDYoQCpDYRQVMdhXWaQ8R+DJWfDUZKLGp0L
CDKQkLG0JkJhcyBDYW5jcmludXMgPGJhcy5jYW5jcmludXNAbmV0Z28uZGU+iJME
ExYKADsWIQSfU0FojS+QJKFVQcngKUnQ93aeLAUCZ8csoAIbAwULCQgHAgIiAgYV
CgkICwIEFgIDAQIeBwIXgAAKCRDgKUnQ93aeLCLFAP0XM8gj8Dj6/j+CudjOemlZ
YtMeWKgzoQavq5MjvqpC5gD/SfhHrENFxqIauGyLhX3YOlYTu77nFjFD9Ue4eiXe
gAi4OARnxyygEgorBgEEAZdVAQUBAQdANCBJmJchzCLLpCje17NJp4xn5gKXMLQ5
eEonhmkAdUMDAQgHiHgEGBYKACAWIQSfU0FojS+QJKFVQcngKUnQ93aeLAUCZ8cs
oAIbDAAKCRDgKUnQ93aeLC07AP4jKmcbtyZGhV2efFbmempjylr231bG/3s5xust
+csUTwEAwu1QQPRX/OYpecVo0xIDiynnk4jeJDsRyOuFMkYpTw0=
=t/YD
-----END PGP PUBLIC KEY BLOCK-----

@ -1,4 +1,4 @@
#!/usr/bin/env bash #/usr/bin/env bash
# Purpose: manage .sops.yaml based on gpg keys in the same dir _and_ verify correct configuration # Purpose: manage .sops.yaml based on gpg keys in the same dir _and_ verify correct configuration
set -euo pipefail set -euo pipefail
@ -10,7 +10,7 @@ function fn_gpg_extract_fpr(){
# uid ... <...@mehrwerk.net> # uid ... <...@mehrwerk.net>
# uid ... <...@netgo.de> # uid ... <...@netgo.de>
# fancy gpg src: https://unix.stackexchange.com/a/731872 # fancy gpg src: https://unix.stackexchange.com/a/731872
fpr="$(gpg --show-keys --list-options show-only-fpr-mbox "$(readlink -f "${gpgkeyfile}")" | grep '@netgo.de' | awk "{print \$1}")" fpr="$(gpg --show-keys --list-options show-only-fpr-mbox "${gpgkeyfile}" | grep '@netgo.de' | awk "{print \$1}")"
echo "${fpr}" echo "${fpr}"
} }
@ -22,7 +22,7 @@ function fn_gpg_extract_uid(){
# uid ... <...@mehrwerk.net> # uid ... <...@mehrwerk.net>
# uid ... <...@netgo.de> # uid ... <...@netgo.de>
# fancy gpg src: https://unix.stackexchange.com/a/731872 # fancy gpg src: https://unix.stackexchange.com/a/731872
uid="$(gpg --show-keys --with-colons "$(readlink -f "${gpgkeyfile}")" | awk -F':' '$1=="uid" {print $10}' | grep '@netgo.de')" uid="$(gpg --show-keys --with-colons "${gpgkeyfile}" | awk -F':' '$1=="uid" {print $10}' | grep '@netgo.de')"
echo "${uid}" echo "${uid}"
} }
@ -113,8 +113,10 @@ fn_sops_updatekeys_and_verify(){
# "update the keys of SOPS files using the config file" # "update the keys of SOPS files using the config file"
>&2 echo "# RUN: sops updatekeys ${sops_enc_file}" >&2 echo "# RUN: sops updatekeys ${sops_enc_file}"
# HAAAACK: loop through all passed-in files, ignore any errors, always say "yes" -> rely on git diff to verify! sops updatekeys "${sops_enc_file}"
sops updatekeys -y "${sops_enc_file}" || echo "SKIPPING"
# verify: dump secrets, GPG_TTY src: https://www.varokas.com/secrets-in-code-with-mozilla-sops/
GPG_TTY=$(tty) sops -d "${sops_enc_file}"
} }
function main(){ function main(){
@ -124,17 +126,18 @@ function main(){
fi fi
# "anchor" for actions relevant to this script # "anchor" for actions relevant to this script
repo_root="$(realpath $(dirname "${BASH_SOURCE[0]}")/..)" repo_root="$(realpath $(dirname "${BASH_SOURCE[0]}")/..)"
# OPTIONS: ARGPARSING and VALIDATION # OPTIONS: ARGPARSING and VALIDATION
# assume location of script as running directly from repo with keys (instead of as a standalone packaged tool) # assume location of script as running directly from repo with keys (instead of as a standalone packaged tool)
keyfiles_dir="${repo_root}" keyfiles_dir="${repo_root}"
# dir containing .sops.yaml # assume location of secrets config file in pwd
sops_config_dir="" sops_config_dir=""
# path to group definitions # path to group definitions
groups_def_dir="${repo_root}/groups" groups_def_dir="${repo_root}/groups"
# optional:
opt_list_groups=0 opt_list_groups=0
# optional: specify "groups"
groups_list=() groups_list=()
opt_find_secrets=0 # optional: secrets files to be updated
secrets_file_list=() secrets_file_list=()
while (( $# >= 1 ));do while (( $# >= 1 ));do
@ -150,8 +153,6 @@ function main(){
-lg|--list_groups) opt_list_groups=1 ;; -lg|--list_groups) opt_list_groups=1 ;;
# ARGS: [optional] [list] specify "groups" which correspond to e.g. job groups, projects, etc # ARGS: [optional] [list] specify "groups" which correspond to e.g. job groups, projects, etc
-g|--group) groups_list+=( "${2}" ); shift ;; -g|--group) groups_list+=( "${2}" ); shift ;;
# ARGS: [optional] update all "secrets.yaml" files found below .sops.yaml location
-f|--find_secrets) opt_find_secrets=1;;
# ARGS: [optional] [list] specify files containing sops-encrypted secrets # ARGS: [optional] [list] specify files containing sops-encrypted secrets
-s|--secrets_file|-f|--file) secrets_file_list+=( "${2}" ); shift ;; -s|--secrets_file|-f|--file) secrets_file_list+=( "${2}" ); shift ;;
# ARGS: [optional] [list] specify files containing sops-encrypted secrets # ARGS: [optional] [list] specify files containing sops-encrypted secrets
@ -185,22 +186,12 @@ function main(){
# locate appropriate sops config if default assumption not found # locate appropriate sops config if default assumption not found
# dev note: '2> /dev/null' to disable debug output # dev note: '2> /dev/null' to disable debug output
sops_config="$(fn_sops_locate_config_in_git_repo 2> /dev/null)" sops_config="$(fn_sops_locate_config_in_git_repo 2> /dev/null)"
sops_config_dir="$(dirname "${sops_config}")"
fi fi
# Paths to Secrets Files
if [[ "${#secrets_file_list[@]}" != "0" ]]; then if [[ "${#secrets_file_list[@]}" != "0" ]]; then
for secrets_file in "${secrets_file_list[@]}"; do for secrets_file in "${secrets_file_list[@]}"; do
test -e "${secrets_file}" || (echo "E: could not locate file with secrets, tried: ${secrets_file}" && exit 1) test -e "${secrets_file}" || (echo "E: could not locate file with secrets, tried: ${secrets_file}" && exit 1)
done done
fi fi
if [[ "${opt_find_secrets}" -eq 1 ]]; then
# DEV NOTE: this is far too complicated
# loop through find, src: https://stackoverflow.com/questions/9612090/how-to-loop-through-file-names-returned-by-find
while IFS= read -r -d $'\0'; do
secrets_file_list+=("${REPLY}")
done < <( find "${sops_config_dir}" -name secrets.yaml -print0 )
fi
# /VALIDATE INPUTS # /VALIDATE INPUTS
# /OPTIONS: ARGPARSING and VALIDATION # /OPTIONS: ARGPARSING and VALIDATION

@ -1,14 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEZ9LiixYJKwYBBAHaRw8BAQdAo9TZ7FbNytrM9Odrm1fg4SV3AurPr6B4Z6wT
bYmc0Iu0NUNocmlzdG9zIEFkYWxpcyAoR1BHIEtleXMpIDxjaHJpc3Rvcy5hZGFs
aXNAbmV0Z28uZGU+iJMEExYKADsWIQT38yjw5JWOTHhZd+I7iqC6q62v5AUCZ9Li
iwIbAwULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRA7iqC6q62v5JTTAP0R
ME/a4n1TkA7QtUc06KEhdYPld8T3udBusk67jWLGMQEA/niJGzcmoSbNDGvC6hLi
fw9ZlohBFItF8Dur/mLPWgS4OARn0uKLEgorBgEEAZdVAQUBAQdArq2uimWJutt0
DsCEPAwlirHZI476ks1eNr8n3RTzbhEDAQgHiHgEGBYKACAWIQT38yjw5JWOTHhZ
d+I7iqC6q62v5AUCZ9LiiwIbDAAKCRA7iqC6q62v5KgjAP9Q/dfkGy0/9cKJsmPD
emKfbZbQ8FrNX70+oYMGxjV3WwEAyol9yD1pJSt1g3R9/oHo7/KW5ZsXbVIx/Vqc
uskiLgA=
=sg0j
-----END PGP PUBLIC KEY BLOCK-----

@ -1,13 +1,52 @@
-----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaEBF9xYJKwYBBAHaRw8BAQdA6syYUNOSScarxQGom8QcmY/yaK+OWhAQ68IY mQINBGJWv54BEADYY6n9rrteddJ99h3erlB3pgJV+ixR7Qb/sCRFiMGcEV9PLiZr
dj7KxzW0JENsYXVzIFBhZXRvdyA8Y2xhdXMucGFldG93QG5ldGdvLmRlPoiQBBMW 8vkRlrRORaIxFXa/xnYrQ12oPbXjWDajp389W7pRHTgw3gCKRVk8eb1rwT9ZbE/U
CgA4FiEEZZ/e1D3hVft3KjObNDzxIYpmTTEFAmhARfcCGwMFCwkIBwIGFQoJCAsC trAL7ug7C+hPPkqiByHBbJ9mSfU1SrnLCAO8QFP0SXn6BVB6qSpouuorgZKwwjMm
BBYCAwECHgECF4AACgkQNDzxIYpmTTHvVQEAi2IabzcpNK6ZBmsP2NL52oXhY4iM Bef5Qgb9RfcrCoGQV/ks8za/aPUOuqxhyEm6bmys0jy5UhkYEvvT/RIZFD/mpv/P
bzDEtJul0E/hcvEA/3cPIZ9lIB8WeA6SK8nAgV5AlxGXsCdHsv55A2F/vDEIuDgE hSOZNhQ2Job1PQgaIsM5KH7HpxOjZSjaPeA/buhyFTKCkAd474BHUWIAVxD65Kx3
aEBF9xIKKwYBBAGXVQEFAQEHQNGjADOks0AjX4qlQ3xgSOP0RBIELjqYBH/Ihiwf n8pWIgbdd6kPgEOCycVx1SyNfdwz7WRINKZlTc3lJYLFy72xzhs0w4W85ssxB8mQ
eQ9ZAwEIB4h4BBgWCgAgFiEEZZ/e1D3hVft3KjObNDzxIYpmTTEFAmhARfcCGwwA jwjoauMTGV+dqgsnqBIbDpYE16avUvS988vLicXhZb+dz8jmwxqBojwxGi/IvhLv
CgkQNDzxIYpmTTFyOQEArR4vKYPP9cD6Plsn0pK4hONApCEHRKGC0d3JtUkZvJAB 8x+2RD4ZZt3BpEnGI7JRN4FBpAK/kFGWbLKFgJZa+7cGfmC40zfTDqNdegukjtt0
ALaWq4tjsPm4wF6D9RMN9tCuPPVtt/FbGzVBlm3OP2sL puz5X64kJMGQ8ZucmG5x8fgW9qZv7bDZUXVDWIz2QynUxmDuGjzXyTIYlp9DJyQL
=PsTc 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
1vC99G5EtuXL1U37Qp8Kug==
=vm8K
-----END PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK-----

@ -1,51 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=++7P
-----END PGP PUBLIC KEY BLOCK-----

@ -1,14 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEZ9Lk+hYJKwYBBAHaRw8BAQdAAImByKSkf+XTHj9o6BareP+aIhkTz1KV+4ZI
AsSgv/u0OURhcnlsIFNhdWVyLU5ldW1hbm4gKFNPUFMpIDxkYXJ5bC5zYXVlci1u
ZXVtYW5uQG5ldGdvLmRlPoiTBBMWCgA7FiEEAUMBn2JGntWmoBbCGcp2TTdZD58F
AmfS5PoCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQGcp2TTdZD5/T
6gEAkVq5UnUPs6poLj2Tdqzlj13wToRpP3WFmDaa4mB9uM0A/1Yfde+hFFKIWPFR
hnfXeBH7HLHLC6EC7U58B8P8/aELuDgEZ9Lk+hIKKwYBBAGXVQEFAQEHQJZ2QRYW
XQ6N/wtLePHyafLb+D4wW4Di5SwoO2P/RwVZAwEIB4h4BBgWCgAgFiEEAUMBn2JG
ntWmoBbCGcp2TTdZD58FAmfS5PoCGwwACgkQGcp2TTdZD5939AD/U1HH5hOyo5n7
660ZFL5PoZpm9yxPwAUPa+Mp63QR/IQA/RNlBVGaCRlgWsPa7COo6n7yc0XfB6bi
on9JkIJgK0oB
=PxAk
-----END PGP PUBLIC KEY BLOCK-----

@ -0,0 +1 @@
../../lee.watson@netgo.de.gpg.pub

@ -0,0 +1 @@
../../smardigo_automation_poc_workload01.gpg.pub

@ -0,0 +1 @@
../../smardigo_automation_qa.gpg.pub

@ -0,0 +1 @@
../../smardigo_automation_qanso.gpg.pub

@ -0,0 +1 @@
../../smardigo_automation_rancher_poc.gpg.pub

@ -0,0 +1 @@
../../smardigo_automation_sspdev.gpg.pub

@ -1 +0,0 @@
../../bas.cancrinus@netgo.de.gpg.pub

@ -1 +0,0 @@
../../christos.adalis@netgo.de.gpg.pub

@ -1 +0,0 @@
../../daryl.sauer-neumann@netgo.de.gpg.pub

@ -0,0 +1 @@
../../kevin.bauske@netgo.de.gpg.pub

@ -0,0 +1 @@
../../lee.watson@netgo.de.gpg.pub

@ -1,15 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaWUQSBYJKwYBBAHaRw8BAQdAGT3vXIrTITynXkjRlamZJ1jLs2BffQVz3Iwj
SZpFq3W0LXN0b2VsdGluZy1hZHAtcHJvZCA8TlNPLVRlYW0tRGV2T3BzQG5ldGdv
LmRlPoiTBBMWCgA7FiEE6ETrYVE2JueMSyYw4oFhS7o3stEFAmllEEgCGwMFCwkI
BwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQ4oFhS7o3stE2ogEAqUcUv6AEHqvL
Xy0PFAm/3wAdXsenNXvoqo4VYb2OCHMBAM6ArZXqwh69C0eXqyuVtsOlG19Cqeby
z2uNWy0IdPQPuDgEaWUQSBIKKwYBBAGXVQEFAQEHQGiJ5ojUcda4EI6pNnQECBZB
O0CYeGZdT2mw2KpjjkwUAwEIB4h4BBgWCgAgFiEE6ETrYVE2JueMSyYw4oFhS7o3
stEFAmllEEgCGwwACgkQ4oFhS7o3stGRYwD/X69urpUy3GpaiCLRa62MAXbNacbZ
wokxqcpUc9ygHn8A/1zSkEyzp3dm86wv6oY70FfR4K1dfj73ltD39l7UtD8M
=6EQP
-----END PGP PUBLIC KEY BLOCK-----

@ -1,14 +1,41 @@
-----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaPiOmBYJKwYBBAHaRw8BAQdAgwGFW1hsK88TTcY4Iw8GZSVAknR0iRKnOZL3 mQGNBGUf5j4BDADSd88HFIDGQseOiuJ2TXkqGZE//VDJFcXLQrbwTQaZXSLPkVc9
J+cp2fu0KUphbiBKYW50emVuIChzb3BzKSA8amFuLmphbnR6ZW5AbmV0Z28uZGU+ mZeTKbaEup4H0TYIR6cIUGEuBKRNXvxFJeriurC6jiy/ThNwW2tfRdSGxjyfjRro
iJkEExYKAEEWIQS5LdybkIvzkXdY0ihEbFHgSa44ygUCaPiOmAIbAwUJA8JnAAUL xcUWIogg24dOikoCb7QS3lCt/cAU4qEwmjFKX5Oqjg/ZdN+ODUlxl2pbLeDez93r
CQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRBEbFHgSa44yphwAQDIKCvEYJ2x X/eBEFLFxPIZIRn36GNL1M6b/nSNkhMUfV/Z+O8NUP3NoU/bNsiFyJy07zlPLap6
gd8QClL31SGpD2/5fJ4x/9cXa2pwmcPo4AD/dWYsVwX6iisiE46U2IIsL7ojDa2J xBRyBnn7zCAnuMGtvUcPVr9IpSc1AOHmMVBvhV8UpYhAX3+Mz+0WuaFRABMmkXOm
IYJPrb/HrL8w2Ay4OARo+I6YEgorBgEEAZdVAQUBAQdA9qvcdBmc2TvcReuAu3YA XoO++6jVYwXh6b4ugsF3OtAJ+NYnbF4jWEqiGjVNbGEX1ikRMxlgFwM28VMNXc04
ePpddYljq1L7ihWZDUWrtRMDAQgHiH4EGBYKACYWIQS5LdybkIvzkXdY0ihEbFHg FduQAArBRmsC5IFL6OoO9Ybx6y8eJ7/NVo/3ry6adnCUizzQTwSFn/iguvFs8xKG
Sa44ygUCaPiOmAIbDAUJA8JnAAAKCRBEbFHgSa44yi14AQDPHLsJLjE7csjNPVGi NBYHlKZLAuqvYYJdLE9Jvs8Hy/ERGNwphl741CEcWHWrLVRljIh2b343uAGIRdoT
9XUcfq54ScEc698xyuk8LFMSKAEA0dzeY7tnfGNr7m2jq3odopRmMo99Xaw5h4YA otCGA4wJMK4ePZcAEQEAAbQiSmFuIEphbnR6ZW4gPGphbi5qYW50emVuQG5ldGdv
cQD/yQo= LmRlPokB1wQTAQgAQRYhBLpjKJSNUBdfGWqrURHzJGA9Et1WBQJlH+Y+AhsDBQkD
=rCLM wmcABQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAAAoJEBHzJGA9Et1WL0UL/1si
cI0FMbC+H/zF2WRqNz4LcjV8SG9oTzwdeMV1CWdL1DTkbrWxHlIPVlwYmegAlzo9
9lOJEKcNUwhfyui43cLVBMmL7LULPwCOu2r+DGtQhbqI6tjKz5gNYLiBsc718M8Y
V/V//EcWTtG2uJFQ/Axq79r/HZXZ0/J8P9UXN5aVJXkhhJxZZn8QtcUblnKAyykz
QFac3m0b3SayPRSEVfDszOzrc2bFZiwav6dVBIyBpf9qrCChEAIpzqLzf7pxvWz9
VO7MzQaYYX3g4clkId1sCGPhYQuzdyCSVVyLFeGtFFnk/JeA7Bg3xaKC/aYSpaSZ
qFaXhDv2+pQ9MzYnSZ+i8IhBi7k3lLJbzDWTV0SJLvxoUIpyNL9ezwV7xweWRjQV
9XLCearZPoWxaAOqC8+YOG6FYtIW5pbVQ4j59FZz0UexD+kZHFV5TrZX0EYLkzrh
n/ZXEsMhCtok6eqyNe9DgRYnIH0QMHOSZf807D35R/zUzBwnOOtnmfxRwtksrbkB
jQRlH+Y+AQwArPtb+qWExEMBtUcsfq0P6+BDaJHcdP+PPb3Oa8plmDjRjTf7Exsm
KwQTGRZbYRlNFfh8072TSiu5rhNLyCfY0a79DPk2r1r3i4czx2x+m2m7ao0ZsOzE
tkdejlqxi9TIjWhxdSJHHcizeh1tOJU7TZhG04CW8bRtS02L4hCO7JKq+KTZm4Qk
IE0xaO0qDxnpmosK1jQmiURFHprOl2ozJ9HqeUjfSi93baxcVzrbbBbd+OM7JU4d
+cokhvTQdPPRhaUz5i6wJm2mFkjwr308SgzLsohF7Q0tP+wY7rsSeOscxo8sRuXc
DRpx1aJ6gLZmB2bPjqR0p9kpJy448x4KOBBXkKVFNzvRuG4oZ8SPO1DnP9CroHoO
0l+4NWCrHj7EWaj7mgLyNbJjkKULjwpjTsg3nWJj8QrISQa7ejZxVU96Kyk5WGEK
gvZz3/Eocrn+D2vFd0GOEN1qSxEaBLkynsTLaj4+7cm3V/QUZyrIuUjtYyhL5U/+
HeiZSaM5Mk99ABEBAAGJAbwEGAEIACYWIQS6YyiUjVAXXxlqq1ER8yRgPRLdVgUC
ZR/mPgIbDAUJA8JnAAAKCRAR8yRgPRLdVmnxC/9IntQx0YGcLlIXNEIsTE6Q99Gz
TWuTGq5dZCKxuRoT1V5Tmj9zJ7hS3qS+jK+gQKucecMWHogyHJmJjr9OY5A2E3yg
fL4qr1ZrN4i5ozTKd6r19CkU8YupjexKQ4pwSwaj6ovtjr42XmMXTyZhRx02XNvB
cj6Yavr/+586+MKINSfTEFoat74cyUM/SnORkQB+Z+XEPVnqN+gk5nbq1v72mdWV
ooEKvlXu4samcaJaGSYHGH2WXWwsJ0mnA00AhshwC9i+6RCcJTieHIngtTfQRQ+1
joR8eMvLQTj09Nt5PodcjfQ2jxBKtnQTcyssV1V/Jf/tsAa1pP1unTDHfOOphAXf
MZyhszMs7816JcAwtulz+LAq3QO2Ogp4oVE0dKk7vyIJ0hCtRtDDl6t94DjDSzUl
U91KMpm3KZiXSTuBEVuZuU/GCKmQ5OyVKWMTzLlBHvp96oj8+WsJzTkuJwBHWFmZ
uiK1kd08gp9i56uy5tkQtYJGpcsRNJNSnyAbEcM=
=4tfB
-----END PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK-----

@ -1,13 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaVu6PBYJKwYBBAHaRw8BAQdAbz/r57Lm/FBp1dm5BArSxWkBw8eOd5LAEgrz
UF09DFu0Hkpvc2UgTW9yYSA8am9zZS5tb3JhQG5ldGdvLmRlPoiTBBMWCgA7FiEE
PioaTZqHkx9OqHfB3V9C1RR7X08FAmlbujwCGwMFCwkIBwICIgIGFQoJCAsCBBYC
AwECHgcCF4AACgkQ3V9C1RR7X0+GiQEAlsxJIg5oohIWZow4q92KpU9CpzQBeehe
U4fYhF5SCyMA/2MsjnAf/Vl4LJ3uPrT2TIWWK+GmYMJCkUAXieUUZWEKuDgEaVu6
PBIKKwYBBAGXVQEFAQEHQCvMecH8iY4hOktm6KR9iuBfqOxxbhbX8onTHWBo0PgC
AwEIB4h4BBgWCgAgFiEEPioaTZqHkx9OqHfB3V9C1RR7X08FAmlbujwCGwwACgkQ
3V9C1RR7X08GxwD/TfvxybcTthZKKsBDXkAk1DtWeGtylILM2o97G1+b3TYBAPUq
lIaCk1ONGHQn8OMYFsDz47s3IuWGz6ug7E3RD+sI
=+/5q
-----END PGP PUBLIC KEY BLOCK-----

@ -1,40 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=nsrr
-----END PGP PUBLIC KEY BLOCK-----

@ -1,14 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEabqreRYJKwYBBAHaRw8BAQdA7g95BK26aTSQrEt+tIU5zca255cFpcNnX247
LUtsgni0KFJvYmVydCBLZXJzdGVuIDxyb2JlcnQua2Vyc3RlbkBuZXRnby5kZT6I
rwQTFgoAVxYhBDFUmDi5xHQMO5dD4a8dHwwb/7FxBQJpuqt5GxSAAAAAAAQADm1h
bnUyLDIuNSsxLjEyLDIsMQIbAwULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAK
CRCvHR8MG/+xcfiaAQCC2SJIzbwax8j1YaIbFrzHnEpAJwk9T1KUY8YUZ6cB6wEA
2uuKzW7+Jci3gRyZd0955nZaMfcGiNT8Bm/Tbpv51Aa4OARpuqt5EgorBgEEAZdV
AQUBAQdASZ+QQhYV6o99vYwbRgMK9DuarCv0T+zvuBUacHkwJ3YDAQgHiJQEGBYK
ADwWIQQxVJg4ucR0DDuXQ+GvHR8MG/+xcQUCabqreRsUgAAAAAAEAA5tYW51Miwy
LjUrMS4xMiwyLDECGwwACgkQrx0fDBv/sXE1CgD8CCYs7PTvMVLeuL2vW5d3UXDA
mcOfLsln58mlWbN/04kBAMtAhlusXias4q/TlCMNkM4jfxcWq2eGu3MJV3NuHO0O
=+n3d
-----END PGP PUBLIC KEY BLOCK-----

@ -1,14 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEZ/fhOxYJKwYBBAHaRw8BAQdAu8VIhoCmqQSnlln72LVE2sW5cE5GS84pxwyh
HMbdeUm0Pm5zby1hZHAtbWdtdCAobnNvLWFkcC1tZ210IGdwZyBrZXkpIDxOU08t
VGVhbS1EZXZPcHNAbmV0Z28uZGU+iJMEExYKADsWIQSStkvV+zaOVwy5b4nKfQzD
RUpClAUCZ/fhOwIbAwULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRDKfQzD
RUpClLG8AQCv3LTFvw+SzZWa0sLnvahtSR8wIpNw52+qelWDwaMYmwD+N7KhqarI
V6+TWJu9uxpc+RWk/vjlTGDchPeDoCs+xQ24OARn9+E7EgorBgEEAZdVAQUBAQdA
g8dAmTCmmnYBBqPlZDS+FMUpWMhAvCVUfmYai+ZHDQoDAQgHiHgEGBYKACAWIQSS
tkvV+zaOVwy5b4nKfQzDRUpClAUCZ/fhOwIbDAAKCRDKfQzDRUpClDChAQDI0wF7
PGDmqbGOXVKv0uPbTTLhu7oXiBq//blhkhCrjwD8Du/aEdCYoz9m6tobA01sKU+4
Gt1e4njTYlntGDL2kwo=
=hFQO
-----END PGP PUBLIC KEY BLOCK-----

@ -1,41 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
jFFod9cNJ83PKqPUAJJa03e6zyhiKg==
=gk4m
-----END PGP PUBLIC KEY BLOCK-----

@ -1,14 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaJMgXRYJKwYBBAHaRw8BAQdAE6GbHO8yvEW3377zNntvGCj5lJJ1l0h5Bk/6
+cKgWJ20RG5zby1hZHAtc3RhZ2luZyAobnNvLWFkcC1zdGFnaW5nIGdwZyBrZXkp
IDxOU08tVGVhbS1EZXZPcHNAbmV0Z28uZGU+iJMEExYKADsWIQTJA8BGoGPfv49B
xldrJs9JaBKwCgUCaJMgXQIbAwULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAK
CRBrJs9JaBKwCvYpAQDWvMMhe+v3nIttUfEpln+8YQ8KSezLiCpJLQB4o5zt5QD9
Eo/ZIFriX11Y5yxnEjoFkH1LXEj66oGpMTjTojLpaA24OARokyBdEgorBgEEAZdV
AQUBAQdAuvufjrlZjxi5bpQ4MrR/Mk6qxPqU8MFQUc2Df+/alUwDAQgHiHgEGBYK
ACAWIQTJA8BGoGPfv49BxldrJs9JaBKwCgUCaJMgXQIbDAAKCRBrJs9JaBKwCloU
AP4vOcXLiHQ2nkbSm6CeP//0GX0WpsxMniOlqVxkZM5J+gEAu+IulrGA6fNrKNiv
cHh/X5eSsexomJXmxZ8dUOOhFw4=
=sfF9
-----END PGP PUBLIC KEY BLOCK-----

@ -1,13 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaPtbMxYJKwYBBAHaRw8BAQdArKya+q6E/VlCAURWAj3Ggnia56yVrWSE7Jdp
cefGole0HW5zby1hZHAtdGF4IDxkZXZvcHNAbmV0Z28uZGU+iJMEExYKADsWIQSR
K9ShLWb5kxw/39GTy+xZ+yN5eQUCaPtbMwIbAwULCQgHAgIiAgYVCgkICwIEFgID
AQIeBwIXgAAKCRCTy+xZ+yN5eS4hAPsG/JbybnexMPfb7gsIiqSheeTvrGQnU1bO
2Ouz6e0FcwEAgQKoO2dbkM3/webS1F7zX0p0o1XZMW1ecHesTvQF6AW4OARo+1sz
EgorBgEEAZdVAQUBAQdA70MTcqVm07fe5cZGkR3evSc0yVRM/7WlVmS3N1JRER0D
AQgHiHgEGBYKACAWIQSRK9ShLWb5kxw/39GTy+xZ+yN5eQUCaPtbMwIbDAAKCRCT
y+xZ+yN5eRveAP49bhetFkuylYLcgEPKIWZom/0clG96YVUIvsCi42SeBQEA4CrN
JEoxwAR/oN1gcCbN2g2fqmirO1PbEQ4yPTLYVwk=
=yjPi
-----END PGP PUBLIC KEY BLOCK-----

@ -1,13 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaWUQSBYJKwYBBAHaRw8BAQdAGT3vXIrTITynXkjRlamZJ1jLs2BffQVz3Iwj
SZpFq3W0LXN0b2VsdGluZy1hZHAtcHJvZCA8TlNPLVRlYW0tRGV2T3BzQG5ldGdv
LmRlPoiTBBMWCgA7FiEE6ETrYVE2JueMSyYw4oFhS7o3stEFAmllEEgCGwMFCwkI
BwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQ4oFhS7o3stE2ogEAqUcUv6AEHqvL
Xy0PFAm/3wAdXsenNXvoqo4VYb2OCHMBAM6ArZXqwh69C0eXqyuVtsOlG19Cqeby
z2uNWy0IdPQPuDgEaWUQSBIKKwYBBAGXVQEFAQEHQGiJ5ojUcda4EI6pNnQECBZB
O0CYeGZdT2mw2KpjjkwUAwEIB4h4BBgWCgAgFiEE6ETrYVE2JueMSyYw4oFhS7o3
stEFAmllEEgCGwwACgkQ4oFhS7o3stGRYwD/X69urpUy3GpaiCLRa62MAXbNacbZ
wokxqcpUc9ygHn8A/1zSkEyzp3dm86wv6oY70FfR4K1dfj73ltD39l7UtD8M
=6EQP
-----END PGP PUBLIC KEY BLOCK-----

@ -1,41 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
4hXDgcudtCquYStf
=oxRT
-----END PGP PUBLIC KEY BLOCK-----

@ -1,37 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
WrZm
=4hZt
-----END PGP PUBLIC KEY BLOCK-----

@ -1,42 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
omEOA9Ja52BBiAbwxNXX5zJr5wq9xAc=
=vKTw
-----END PGP PUBLIC KEY BLOCK-----

@ -1,53 +1,52 @@
-----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK-----
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 /chkgw==
qOP6EPU498zUpkaLaxyT =57sy
=Dc8a
-----END PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK-----

@ -1,41 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
JhujuU9eIqCXYO4i3GW2OMo=
=cYe4
-----END PGP PUBLIC KEY BLOCK-----

@ -2,64 +2,66 @@
# CAVEAT: DO NOT USE THIS FILE AS-IS in another project; copy it and remove the unauthorised users # CAVEAT: DO NOT USE THIS FILE AS-IS in another project; copy it and remove the unauthorised users
# Fingerprint | User Type | User ID # Fingerprint | User Type | User ID
# 533A89DD49FBCDA2BF014A936C962DD77704154A | autom | build-infra <NSO-Team-DevOps@netgo.de> # 533A89DD49FBCDA2BF014A936C962DD77704154A | autom | build-infra <NSO-Team-DevOps@netgo.de>
# EFBBBB131CF1D863005C18868C8C09CA950B1DFF | autom | smardigo automation DEMOMPMX (smardigo automation DEMOMPMX) <NSO-Team-DevOps@netgo.de>
# A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439 | autom | smardigo automation DEV (smardigo automation DEV) <NSO-Team-DevOps@netgo.de> # A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439 | autom | smardigo automation DEV (smardigo automation DEV) <NSO-Team-DevOps@netgo.de>
# C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8 | autom | devnso adp (devnso-adp gpg key) <NSO-Team-DevOps@netgo.de> # C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8 | autom | devnso adp (devnso-adp gpg key) <NSO-Team-DevOps@netgo.de>
# 0E8955A79FF4687A3ACF78E50B5E444C75867E58 | autom | smardigo automation DEVNSO (smardigo automation DEVNSO) <NSO-Team-DevOps@netgo.de> # 0E8955A79FF4687A3ACF78E50B5E444C75867E58 | autom | smardigo automation DEVNSO (smardigo automation DEVNSO) <NSO-Team-DevOps@netgo.de>
# C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8 | autom | devnso adp (devnso-adp gpg key) <NSO-Team-DevOps@netgo.de> # 98235A419EA3586BFF4E3FC692D4A5202A0D9519 | autom | poc-workload01 (poc-workload01 gpg key for sops) <NSO-Team-DevOps@netgo.de>
# C903C046A063DFBF8F41C6576B26CF496812B00A | autom | nso-adp-staging (nso-adp-staging gpg key) <NSO-Team-DevOps@netgo.de>
# E5B4FE1E0209DFFE320D2A2E47087747D89B72EC | autom | smardigo automation PRODNSO (smardigo automation PRODNSO) <NSO-Team-DevOps@netgo.de> # E5B4FE1E0209DFFE320D2A2E47087747D89B72EC | autom | smardigo automation PRODNSO (smardigo automation PRODNSO) <NSO-Team-DevOps@netgo.de>
# 890B2EB48F343D4C6DB9DA0916826F30002D3C1D | autom | smardigo automation QA (smardigo automation QA) <NSO-Team-DevOps@netgo.de>
# 4069413B74A3AB13E10DF5FD3EA8F0D0FB1CAF36 | autom | smardigo automation QANSO (smardigo automation QANSO) <NSO-Team-DevOps@netgo.de>
# 42AA7F6BF795490C1A522C730ED842BE1216E0C1 | autom | rancher-poc <NSO-Team-DevOps@netgo.de>
# B4BAA59056DC362809388F3F2119881095EA7DED | autom | sot production (sot production gpg key) <NSO-Team-DevOps@netgo.de> # B4BAA59056DC362809388F3F2119881095EA7DED | autom | sot production (sot production gpg key) <NSO-Team-DevOps@netgo.de>
# DF977A1F65999F4CDD721A27516F64D5932B8AD9 | autom | sot integration (sot integration) <NSO-Team-DevOps@netgo.de> # DF977A1F65999F4CDD721A27516F64D5932B8AD9 | autom | sot integration (sot integration) <NSO-Team-DevOps@netgo.de>
# AC9B0DB590F4AE2017C2AD836113AEB66C510C3F | autom | ssp-prod <NSO-Team-DevOps@netgo.de> # AC9B0DB590F4AE2017C2AD836113AEB66C510C3F | autom | ssp-prod <NSO-Team-DevOps@netgo.de>
# 43DE8A01ABD706717C36018C48C47C125C022F29 | human | andreas.rother <andreas.rother@netgo.de> # 5623CCAD4242CC3E0225A62986AF09C173781578 | autom | smardigo automation SSPDEV <NSO-Team-DevOps@netgo.de>
# 1EBAE111F6EAE0CF136358E8625C5A3B8DA21485 | human | Annika Biermann <annika.biermann@netgo.de> # 1EBAE111F6EAE0CF136358E8625C5A3B8DA21485 | human | Annika Biermann <annika.biermann@netgo.de>
# 9F5341688D2F9024A15541C9E02949D0F7769E2C | human | Bas Cancrinus <bas.cancrinus@netgo.de> # 17B8FDF68AC123EB666934B17D0DF6EC048A5D77 | human | Claus Paetow (Firmenadresse) <claus.paetow@netgo.de>
# F7F328F0E4958E4C785977E23B8AA0BAABADAFE4 | human | Christos Adalis (GPG Keys) <christos.adalis@netgo.de> # 03ADBCD31737EB474A4BD235CE615FAF927A2054 | human | Esther Fuhrmann (GPG Key for SOPS) <esther.fuhrmann@netgo.de>
# 659FDED43DE155FB772A339B343CF1218A664D31 | human | Claus Paetow <claus.paetow@netgo.de> # 04ECA5DBF73E98EBCC1FF0B018F2D15CC56BE487 | human | Hans-Peter Wissenbach <ext.hans-peter.wissenbach@netgo.de>
# 93593B8B0B7B88EA2DCC99F9388B6A662C356822 | human | Daniel Risse <daniel.risse@netgo.de>
# 0143019F62469ED5A6A016C219CA764D37590F9F | human | Daryl Sauer-Neumann (SOPS) <daryl.sauer-neumann@netgo.de>
# 9E561083EACDE14694C73A323A2F6C1D153D753F | human | Frederik Marticke <frederik.marticke@netgo.de> # 9E561083EACDE14694C73A323A2F6C1D153D753F | human | Frederik Marticke <frederik.marticke@netgo.de>
# 9F08DA9D42379AFE6610E9E615CCEC6801DBA02E | human | Hoan To (Hoan To GPG Key) <hoan.to@netgo.de> # 9F08DA9D42379AFE6610E9E615CCEC6801DBA02E | human | Hoan To (Hoan To GPG Key) <hoan.to@netgo.de>
# B92DDC9B908BF3917758D228446C51E049AE38CA | human | Jan Jantzen (sops) <jan.jantzen@netgo.de> # BA6328948D50175F196AAB5111F324603D12DD56 | human | Jan Jantzen <jan.jantzen@netgo.de>
# B643A5D780A01F24E95AA100DE6F8E2C149C3748 | human | johannes.wicovsky <johannes.wicovsky@netgo.de> # B643A5D780A01F24E95AA100DE6F8E2C149C3748 | human | johannes.wicovsky <johannes.wicovsky@netgo.de>
# C19A7D807525CE24443CA9A49372E896B41FE700 | human | Kevin Bauske <kevin.bauske@netgo.de> # C19A7D807525CE24443CA9A49372E896B41FE700 | human | Kevin Bauske <kevin.bauske@netgo.de>
# 0DB51A7E90AC6418B7DB83724D38970874850C33 | human | Kleanthis Damianidis <kleanthis.damianidis@netgo.de> # 0DB51A7E90AC6418B7DB83724D38970874850C33 | human | Kleanthis Damianidis <kleanthis.damianidis@netgo.de>
# BF3D5CEA36DB58AAE1063D0BB341078652D87924 | human | Lee Watson (dies ist mein schluessel, es gibt viele ähnliche, aber diese ist meins) <lee.watson@netgo.de>
# 73C2C9954D1BC94DC6682525D2FA233B52AEC75C | human | Michael Haehnel (NSO DevOps) <michael.haehnel@netgo.de> # 73C2C9954D1BC94DC6682525D2FA233B52AEC75C | human | Michael Haehnel (NSO DevOps) <michael.haehnel@netgo.de>
# 3511D1A5B7B2AC97BAE8AF3EE758168C000375CE | human | Thi Nguyen <thi.nguyen@netgo.de> # 13E169CF5C35EF164628764AAA2EECBDE0B38CF7 | human | Philipp Eichhorn <philipp.eichhorn@netgo.de>
# 13D7771BDE5241293F3EDA442AB3335ECC93DDDC | human | Sebastian Schröder <sebastian.schroeder@netgo.de>
# 0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A | human | Thomas Steube <thomas.steube@netgo.de> # 0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A | human | Thomas Steube <thomas.steube@netgo.de>
# BB333E772B60EC8A29E8DE641D6B8CC68E09BCA5 | human | Tobias Plöger <tobias.ploeger@netgo.de>
# 57F93F2A6585CF2DF9A3B31F13B9F45E122698D5 | human | Tobias Stroehl <tobias.stroehl@netgo.de> # 57F93F2A6585CF2DF9A3B31F13B9F45E122698D5 | human | Tobias Stroehl <tobias.stroehl@netgo.de>
# D667348F310C57655FCE5D4EA689FF232FD681F0 | human | Ulf Fischer <ulf.fischer@netgo.de>
# keys in https://git.dev-at.de/smardigo-hetzner/communication-keys # keys in https://git.dev-at.de/smardigo-hetzner/communication-keys
creation_rules: creation_rules:
# list of keys for encryption in stage # list of keys for encryption in stage
- pgp: >- - pgp: >-
533A89DD49FBCDA2BF014A936C962DD77704154A, 533A89DD49FBCDA2BF014A936C962DD77704154A,
EFBBBB131CF1D863005C18868C8C09CA950B1DFF,
A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439, A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439,
C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8, C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8,
0E8955A79FF4687A3ACF78E50B5E444C75867E58, 0E8955A79FF4687A3ACF78E50B5E444C75867E58,
C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8, 98235A419EA3586BFF4E3FC692D4A5202A0D9519,
C903C046A063DFBF8F41C6576B26CF496812B00A,
E5B4FE1E0209DFFE320D2A2E47087747D89B72EC, E5B4FE1E0209DFFE320D2A2E47087747D89B72EC,
890B2EB48F343D4C6DB9DA0916826F30002D3C1D,
4069413B74A3AB13E10DF5FD3EA8F0D0FB1CAF36,
42AA7F6BF795490C1A522C730ED842BE1216E0C1,
B4BAA59056DC362809388F3F2119881095EA7DED, B4BAA59056DC362809388F3F2119881095EA7DED,
DF977A1F65999F4CDD721A27516F64D5932B8AD9, DF977A1F65999F4CDD721A27516F64D5932B8AD9,
AC9B0DB590F4AE2017C2AD836113AEB66C510C3F, AC9B0DB590F4AE2017C2AD836113AEB66C510C3F,
43DE8A01ABD706717C36018C48C47C125C022F29, 5623CCAD4242CC3E0225A62986AF09C173781578,
1EBAE111F6EAE0CF136358E8625C5A3B8DA21485, 1EBAE111F6EAE0CF136358E8625C5A3B8DA21485,
9F5341688D2F9024A15541C9E02949D0F7769E2C, 17B8FDF68AC123EB666934B17D0DF6EC048A5D77,
F7F328F0E4958E4C785977E23B8AA0BAABADAFE4, 03ADBCD31737EB474A4BD235CE615FAF927A2054,
659FDED43DE155FB772A339B343CF1218A664D31, 04ECA5DBF73E98EBCC1FF0B018F2D15CC56BE487,
93593B8B0B7B88EA2DCC99F9388B6A662C356822,
0143019F62469ED5A6A016C219CA764D37590F9F,
9E561083EACDE14694C73A323A2F6C1D153D753F, 9E561083EACDE14694C73A323A2F6C1D153D753F,
9F08DA9D42379AFE6610E9E615CCEC6801DBA02E, 9F08DA9D42379AFE6610E9E615CCEC6801DBA02E,
B92DDC9B908BF3917758D228446C51E049AE38CA, BA6328948D50175F196AAB5111F324603D12DD56,
B643A5D780A01F24E95AA100DE6F8E2C149C3748, B643A5D780A01F24E95AA100DE6F8E2C149C3748,
C19A7D807525CE24443CA9A49372E896B41FE700, C19A7D807525CE24443CA9A49372E896B41FE700,
0DB51A7E90AC6418B7DB83724D38970874850C33, 0DB51A7E90AC6418B7DB83724D38970874850C33,
BF3D5CEA36DB58AAE1063D0BB341078652D87924,
73C2C9954D1BC94DC6682525D2FA233B52AEC75C, 73C2C9954D1BC94DC6682525D2FA233B52AEC75C,
3511D1A5B7B2AC97BAE8AF3EE758168C000375CE, 13E169CF5C35EF164628764AAA2EECBDE0B38CF7,
13D7771BDE5241293F3EDA442AB3335ECC93DDDC,
0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A, 0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A,
BB333E772B60EC8A29E8DE641D6B8CC68E09BCA5, 57F93F2A6585CF2DF9A3B31F13B9F45E122698D5
57F93F2A6585CF2DF9A3B31F13B9F45E122698D5,
D667348F310C57655FCE5D4EA689FF232FD681F0

@ -1,474 +1,512 @@
demo: demo:
credentials: credentials:
secret: ENC[AES256_GCM,data:OPizW/n+6g==,iv:HZU7lCnFHfiqEMt1UCxc/oved0bTAkLaCYWvYJeVLSU=,tag:nAVN+IYVi7PKogYj7MoS2w==,type:str] secret: ENC[AES256_GCM,data:m3uKjs2CMg==,iv:REr+W6QAcMXjC6kt4+U9W680N7NmOaPCbf5ZsL5v+GU=,tag:JTcpjBULW1tb6wYyQO1cWw==,type:str]
sops: sops:
lastmodified: "2026-05-17T14:21:50Z" kms: []
mac: ENC[AES256_GCM,data:JOck+tGHp8GCi4GRAhpr8vvBK1PcR5Vmmy4TPpPw/7JM2uKlIKhfWSm2VIECJ+06AbUJ7NYJaGzyfoIuN9Np5RwjKRFLCM15P0cImOPrPjIG9ebgZcAK6MNsTbuHotpEnRyQEGyidOJWGrDdt4qYfGio+VGTv2dCgnXGMrMQh4M=,iv:26HLOg7wFAjlshkrkPlfAyJ+XFXYlxOXpFrTJo0QcP4=,tag:1waIXChc1ksPna+k5erLQg==,type:str] gcp_kms: []
azure_kv: []
hc_vault: []
age: []
lastmodified: "2025-01-30T16:32:18Z"
mac: ENC[AES256_GCM,data:DNsgx0KhSbgbCqqME9MUJxHQSt4vVc/C2xfkckwjhK5nb4dW1Bz3Y5wAzPlOkPPKp9YB70/q2spw8MKSiJgeujfqnogPtZ409lbi3/RyF/7WxnJM0KFxdrsQwxfOJdYjfXnXicW9CD6xYPn1+LUVVqnRDBXt4MIzc5AMqaXy8pQ=,iv:dhVa4Dig7E3fld2Y3upjw3/P87bV6/C2oGDBgqQYRVY=,tag:RA9qsnRNMnznkNBDkjssIw==,type:str]
pgp: pgp:
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQGMA49EwzBHBfyRAQv/ZGrl0eO/5M6eLZSlO9tBUMMZ+eVFNIsbVCBi66nCXav4 wcDMA49EwzBHBfyRAQv8CT3tlOGMwEy01F0kZ8tcrYofenVzeKRrUA46FBgOEm/f
lYV3Y8spiW63kR1kqbQw6t3EzJ34PRXYwnDzeuRG0GH8UOvexx4iTUnx+0UY0y9H 3L+1/C6+BLvDGacMF7e0V0BTJ7f/fzYYAcmSF0WQrICnDwRrrjNgN7qEjtYyhr8c
tXQvkeDAU537tkttqKSetmdm9HETNYg24zHXVhqqdZI+w0DgBivjs4owSpox+IpY NqpCSEgeR5juiG/DBNEERDrAxG/nljx0Q5S5ILN3kOk1Bm6biK2f+QX4xf2UX6A+
3yeMhqQniGivb1djpZYiM/iRVZrqM2MI92FDlv+Dt8S5asNGBhgpYS5xA49EUJxj vg52KGbpBpZaZLW7S0DxHlkEZAzRNbgKN7oxlPHDQwiQXA8DKw6pPSt26vuEFawN
ET6CAdFBScy1eeDxXb5fLohEZuLDiZhoVycD7DE1JwQpjgPtkQAoKJDJUMD/TfMQ WDalia6zU5bjQy5xqgtgf3QZJlSCK1HFVc4XCQT7kjdjlpCjEfLJl056dgUG/DZP
dq7AfYJa4OEzUk1yQBvR1gHfFtCsPdSgEDPJlULPFHkggOxLTJpFNX5uYbPu4enx IE4oITG/9xQDreyUtOfOFkRugOySpFa0LPHOGFYnW52DTlTv8f1VaPBzHZcRf21b
kiN8G4xPNrdNVPOPOXYWdE6F+jcCHeR/C01JQDDmyqWsQwE6QB76yYj5liL5hMGl R3nATTNgkU/XTdZWTb2gfj2AfbLv1xJzDRs38TAGHYpolsFN/+ehgFoFRO4+K0WW
JoGnnpXtSwqltZsjUONjusLj0zAtY5s+yXEYk1/qunocFZISM0dVEW+8pfoWvxJH GgMfkZ03Y5mbGXaGFhGcJEQMAzNbtS2RbuOhwkW/C0qm7qDW98KZXSLkeL1pjayo
qDZ00lGq+nxndhEHhBHy0l4B7INs8mvLGjQZp9PlT3C58+gimP5amjuuOOuz87cI 07KGaAJFZd2S9Qsb3+3g0lEBmzLIOzqY/n6HCOHIS48/6etFY7jQ42JfN9/yhdRS
LHSfrqkj1NwX9NITfPsox7pffM4TBeI9BHxEpsvv9SLVDh5JRqXBnAh6UYqqRR0k coNPK1gQBytmiZLhpVdQ/Nj+1LXzeRZehBPxT0eelH7ILcFTvZhIHPAxplUG33TD
UFEdTA9i8VrfXzcR2f2Y rAg=
=UhEI =XH0R
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 533A89DD49FBCDA2BF014A936C962DD77704154A fp: 533A89DD49FBCDA2BF014A936C962DD77704154A
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA/3nDyRfgQqhAQ/8C49AJrs1o1uMaEcAaxcZYlnEqUG4NBzA8Ry/a6WfwOD1 wV4DK0+AyNumsXsSAQdAmnV3rkI32tVB1ne2EE0ZCZoQzd6CDUrPNijrPaXtJk4w
k2bFDETqnrnqRQfwZ68IyR2VZJK7Zb34fu7kzyNc5uun/VYoN4rmHaT76VaEhBMX KDShbO0ota2Jj6F5mx+bscpZkY7LhgcyUkg1GcoOconEizgxmcH9cLaX5m7Wfp5B
goxnF2OfEBSQn6QokwA84EdJnm2bgLZK1zhsLnHvHElQJkaktfNoX6OyWRz9ISAA 0lEBM1wVjbgWVER1GBBay0moPjZLkyucbUmz26QMYBZxTNK9u5c7cxdlvOR3soev
txGCUt2UmOgBrILy5HeMIpbcrW5Ge/7wuvuytAmt5HzNXCOe0kIZ8BKNxg58wMUJ tHhATcB6piyFVIcAHc0Zl+nKfEih2TrH+4E3GPv62shGhrU=
tUEx97tqjadcDARU3pEmC1nwMN+pjzTIFXoTj/kC0GHvLsxZbfhO41CE3VWXFOX4 =SC1t
0obdntu/punBC3FiQuM4LOy7HsLQzr+2/2ye9WlIgQK0GNAl1GwZl/AGvSsUyWIC -----END PGP MESSAGE-----
O/meFx8PbgZ7Ia09lf/+2mCx2nDh79JUSfWVKx+AZK8Y8/ZfP+pydTNNmLoBgcxn fp: EFBBBB131CF1D863005C18868C8C09CA950B1DFF
MfMzJ2q6M9UCJ/V+A7cpDbV9Mr0g/IkVa+OSSAuZ/ulB7a/knSZCtHzUqQP9Y3Gk - created_at: "2025-02-26T16:39:44Z"
bKosRB9pdpgpkPCXX8SSfqY7E6/quJeBYXFvM/n1Xddsa3VRY+g98eyHPBjGtfnT enc: |-
d8JDDdmzZNhxmIH2Wtj7BXsONbaJOCcueMMck/esB/w6e93GqGoj55pza2ufY+lY -----BEGIN PGP MESSAGE-----
oN2KGM9+jbEwpbREln7VOfzE3llnMwHWzfz79iO5L3dxjrpPHBPyIbydMwRu6DDS
XgGoszO5in1cAqFXajX/KKWjqpfbc2ZvJ7igBmxSx4IEbWDZ3qe/WCwNwXynrTO9 wcFMA/3nDyRfgQqhAQ//VluVKHQNlwVoIN5NT3nQa77qYpSEg+Qe/kj9oUJxKhlL
zuqizVwm+fr/095t76clE/8g1xfg9FC3WIpqELQV6/AoxheNiVtQF3BzhmfzVVw= PS9PLfr6jqMmxCpABOEAJU8c4BNNoqqJThrgu6TWQ8iL2nyS9/BspIFrkVSsuCFU
=KAay /fpWwkGhzl1bwEebqD0ZBJsYBFVfW/pxVgsreudbkVNMhtCgp1Bphj35+gbimdle
Tw0bOPqkYsPymea4oYAI3TNeqpwxWejuI0trseLQmPUSbseRwAxvX9mB8Id56VmR
GYWP7D5Ujg4RWrl4RRlR+a959ONpnWlkNSPanFgvmLvgEqGxU6ZfgSGjLZtUNC2c
ZPrnXnQc0+H2jg0MSkbSwbUADJ/WtukQEn4scDDWCucXZg8MLbGr4JM1MaSumgJg
QlW6hO0gJ8SgMvpBTUqIOW2+ajaXe/zP979SWotCcZgRLvigfLBRr0L2rITWcP5w
5a+1DPeZi/mTyDpkt5LmQ+Tb/6aDMD/aHyEqUskB/6dXh24VHQuJLUUrTPdURLe8
bWFGoGl9GztXJm88d4gOPcvos7mVpRGLRogo1UPe3nwnWnlvWfmV8ONXuAsL+k5d
mxWw99i+fIY/cARftdUmYs+BlUJ3pt8Skzw+Z5T6E7wYWiQnO+LyKp7glk7qnGo7
1XKrFfEG4R1luJzwBa5Yt/xBaJ7UYzzLhXvu6rsFHjtHEWhANlAoZifDh5UivsrS
UQEXD61DJ3GdTJf8CcBWBLt5doxTephRyBSszLEHE6cxnBOLqfwVhjzZNd4TBYNu
zr6v8vaR2/G9AJDoAGS38u2AVHPApgTwgQTdnSCsplIp7Q==
=jS8g
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439 fp: A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DuAaR73LFvScSAQdAkZDO1Ay7iJ4pWwSAgX4bnXMsJE37onmze1EwM06jXRUw wV4DuAaR73LFvScSAQdA3wlRX7/i3qiwCBfTpBaEImSab/kR44A06iwhJfepUjYw
xwYDMqt9x84nBpFmknO/JzU8ij3ATmWTB+qXc+/CULhMr+ykrs0K5OmXg4uXknSU 5y+icqAGk8trnFXpdiQ+QokQAidnHjm5KfU2cGP/Wvx8IQ3WIBjRyhv9wft8VA3V
1GgBCQIQq5dNVTRv7TdSoThMaoRaocVW7r+Bdk6UdQdcnPcw0O2v7EigVf9tTwvT 0lEBE1yVtElPn6jMr8pRlq/zpMfIhoJbQvBq1xnD9A3MlbK6GRTGXWOwsqcYc1DX
wtqU+qPQ1CFI/zUGiN/FCNowdglP6i7iOshjNwY3foL/ldTJ1qZ1DpjLj04PGtMn CReclVkSItk2+mn7DqJi4DwTkE6Lpr8X/aNS9OxyrhS4ZD4=
Vz36jQ0dxeK2iw== =pQIq
=Nvrf
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8 fp: C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA3LBDEB9lMmaAQ//T/LmGDEm8eLwTEvhTeWIlRalvYzPlc7JRlQopGi3D9Qn wcFMA3LBDEB9lMmaAQ/8Du5NDJm2S600M7ODYuB6wDeKFkuaEz42B9mpqyK/lxPG
EEkAgz7hZhAEh6TnDP57oVGO7IeoebMZWfkGsG+n/tCmCJdSnEhwO9gUVisL+ZDs Lp2jSTZk4qi93+6uBgAeGryJe5qOuUwRdgnnIe//IdiCppuI9iv8W2UAHx32PVEc
d43iGFNPZYOfNKMZAkZBJrWHfvDbulOA7peW6wWjlLiNvsxBsOVXk7Sq0awrIim9 vNpipdz1pIhXEmBJuOfyv7C8TT/+nrqdM1NXy3hZeH/JhD/TgKP0VH3XoGFef545
ExqI/F0llmfDduGOjevayroWl6EIL8COoGAV9lUAketlan2wu7zInebjiBVNmD7R +tEz9Cfjg6pvy3BumY2N89Ijv/GAuRkgS7BAdcdoFrc4PylXleYN1SS/Fwb0WyGl
r5M2YdLPvGLYxFANRkiF4bNOLS6kJLrwR0Pse46L2xcOxgqdlLTvKqRjd0rT5P58 uRF20gZgohdllBHFqApdgVTR/jMl5v1CvA9kMMYRcExHNcpsOZ0rFHyXjZoPA52L
835G05J6RJyknZwctOUWBsjw/x/XTlPTpyt7yvlcLjTPRQUOraVyBO6578OADgh0 VHLeeIovohDJ9nnETX6KHMIe/Z4MpdoYK/PdSXpBT0fw/WM1wC3b8px7stvsIekR
rL4JaXgilO9LkqcXDuO46BpNYhGV9RPFWffSj+JySFmKp+auqx9uLOrTO6M1yAMO 8ZEh14fTzgo6J4mqLYllfWxEOx3XrJ9D441IcSbV51pswjlg+vaaAjB8GKco/h6F
bfhjoTe1/QCdqo7kv0vkP+UvSA7jUQPuYfjx8pDk27KOaNra0JYuDg05HjkfKdgM 95TAiJnwqM6c51XVPfJ4CQWJMnpqdfhXZOeCWIju6EizXu0OCko6h0Dq3gfP2SHP
BW/y1R/J3sI06ZIgpMEwEaUW01sLl069hWMdPt3lmxN4Fffd0kwcORMhoHbLk2ap 7y1KD2G0XbRHtd7u1gd/iMDRiDaO5UahZDgfRNWVqjMtMwkbXkVTz+auIy687VI0
IQjvPFXbKvkeSqbT2D+xcP5ZLPiFjJIswARsPdMZ5DJCVBMplZN38UEG812DEeJ3 usW1o6BjMw7v84UmCgcDwo8W/W0w0PmZ3t6WJRXB/EJfirfGR+qerM91KwBT7Mtf
NX5rHnDjuK1jvuLBfDNDAPn3D050J6bhfMsFhxtFtoR7h1JPCIimMwUlD5IHF3vU qEG2P/43AYbzFKHndXuJYP8OlCHuWIuCDzb8w+beDqEf8Vh2BQX3tNEmDx+i+a7S
aAEJAhBeWa6k3fPk+IRTVEz0FIiRavY7zCZQ/sEa6Lyia8EUUa3tf9+bcdPOlfhA UQHgTUb0hqhOoL572k8SPlf4pW2gw930+Tm24w4VFPhSNp7vL1gDwuFuWfzQ5LcB
s9LyW7JIlB+vr9pRc6hGZtMoZyE9AHTvhrUon+kdIbjjPfOQi8GBdZhnekZgU/ma A1p6Xx4vBrdG8x0GvFRaiXV3KRhm2TU3XvgxunLtxebwTQ==
8nnptk0wy2lm =I6Ll
=kWMa
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 0E8955A79FF4687A3ACF78E50B5E444C75867E58 fp: 0E8955A79FF4687A3ACF78E50B5E444C75867E58
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DuAaR73LFvScSAQdAB2+rwOGPDDo1FBVH7xOch2mYqYRuCfK76RMWO8c05XQw wV4DpyXAcYv7T/8SAQdA5OoUcMnNDngzRgWJZ7Tx4VEGxhxq0XBxaKeSCwQjCGQw
wzgWtERYWkv89EAWIZ/UnHRW1O1rjdNLln4kMSU1Kifsa6a2PoXHW0GKwJuSRbKD fQpjfG7teEeJsoE1w9PduB7MBdx5s/a1U+6vORYng6oH6hyQsuMVS8Zi9j0eekYR
1GgBCQIQGOocovbt9PSawdeZEWRHm34nAepDElTCwzR6yz683t+XXMiYUWiabeaH 0lEB71yT9bwiOPPddxxL8gU0dzG/ntvRVTbDrt4bkNTb+RhBaM2IA1fNt6vAnMYG
0PEYkmzTLBIoQczMxYnLkounWV/fC3a6b9Uxu0fXHHhnAzDxN2uqayB7Tf2bFLrJ cPLk3Z2wFIslMsjAfeXnQqu2IIhtZW7ytKReN8ShYq5vAhw=
W5dXEU5DxTbw3g== =ElKW
=XNXm
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8 fp: 98235A419EA3586BFF4E3FC692D4A5202A0D9519
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4Dq7ZJnmCAxTASAQdAJglxvcSzotQdLCxtFlS+1ZaT2zW/FafDlcUsaiG1HS0w wcFMA911WKxzIy2nAQ/+OGYey7y+fe2C0NpXJS3mKOpJP0ki8bXD/B5TjGPmEaqk
xN/ljIPhq9rxXWfw8nBVzqFabq4fOBrIiLOQamZf6JGv7rBhrS2v/fK3gXyiFmSQ E3GGNZlBaTkhjEl8GWsN9z6otYIMKIWNYShjBWWADzCFjLFRoTADxxkdrB1npDBf
1GgBCQIQVyjGtiH2dfWOy9/mxG0gOd7luvaD9fkmG3txyJGnKoAfKSx0p8b+hxjh dgZNPEirxDo8zjuXWo8YX578Pj4MmTyfe6O7Ty56FbDe33sQ6Gl9uH1tp+nAhRag
wNF6icPQdpBuPYhCofUQP7eONLV3+SjYKtUsXEamrgADAhUneC1Or3ehrjjMku+U MLYWSnrH5kTVNv1sqCe9d11YniQUgHaXfyLMCsPyvYlUJCGtBp2Z4ihv2ZbV0/xk
WX96fBMaEgU1Hg== WkJIR7hOLPWKM5CQjQOAH6Ei2zkj7WMW1b0e2EM6d+O2nCjeQq33Y7KzsKzr3L3C
=sqwk kwJYmZH0fPgibXzV0oyADvgoCdnNiaK3fdWA+5falvSG/Y+SSca3il7/jYEK7RPt
eRzJIeaFSzfJT2wbJX09jFKkgRxN0XTsBXFhasnplxhakEzNQYfJfezDur/BMK7m
Ned90hoRVc0zUKZc4/YOK0bOOGvKnen7VxxL+y4TfReFqkMoeUMMRPSykpKJKMml
6CuM9nFxEg65/TE1YB1TgI/DJyRYaVxXI+Fadb41yI8ccmtUu8vTOSqpsJiSBX3k
ITY3NQJjXx373Rt50MSbw5ELOybWrXrzqAyBOXLucc9dPz+55XsgBuSoRlzW8iIb
DJZtz3GZDNh7iLTxv6skCTtIuMWv9YY5KwKzvPt/CKus4EP/RtS28b1xb4yaOJPS
UQGh/k8RppgvTLsrgl+okzWlf6JQTXS4e6+WOYiqU0D5oi9VcIYi4hYRJKtGELoY
Xm34iNKYRyuSsUEbmr8ECo5HUsWQVWNSGgfOX2aIy/3pdA==
=JH8i
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: C903C046A063DFBF8F41C6576B26CF496812B00A fp: E5B4FE1E0209DFFE320D2A2E47087747D89B72EC
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA911WKxzIy2nAQ/+KXi4SEmXqjITWjxgvCGDV/wyIuxaROPRdcaeCUpIAW2y wcFMA2Cr/drkb+8JAQ/+LxSEQ3e0lxIPVedBh+ANzGhsjA0BoHTl7sjVJGchkKlB
5evVJqgju0hNJB4O94hgj7nfdXq7z60XoTTJj+Jul+u8I5mRkjwIeli2vgpW122c P5E2QQTm9bhRK+iP87h/5yy3JlSj+KS/GehNaqmczORUsrzOWbM13VeB7ESssHYo
4Rt27JslT6OFHb94OX3cu9rwprgA8yTFNwMBQRyaTF1pd7U+8BaYmgK7IIw2tGF0 Cky0QYNkzYOHxJc963haa4chmtqQbgn8yRmr1Ur1YObPCEdBvi2IaEFe4oojpntB
9ZkiXjyOANd2gSXv+QA49ceez4S9UDFJogm2FEOB2wRARNQgmgb1lP1kNpPV+dpW ym2I3uoOBgvM/xFifEXlCVK31c/mHVXuSVUVu+CYIWWIOcl6mdPLpagNBDxeiGe/
qRu0JfComcqck+w0XKlETXgm+nWY2ut5iNwq1HikzR69e0PNYgX+P0uSE7MPLyt7 yY33+VKbF/k+9AtNsow5G623UE42M5ztAkvpLj3GKKwxkV11kdnfv8OCEyFLCu4u
7g9vlYSofJjHYaN5nGCHO6Q0GErHOmug4AH4elPI/z0K3KhKMCYQiGuHGyGli7Q/ SXRcKocNBLTEqfwKPeVQHsPCYdPG1SYrj1cqSWzEs8fL0/mH/2t1p+d2Jt30qSG4
/9x2cXxCdGSuO2xem+Eigz6hTKUWIskHWCMLm4xmW6gzWQmA0Zo8XmapvDqAfu3W GIIS0+wjwg4WTIwAbFk6p7jsSzI/InjB3Zg041Dz5ESQyussyfZZrEtvxHJA0aq6
w5yR99A1Fsd6H3YxPQ7jVp4NDgE7z2UfRQXEi4a/Xx0kUK9w9A+tL3daS/JNnjNl ABAdZhA4WUbdzz3jElPmDGpVK2CZ/NavRap+Jwzm8DiaYTRE1C/59345KDkY1qBr
bLT+Amg7sIGxhKzaqDp3u/5Pjb2INBerChmIlEzA1UOVKgGuYCYAjKn2wJB0nkcU 4WQFUXxbwlhlWCX7rzPastbF1BFfj6v+ay09udaCHJYvg+7URBQldy98RsCpSNUv
BvPiU/zA9D7vkpWadZI4gwFmOXEYOLXh7JheYRh+zzMjiZRxmnzKDl8SaCj2cDuh p87a8vruFdGoeQ4TXnhHf5m8qgtaGsoBWpTKnkmJ5y4aOJgiZ3HtMzSX+vL5J5MJ
wPFN/QZeS5Jfhv9e53GEswD9HCgjiuG1N8WzsZqZfnWLm/DR6nrCqif4AUZxEf7S UTK4WH2jQp3d5RtNrb6DgBO2AivADTmlMA2S2fLCnxQzHzUirvlcQTtQvXJrgeTS
XgFbaahY9dhEnOmrtetMwadaDpA7P88FRYjyXIOPOlxGG/gz4CRtLULfD5kVJLYr UQFdm01Xnc/vdFhbW49YDnw6cfg8B23bgK8KQGuNYV09zrxIgnTUYRXP3hWgTtiv
0P/qn0BgxDamNE8VQaBo+CzELFFgQOd8dh8G36lMXryUkYCAsCw/e1BRDIflZ1c= cTvCMlbV1UY0KXC5cCqTTo66RmS8itbMTs97K3GT/yWNWg==
=Hu2A =eYl+
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: E5B4FE1E0209DFFE320D2A2E47087747D89B72EC fp: 890B2EB48F343D4C6DB9DA0916826F30002D3C1D
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQGMA5pTFdxsndstAQwA6Z65qXNpzM6PQu+aEKJpzuoB1yQHdLTf/9OrfCJrpqSP wcFMA3Zl11RyMNviAQ/8C5itsVwJLo9SOkYS7/87z1zaESeMlQuf6+OB73GVNAn1
mFFUGfG/krDunC/FLk9HzAWGY83zJJs4ShGjGmg1hdKWcc42AVoCown4i7X5hKux Li7EbBaxvp+vM73cCHO7XL7umkFCeZG6e9qRGX1XVTNnTZDzeHdHtVc5qkqYxfIi
LMvJ6RNWLA4aMDXvxP5hvDqxQwClbnXuYwlRJ91De3WkHkD47vzs5XD+mz3aUW6i MMMLK3TUSS5KSxhVFh19UmR+oh8j0uyuu869Bb/pTtiiJB205a0vCY8CAK/2vC7r
6pqzMJU0y2pzWpc67+SkNkTEg+5GgkomanqxlN0X9hsy1UuM1Xz5nAZsrqPC80Wr /2d+bM/01/5xjgGRLlp7hupe6ahJqg87UAiJe1ieWahsUQO0HWg68UbpxmKvADoF
8ILFG0pDsQeRmvWnB/ReDsSmwDCywDaGbQg/CjDVqJ+MufioXQsQL8EHdKkp78JD 345XL+azA13wgrKvSTaYfTjgU6jbqCwReE8YOtS3/mvo+S4U+HiVbcfhWlIzjktu
fc1v+mYAAWZ5/TdgHF46FjwHdHvlTojA301Ic0WTEi5YtngMhIB7tFlQl6Gudsrt otjXokBdU+hew+ICaK1imuZhR0R79mEsHI7mLJChyV23lVdl+3K1ct3B0dITj3Un
GsifnlhhvXK7mwckbXXvHlwyODZLAa2LUcX0zo/99GVRUU/B/6fdkJMS7kG+ZMus T6lwMeOMNUz7BrhY8PK7Yf3xgR9gIzdstj99L2ViymIi9YibxBOhdQTGp94fVyOT
GpO39MFHPKiMJ9qvtwPra1nOGrLv7Gy7HndqZ5Be8pQ4Qq9CuUpCicLMvZ0QjwCB d83CQz1YgvfP+sMbfr0kI/ytmZHTl5ydh8nAYTULeGTEAX0T6dylwKhZsBB8652I
4/Gzxs0mlPx2dZpd5F1C0l4Bk0/Hd+Vqyhl1bxwRlI0vMozeRjepQ3UlgLUSddmh Vivwq4OVfVvjLRsDIN+Ph4kA1+mpyF9GTFVLax7Fjry3hgDHSFthiYADoe3ifNdo
XhJTsyLSXYIeasviQM7wve50+c1aOWVb6+KG40NJC1x6XKdU0Y8PBkN8101KadI+ DeN8BjmC4ofPjB1n9RTrwh4YRwwbTjcUgHG0KpYuDy2KWAnzg1GYOxIK7sIdOPbI
1xfJhEdsSHuAs6maH0DT 93k5BRiIF76pHF9q7220EfpfllLFzcGC9XCGcAucrVTO9FN5W9IRn3iESce8MrDS
=Jv1z UQETS9yF3qmHF7Fo4BD8b8pYIH5N1WjYxEYYUdd80rxfPn9xlCRz3EZ12o22UOF3
3N7sfLFCXT99mF/NWkfNDgxHt2+UuyIWMttffnaVSSpWFw==
=R5Jt
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: B4BAA59056DC362809388F3F2119881095EA7DED fp: 4069413B74A3AB13E10DF5FD3EA8F0D0FB1CAF36
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DwvSwby3S138SAQdAxw4d7vm2IVVgEEq6z8owjVOq8URQ5D4lG5roLO7vgjww wV4D0Z3mmZqL/KkSAQdAWib8+GRxR4uu43HT9lWpkizPQIB4RfmZS4k1opXHqnIw
sERbOq0zQ+O838wQtwy1q+7bpEI/QeRghpSwPlDLwfPk6p5ZNdDjmbaxjW/PX+0i F8fuwxqA8jSQ4jU0XvI/UCKXD1nm4hMdE7bb3f2tCQbFW+YDFL8OrnWw/lnEYWhH
1GgBCQIQ9uI452FBodTCP/M0AkJKxReiR53bqcc9xsLxYBPS5rnxpyH80imw45qq 0lEBATRPWV4BrFs4LqlsVOx3XUljHqs9XQ0lczS4eQsEmOBKvR5p1xOp5qwm3VpC
e6Wwjpu5eH5VzaV8EjTJJ8eYirqZVzvbeEdKsEALii04l1sHOKcMsBmvnHpiAsnV JQzkbVRHDtf1o/y6T+AWFgiSXbJjzbYOmiXnMcNJqNFT9N4=
c9CUrbvYXcfVAg== =5cs2
=/GFm
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: DF977A1F65999F4CDD721A27516F64D5932B8AD9 fp: 42AA7F6BF795490C1A522C730ED842BE1216E0C1
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4D3RW6IFeToCoSAQdA5bAhHoB/UcMb0fRlplDgLpWnmzQr2ApSpiP7S0ijdRww wcDMA5pTFdxsndstAQv/UBdK0phdO3wdODohmgA6iiEH77FRCQR7ejamKiux4sip
EWmo5eik01fM0tyHTFQRbsXmiXRqVKTbmX9E0IdEVjMnzkhX04ZARm1AToR4cnYj 6h2evC6yIrupB7KbdjiIjFqBE3luoF0+4gFbzv7oCl6t5U6K/mAV/i/3ChXHrUIL
0l4BPzq7iHftyjf3G0VM2eUC+FkuSjxt6jDUCTKce9IqF0HpnWljVE75+DtuOWIz BYGLs7Nbaakw+Xpj8QWa9waSPnzf5etF3l8Dw+uQZT5dgFmOL0YvqBcBr4gRzNz6
hvdKp7wRwAiFT2qDNEvcWcKi9g0ntHLFDSCmYzadvcb5X0BmRJiYN4NHYKFbONIq M0ln6e0/ghCQ9NylPSdsfnLU9CHjChQLU0VYAOzF3GIxkDV7M0PlH6/z+OVHEYGA
=bZH0 A89xm7zSieXU0GAQdrqfks6iC2QOdh5wkXysfgvlSaRGJg4bb2M3+LwvAX8WTxur
0H5Ob+xizTEbDo1RsuihVgW0Qjj/sAe/qB3aDNXmMUma31czckK2ZqjI0ma//+BV
wel83HSILZKkSzl36+fgFWqhmeSXIKq9PQ68TRi6//YtZ+/1/qGEdNx75bxrplsK
LZtJ3JAGVCysarbmqbPWPepxZKXQUuRYrnjQuND8AT2dTWaHyGwhZ+PZkX2yIYhC
8xPOGIDnGUNuM3n8GTou0lEBRrorCd/HjOYyy3U6v4Q1RUqsQA7bisycArqEpXmd
hfE2tKDFs/qM3VXJ5Wi5BzOZsQqC5m+S/az+XqmS25J5Ho+0VFDcZ9dJD98ImUfp
rgc=
=Wa4b
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: AC9B0DB590F4AE2017C2AD836113AEB66C510C3F fp: B4BAA59056DC362809388F3F2119881095EA7DED
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQGMA3n4x8uRQRGSAQv+Kv31sB7Ce77SM8JR8Gx0bkFSHy8LlVYbkPh1OazWNNs0 wV4DwvSwby3S138SAQdAOKuVWPXdHIVVb4Zp5TcobpWmXIv8OL34RlLDJwKQkgow
T6vB864fia+u9e8btgFYmKSAlJMxhOiLRkcfImb/6VwfvSptA2+xoby6Q1niuhda f4JLS6CS7MwIjQE6H9CGv144tyHed0v2CH8LPG2flUq6em+Z97hR9yg5QoD+UMKM
rT2uH6Bsctrzu4RsmLTpCnU4xu23lVEeHnqGh35d1mZdMcSYqrdqcbPmgdr5Ak2b 0lEBPhHLRZaz+qEmSIkUHrzSTNHMcaB9SxYJ7Y1fRaiznFuNf3+tCCK8LxHsSp85
XfgHR4gOlIYVwYNAsngAOgT9tvdO2b8wKpR0rhRWkgYDVn/mR8kRcXKwLxmQ4gcM UyGaxDu9Vt0yI6A/zCtTCCvAg5tTz2mDvuoW92YU8yh7oHA=
0OyuwR+KzxsdX0YbkiuHki4E82WSGpBPs3mnDHZ+iIBTxfb8eeCdEwFVoXKuGkug =hvTl
1xlpFNPeaYdVDhRGuENCbGFxymVo4IjAKfdIckhO6epMem1uj1nZylU0SIrpUB7j
tLy/G+nGgHG9deCXaQZsniouXIMTpMSZJ4GPtAY38IBk/2Q/R0VJ8wXjJFXhrEYN
yYoNouSfLzYTfcLUZtGPt5HZg821PyMUKQDYN+bXWpT/Ac5TDORDV212/ZJWy1Yy
h7xFxWq4n1TvuZ1uBH1d1GgBCQIQSpeSwfjrwkzixT/e7mEL97x/VKWNOQavxchV
KOgwI46V4nJzn0S+S4NRQAPQ2n9079QAbA0qHxQNI980OfrtQ85CjZh5AcHFrt+X
ClITVNnE9OhjQ+I0Y512wLhuuoQXyyqqWw==
=aZNb
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 43DE8A01ABD706717C36018C48C47C125C022F29 fp: DF977A1F65999F4CDD721A27516F64D5932B8AD9
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQGMAx5drVN5V7yDAQv+J3wPBNcrHZX0WIHOEtkf9800tU04UfvbjMAtVsoToKf1 hF4D3RW6IFeToCoSAQdAmI9V3uW4skY/V5u/CDXuj4+7ua+W0DnDouvwWfPUOC0w
FM8QaCvNnaOVHMvpFqcL6eMrtWxYNxqqsv4VuzcG2ZZvtxJTIHErZ5e9VEAymbdS +a5o0/2As2OiIY4m9q9yBiMWzad8bd1c7kWOSP3hCgZ6v19Zbj/Ddw89ApObrFBX
uI/7pdHDijXMGFs8l8PO3hj8NagUB23lZTzUIjrGiBeScL81EqeLU+0WU8CEBb8E 0l4BQDaZcmRQPP1wiCMUZkSFN5eDNr7YVHqyRCO2y77fotG8pPIs6OwF4zyIk2TP
0OMMEOKAkcfLZgQD7rrHxET0CqrKCdqY9aSn4sUm03ggX1tw6rde7Zc4xyZNqPdH xRSyqyg4HrNbrNlw8Qk3bO5Jt3kZHCHz1PIcbjrI+YShHLhbgSsdJ+EWcNuy3Zhc
VAiGXJakVWs1h5/ngDHI4ZxDPDcheCmVbY1uMnwITLoAxZ43o6Vpsw0tCAzSHRIr =PAI5
Xtz9PGiMgo6zIZgg+k0u02duWjQMZr0s4XaGX0ODKSrCrDGkxavvaUii0cS43pcn
LWOpfHybpYMz/HGInPfV9sbhA79DLjzPYtMvaKFzJNiM9al7SRJPu6gXzHDPyE1t
m81WJbuhPAAlXaTR723/iYQWSQtEwbWq9tg85jy45tR/ASNBxoEZGQLeM5avQ4Ah
p6xwjLD0yw3+b88eUpC50l4BvThNSeYo2ur3jh2+sDF+u+SxwBkAqKOJczv/mqzx
YfI/pT/aL7UFrOdVdbkeTOh2gxNBLceHekOySO4PdX6TunwWgC0jwJUK/twcoXsB
tVc+A8zokOLHDq/NQwAa
=sUZB
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 1EBAE111F6EAE0CF136358E8625C5A3B8DA21485 fp: AC9B0DB590F4AE2017C2AD836113AEB66C510C3F
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DRPQAGSQLsJYSAQdArbm6D8/ya2HRzvot5e9B7A8DdqEhauchaXAHgzjti30w wcDMA1j++ZN0cDPgAQv/bT4ensVZeqgxctDgRtF3QbsWz7Yl0iFT362uHbv4auAQ
6A4tDonnCXpxVI1uuBMsZhEICrzyRZ2aLTfUAloq3elnXLK2IRYKAaEoii+0Ei0M zEK1uP1KY8E9qKaE0ALOIudT+kcOh7apQrfa5C33Kp4cRnzHvv5xQfAzxNbFMHuh
1GgBCQIQ9DbHZh2dRjZLdjCCZwiUGuan+UYtlJxTUsGC1wl/u/Qhe1+e1+0Jes0f TfjrFP9HLdcYvPJ8NyH8ZSxxpblk2y5x8TVB6Efl+hPk4lW3jHYA2dkCae/9eQG9
vfJ2ZKI061X3gsLVJMcjXEw11SHhqI9wh/zIWgYTp7bnEcocO+sYtchob8qynwEN 1A5pLzrz+q4J2jfHCW7XBbRDqevIIRz3AgEU/S3zrWyaGFLUkArTNTVBVHB99Ntb
sq4e6JF924eh4Q== DwqNJwQFOMJRHxQMHhB+Jsu79p7PhCFdYi7Oq886AJug0V9BW6qKF4Dsab60fcMP
=CcxN RkELN7OIQhAFYIODHX9aN4cW93dTEdjaW5bnwbagO+gGlqjGfarCctSNOWDPNCWp
y5fZr/7JA1g0VMY/XEmrYjTVKZ+ZN2z+04j38LOvJ43oE69gbBfQV9Xl3jt1iIuf
lKF6zmZSo9bPrFFcAaWbR94pxpQxR/Tnj4G+g4H1l6gNStyrlXmGO8omFgf5gsFp
EumSxyD/MVdpDMdYEUsP0lEB3CHznlT+gsJ1UP/MFcHgH2N0QJJnZDR9YmR4Mp2d
1SGFI5nD/YaA8C5TnJOA980Db4IpuvzakmLOMlIXUFWfoC46DswxXNUVsWbdXK7F
An0=
=TgU7
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 9F5341688D2F9024A15541C9E02949D0F7769E2C fp: 5623CCAD4242CC3E0225A62986AF09C173781578
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DqL0Ka4V5gcISAQdAVKgpyaSgq/9j0/Xx5g0j9vByKkewpQbS97Ojp4SRi1sw wcDMAx5drVN5V7yDAQv/SdfbVExUoA38vmJaYrHqPgtmqHhZAXZ71OhhZJxF30v8
WoP7x13tUER8Qf31NVFhI184yIIgtl2hlJPIeHY1FlcVk0Wuqdxq4teW8xKvxRuU wsyyaHHCgv/hPncBvZnCXiCUSO1T+Ci7uGHVK4M9+1ma5v02KjIe6ObcW848pfEc
1GgBCQIQ7nnRbDE01B7ldujEgRx04Y6ErI3joFzifeiVQCZ/Ou83seDST3TKeW+a HyN/nGmusPSCKZi0ty/tm7V96qzjJim/6ahfvQdxAGcsB/4MrG0fDB4OxRZ3nQKD
yzPvkE0ZQPKUHchTaJf5gKKEThw6w4rVsIKO2jXKCX7/J3Djy8Xxis/lXxG89HsR 0ixMBaxGPjzWE9FOXb/TzbcuKFRZCMw3heLgm2NiFiCU/W1CyLeyFyVbsUyWFoTT
PtqB5Ph3R+U7BA== nLTZF3SuDkewXlKtZrObXRRXBIRkNIQ4iMGewRHhrp8LJgQ4D4x3Bw4OMUXV/x9S
=fuja oPleprSEkx9heWYHSb6vC1D/TvsMfU7+sE2cojYJI6imIhTLEW9rAZedNw/ZQw/j
1tWpHSCt4NBRMFB4wKLrrSZy4iQZd6+bYDrxcWYZBN65TvVVBO6OSnAEH5cC/7/s
lEMHYqWzkwsAD3d+BaewQIrGv9Dp5IKRGRrQYkel8/+d5qqE5vzwW1rktObdVhxy
Y9y+xXGKstpLSUUTieok0lEB+y2zGDLSUBsWlQIhN1Srf6rFmqRjZfe3WGj6DzoY
gmuEIzQemTcn1i0Z9sUYi6aM9vz0SAXvxdPsjzZmQgAz2TdANjjqjIBtbG9qcNO0
bDA=
=LuZC
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: F7F328F0E4958E4C785977E23B8AA0BAABADAFE4 fp: 1EBAE111F6EAE0CF136358E8625C5A3B8DA21485
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DbFrAcOA5jGISAQdAm5+uPDWzUJjBpXQp1RLNiiMDVitvxN/SH96xDA/Q+iAw wcFMA1kDHheI9SLWAQ//ZXmA/CzEJ9cfr5cLf3ofKaQaS7uLze02R/qOyWFYSVb+
6EbF9Zdj7XvspurbdvscXW/GUHgQyBB4D6/cwpSCrT97zE+kQ29o9gbCquqQT05E vhF2x2OGoA0A7u3BnmihcmD/pjd2iVcf7Rr9DUGl2Kyzj7SIX3JbTjwIZt1SmNfE
0l4BysTpf/DrhdzH6MHJLpGRNQy4+u34LJad288MWbKApm/V3687eBAAZQ18SNKY e8nhuFQzFKXrsgLSXgiH23S6sh7tE5Tk2DQZ/OexLL3Z3OrHxmhRiFVx2Nwx1LU8
b46a2eDuOJq2b9ZCCqFHaoLBmc+wefo4RsP9e3EYOjW43OYIDnUVTu1r4d4Z3Uiv mkZKup1zkZL8XaOcArRwx/DAOoFSBKyqQ4PlIz17ipcuocZj6VxT94rnjEE9i0oL
=+3z0 JPjAU299RUS8nC19+o6XSu9DYOxQlEJ4ccvCksO7fRZBAnVmPC5gjOCu8h5oHooN
/k/VmLbtojaqVouzh5lxuXm+orexY0tE7APIEBbpS1jCTbo8ZNYnhmRVH0b2OxuF
bAA5P15e8MJr3BJRb8YwkDze7K0AKtvHW56L7uGqSetS7IAu7eyhG3w9Id8RylPr
5SAuhD3yZpPIp4aI/NhxbDruT5Acanvkfx9XbLgtnr+JaCL37N290yCwvlAnEKhw
jerrOEZuQ0CVoc15WTvxsj30NpH/50HeMNuLco5Mdqm9mvRAEgGYugTedn9rzcAS
qDUarFOaCnI6OOA+AsutIdH43OT1t4oOKlInfzx1zHbSF++hS7xKZi7fgM6mgE7c
BPXIAPFy/s0TaF5PQmrZIPRkSkH9bCL21Rb34Lb6M0jF4xuXzR4MRCJtjYfz0rbS
UQEDXQ4COYhunZVWcKG/g6TcezUnpK7jfdeO0+yQOXEDBIDBNA0fZyRhcAUbT1Bh
weRFN7s1qA0/0y3CD8Cn9Dmww3y665UFV4Hh/A0evhIMrA==
=dgwl
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 659FDED43DE155FB772A339B343CF1218A664D31 fp: 17B8FDF68AC123EB666934B17D0DF6EC048A5D77
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA0JLr4yo8A4WAQ/+MhQYcasR1lZdFnUk3L/HhjkrVt9xQ0f4qLqNc3BE6dNx wcDMA195cwtvYnl1AQv9Hr0Fpe5haXmpcy2kaoy5beaJP1AXqcEY5huomy3RpGex
sLS/AgkldsnrJZnM6+5g2+VICQ73dR2zDZ9wxfMZfJGznN/iYWCGbDZLGxQAPlTi 7/J0LB5nvjx1Y5SFu94l8bD7AAwgTnY7jEQKVDPtqzKuHRFItuHcYEYyYukZk/OT
B8ofOOSK5YXlBi3N5cMclaZM548E4qFaUh7KU0slwZC70eEYyhUU424G2jhKQ2Rm tRs5QSiOB4zfboGB8uFwI0YO5QWfUaBcK5O+v4KgaywecxDlEed7FaV66CuEfNIo
g3fu+iPB87MHfx4gRkUwC34yvXJEf4Po9T6pxEv7wpFGTts6VRCm1V3iOPz66dM3 GFC342+dh+TX9cwKxj76tUFtaoQLfB/ThCejxcOu8Z20tkagGd4hV54p1Hvo1RXr
Kdly1r9uY5F6LCuD91GU/A6auw1dwxufqbvs0vA9q9eu+FGks+1KQu+Gr/A+469l 5sNop4ppbq0yDmuyjYADTOnv/eQKBBXTXDhR/ZxzRRc5+lHvx5oOxQplqDAsd09k
LttpriX6S3EUpXfyJihvlKFqTyHqQZkWoebgFpuVmyh9wC0q0hCCxmk6HF8hloGY YjjichphXK090iJTrHVB5EAQb8ePA05JBysA2nE8rMTFcZ2bkCek27nWN/SoIVEi
xAemKCPpf4Ee/ydcPTDtgZDv2zR2SA1t5sryUrBdK+bmgflNP9vFcGAt+vZzC0aN 0faFpiMM4Mfy2cSAlyod+xrWVCOX7XvvoO7a9mEKl21wEO8q3FAVjl07DdDPM0sN
hE9zQsiubOHWoNCXD8z/DQYLaSNFOznchrcd2tCqW8xIjl91mGFKhoeuBv3c68N5 wMplp8fLaz5P7KDMf92m6MclbqsyFXqFfsHI9gNSajZi8ylzaB9HLTTC2d+4YVjO
PHtGIILW90lu21Qtc8u3Lf9TFwjxNxkbQCCf/By73PWPwldOiX6FQKKW+2nmERuy QUIuH8MXBa+fs9RIcV5Q0lEBjojsANreO8pPwoAmmP/ExVZo0nXJ3Ovdqd8oKkbc
u/6dtOrL2i9/WRVVzniIiF5D+xR/1vN2VduUzMQpLRdjz5U/G+oQ2L74Ebj7z7us 6OYvaZJnVUfaUf7AAeBrhjudGymJaEIIQnEN4juF/89dg7mqrn0VLmRsuHAc5BBB
kTwPcoHN6nZiMSnPUjHDj7HRAZp2T9bWXGQbRIm1aj9jbnaigm9xki/jqYhgf8HS TQw=
XgGCuTPNSwGbGh9qov5YrqnidDkeLl05puGsnV9S8VB9uCxC83qB3y1EJ77RVsD1 =mDJM
XzDDafrkQgStOLXQGBMYqeG3RjBR1Iq4Ng754Mke3Pdg+tM6jKFgqP9jdnJViwA=
=L9WE
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 93593B8B0B7B88EA2DCC99F9388B6A662C356822 fp: 03ADBCD31737EB474A4BD235CE615FAF927A2054
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4D9oMBxyVlaokSAQdA9qq25Rk3+ecAiD30KN6ZbYQ5Rs1fpfuoVHi/yTSnRCYw wcDMA/IHQvF5YsEcAQv+N5Gij2qXj4gjhGxSjpORDuuS9HMyAWKfpshnvYWjr3QT
lW/nVamEfdhYCJW+oGDhPTagLIEYQit76yB9BjJ74aRGBnmoNCemnsgptDD6NtEx Wdu2FdaYv1XHWbTMcVH0+B3Pe4INQboGiB2wY/DCzA0vuverBR5DciZ8vN78k05W
1GgBCQIQT4qs9oSWF7nT7RbqUuHZo+rOrMQa/Tc4+aNeT4t+PvunGYAPFwfI6YFE +IqDYLfljeclaoJlXnlaPOtWKI2OWm2fsg8/4lBqGnsJ92Y9Bc9qXbmaBgPvgtkU
K6MxpQbmtyEBbHDInz2TRNqh/EKW8ZHx3jULUUSCkf5TII8qFqzD2tPB9bW7VO4k B3dYDNZ1W6Mo/wm6Pk7QMVdZoJDGvs7PpOhJ3D83koSx4BmZvrDrPpwRtWwkbEl/
cehLkWIlYYT4OA== zSvpL4qXv4NWQjc71Djj9/uAtlXIt2QPWeCCqsoyIMHd7Vr7qrCAcZpQH2GYnn0v
=zAPp 5Tb3ZcCH6CNRrKQMS5Fn7OH6aeLuKHja012jJxnplYHzpp8hdL/ysqLlgw/wKxS4
rOThNHDAPtCoS2jDRmaNJgiSvOwtwPq1E2JkaInjaB4xciuaK/r5R1CwE7J/uKRp
j86JEC4hLgBwZX4llzMgk575O4CN+5HX/ywHMH3JXozkBPh3EBun79Il7AogUVRa
2uoMm5cHhHZ9M077YLOd0lEB4+qgj4o/p60cx/oiaGEQcQzjcYn8aoFyT023xuta
qrk4sKQDKQo58tQ2FzbKxQeKE7Ehadv05dRevc9j3+MwcbyEDCzbZ1k/zb+41mCj
agA=
=2PBo
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 0143019F62469ED5A6A016C219CA764D37590F9F fp: 04ECA5DBF73E98EBCC1FF0B018F2D15CC56BE487
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA/fyan/DNa3uARAAjerLYo+89cPKRGeXJnv2rNoUMPZL3udG+7x8A+RAstXp wcFMA/fyan/DNa3uAQ/+NqLkSl9GWeDK81+MPPeU0bkbOSw5Awv2xn3eWjFKIjEJ
Vj35qkocQ/PV/yeZWESlhamXHKpzGtuF8QoOukRvqBs17n731q5bEe3tqU7azZGZ V5H1Hr0a3b/Vx0WdVM5eat0LpH5/OFWljx0QNJfqFBz25TFgBqHT4Ew3eCtZFxJC
DGinvqwLVVwMxxDj3z2lczFK8hl5GwOlfN+MtZvb+/bRm7d8QPPMH2Y2OoNU4sVR ElwDpI6eCCkZ3w4Zk3BsBwCwcRt0kCHXJb7STFJ8OGg6qb0mB9Weg5Rauh8jArao
8fztXlGqfmZqDYXoYkCr4wDCt2XLS9W/ydDJlGmjvebpx9E24HUcgNcKwu6pUSwV VhxrE//oqzLjdDCNE7jXb68/6Rw75TsKZ+nAAtecK4qtliU+gP3o78utoWb4+8hJ
UHI6UU/rtJ8Nw31G50Ar8RRc0vGIHiLNdEDHr1cDVbtvf0ySy9kmV+M+Y69cOhZG 0hhbLjQpKcwPEZWi8/O2gzePHNudHHPwVHOKcIs5kuXF5TPd9skiqZoNTtuiVtGA
lFbG/RjUaWFvueS11PIMc3c5vZ/7WNcv6dCIN0ek/W45Ib3IwckhJnbuxPImwl7u LjM04k73fUm4JlqvtlSLXN+epm6ekTQWabslDK6yxXIovu8ycBS1EVudRjMdpBX0
SiiGwbMCAjNLrWJkfIa9d5aKMHZ0TycPVRWPthxW0fJ5Xfv8Ta+0WnTIG5Gew3YW 5bi7nKKOsELiZ2k/bULmbLoKmiKSO9F9ulmQGTeH+dOZHPcPxDkRa8waBw6vpM47
nuxtMkoH/HVJV1Ea+AmcM9cj3SqQftK8A3zwMY/y1uB4B2yO33AU651aPCKp02yU 4UDEbOcadc8+mAsMVoEiyGl7HNFWyVp6W0V4wWTtICZdty0AK6nyOp5VF9loUewE
z2JGP+GYdTaL1dkAqfp+b/tMXHDgXjSGVGnfIqu6yYg4pIs3k0M4R8yN6Pb1U+qc jDbk/swUsILWdgDNbquwGkgVbbGWTuGt8wsc9i5erX5dkgeM2ghKpW6PgtDveDkD
x6Q5ZdLdDjuEN6iEMz8MSI5C6q0Hxf7MFFLPTn83z1aywNYsfKxqsovvOZV90VC4 uSINtgk6n8izcBOmiw7igD8+5e/bYpiwrHHvgX2d2FqnlK6zoTI8wjsekp+Cy2ps
AnQG6PZ2I+cI+8IMLcAoPPfC9iDsBz9fp6NC9zAsBvH6YrkumOfp3J7ESrieTo3S VO4blkqYmdkbK3DCEQoVrShrRezlSU43wq4dZ6qi97Nk70qjbDoVuXpzNWhP3cvS
XgFIBgIV9Dw6BO/6BqMJ0HCrlV6cVudf4r4GoE3saRjvGImRFe00LrD9TLPlber1 UQGmUKqjHRzV9c8lBKZEWdeJlyiWoaFrSoQvdE4an7QptYUjaN62HhG7Fwr3mzxJ
WGxNBcY/KAf4RUU4ERSB+jKERgYISKdWDbogGrOsOPk0AGbFEOBoxS6/vkNPJXA= Hbewf3rU3gHC539+2W8wZ3teF0eik0gDU/ug36xun3uZ8Q==
=LaMt =eVAS
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 9E561083EACDE14694C73A323A2F6C1D153D753F fp: 9E561083EACDE14694C73A323A2F6C1D153D753F
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQGMA+cOSmNXMUmKAQwAjvtVviC+gqYHSCFmTq/22FjeJvCzG0/3ww75p24VvxG2 wcDMA+cOSmNXMUmKAQv/YwIURSy3K/pt9nr7Et4FJmjQVh5M95bMlve/7w1W1C89
Xs8q4BEdoKu7yQiYHpHGzQbXBBfKXy2ecZRT6bFpqLW/YDn9At54l78x2Lr4SBmf bFVodCQJuKKH99o4pC/FlIb0DWmHY3AsHnTyC61QJ0Mlca0W5eosye4vzeI02KE8
cKJZIAFeUsa4Zqd+OEMMcZ/q+49iDYCm3lv4eJy0mfxC24PS/m2ihx8MwSz1oOEq 9FvYZRLGJ5f1XwIQTh25K3dGMS2J0CMVZDYXBm1EyqqdxoPuHZZOvas29j1CL5Of
eutHDAl01bjPlGaH9qN9xDBx/75P0edJ1wT60vghQRy92nSURyDFdZKUX3LKNT0V Y6KRbgV323N8xXkuP6THBjVnDwyQUjnrLLlMAJX8bxBgKMtGcON5xqRji4SaWHeN
ioSaImYpkAEgoXBG7W1GWztmU/Y/JY2ksRU21GB0Ur3lmoFZqjZZf033xn2gedF1 6ZbZMVjk6o3i00XOQe5xqDcEnBNtpzPXPbIf6enyEKfbzZBMoS28M/4gMkFtmaaF
SaVHUPtmIMYX7QapX04l/2jALYmsFRKaAlACFU9dR2OYIz4nps0/OQCcLLK/TJsn gMqdH0qwfu4ZsrMCNUf3bQZawPm7JUxOVhzHpz/J22AxODF3CpH2romgJX2igtZ0
a5FTrrJR89CY6u+22NYmjjGMRZAxrnLEWL8MDTbBgVevIkaTCtEih43Yi1eLwILq XX6nU2iFJDPCfpIIqJAq3D1+DajXDSOlkSmRU9yWUPI4PS2kj03xgR11YDE38m6a
GVFm1iBKKikTs+GXOI+9Ye8YJ+aCHPPdJXUy38k0nG96TFO6l/QmEeOd9yfuYozQ 1uvjDJ3p6CfFpBOs+gL5DrAspW6kbOyi309OmfQ+WWUDvSBloCePTbzdbFDPR7Qe
q3YSChDeJmKn58gE+5So0l4BePJ7cn/DBoJtF/iBpCgmleEo+CJ2YuvfifqQRz6u j8lu3vwkT/lOmR/haIN60lEBtig7+AKnJ5218r9So/4WOyl33hYikRj2G/sjrbPs
HNY7z4jBs3eAznTgM2ZVDTn3do0qJqVfddoeCErbGtm1uWXYGERWZWp4+fhWb0Lt IktUHFgWuALcNgSCYPkx48WjHUcpjTDjAxkmgup4t5t9wupl+Hf82CkcBrffbnza
Wq35XZ+yr8WDRUlHtsaa 8sI=
=4d5e =vFuE
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 9F08DA9D42379AFE6610E9E615CCEC6801DBA02E fp: 9F08DA9D42379AFE6610E9E615CCEC6801DBA02E
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DrMuSzhFbHkQSAQdASZkqTXPijGnYNdOnrzS9tqgVJKIj3n/bjt3y7QSVPlUw wcDMA5bUWViEqX+EAQv+P4bjeVEVjMrI6tv/HaJd7PI0jDjaHLIKvH+EzamJWM+d
MMfwIdRjrvN07YriPmpLtYqJCCxQNGVNC6ye0bhCbdoCyomZtroiDdAhKYFr7dcE +bf5dh/ChV11bqNn+ziqTQKROOnjaWb4dKmZWU+12/kWUOVrpB2KcOj9QPOAZra0
1GgBCQIQPQr5Yzn5xFWjCcKM1ut7kL/Na9uvyiHqrtp2a/vZYAbnQzBf97lbgpGt z13iQzZy/aMSMHLZbOMzEpNaqvNSEuqnl3UgeEnjTav7JuMzw9Y13lWw68i0Bfog
GwdPt1gmuc3wcAh2nG0vFltHYyJ3BAF49t8Ol2vYXrxFt7R5txxve6Ijr5RD4N4J QHQQ5HecuP1vnBfnY7j5rSx+ivKQZ368idArmcVuivbE3yTnigx9EJgw74TOlmOz
ovWR1zjnvN6jOg== p9KuUQzAoTMQ9xle7Af41Q7vgI3sZndWvi/8dtcfPGe9BJocxK536ZumwXmwMZh9
=fm+K htPA3s2JhnCUwwU+vnFRZsqBkbYRxgTlpE3FLWsfFXlRoqaWs9tz88mtS6ColxqF
035i3L68U6gZpXCNJEtUhjx4WHHDnjKi6bvQGx5jCLmhnHsUU0dTuSa9fr7SY1Jl
2G3nwfpCLaJE9IH6t00GRqgVWtniQLZ9b2UJ+uFbqgRRuZ9EWOCZWQvk1oq1M1te
QCg3Cbu7b7jZjTkk1GKf0lEBZUWHLxamR+THxo4I3nZq5J52P+7UB1V1sylO7vYk
1MFrHazA+51LZrhn57FIkMUCQ/Y4f/jOSFVtFVCIHD0j5+SfNnWFC2AQYoKH42Rl
Tcs=
=7YdW
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: B92DDC9B908BF3917758D228446C51E049AE38CA fp: BA6328948D50175F196AAB5111F324603D12DD56
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA8YZutSkx0fiARAAm4woZmQf9KWuahM4fPkMofMKzL6DGCFGfFu3HabFnVAv wcFMA8YZutSkx0fiAQ//XrSOZC3C1b53P7Nxq4lpJvkjFX07YwoQ2uKXFFQLcSC7
IAVqW6lCpGPI3XVM9idi3Qie+SqHU/Frz4phu616b27u/7kSdwsUQJ2UrBuYHHvN PufLzJvRxceytIUhEhCUbx5hASxLfCrupKSQ33FCTEg90eMRpAX3G0eHC+0bj0Ma
HptrEUKZFnddbo5kfKa/Ad4Bm4ItzXH225xV1tvgQUETBEPAjFblFf8Dg0jePFYv qAwAZJnG+vnLHc6W1no1NsijmGXvRzBRUdUk3yWt/pa+9qW09opJPsyrRwye3ZIL
hI4ObFzYytkUK5Ck5dcRAbDSd0SHe74Hfh53zLZRpl4/PlCVdKrUvjqT8EJohC/5 IJk3rmm6d13TA7RVRHmy94TCIGSGHqfDUXLM405oxHQoMpOvXg+hl/YXqBNU8Lrv
FQqZ5M88GI89Zn6Bvhxz0YKnJl0WvZ0yGHF2xRT4sL9fJq0cbQeUKBknFdll+4Nz 610dKzKElS7cksyVdZ2LNL1Th9IvwxnN+l8+UKkq+aj0x5CtuYNjdQnucEthgZ4z
NEIq46i+b9CsCWopeaxlRpcwaST53gMiGYktddrA4XUvlNK9GQA98pbZtkfCYA5r pwayS74uW0vmpCP3RgOhQ4hTdr4ZKxuQbaPeE3/V2dbTwT5XxUSTSOJxf8/Qu6kS
H82uC+WvQsJJYrfyoZwcww5YDoZrm0vDmZe0pFWXZsXz4pwnc5Gn25gDw4cZ9Okl 3T6hgIufirl3sIRGVsLn/dB0GRvgdrmBwuxyR1pvJocRdpnlYHciszZFnFrhGihH
WHHGEwUeB7lKy4B01DJtN0pgO3rIOQycV97zFlWyWfmgU5I71lBZVhh4J7t0D+iB qPF+p+UweYQi4CtIDOC2/eswhA1snA0oEvvMShCWrACGVLiGgDc2c8dI97zwfHvu
X2VvD1l7oQzAgphdoggADOkTifZ8EOmCxLrJJOmsxOKBlUmob3WKzhIcy/DmmTYZ UQ9RGk0deal1egcQ5FshMVJU9b/onW8dw8q3nqTkaThTZgUJChQ/1pglmjb4Umk3
wTCxOpLDFHRWaq5hynT34372TwHblXA9R2z5U/taNX45ENYrfzSAEhOwGX1fYGZZ mwXuK7lX2hIguVDrgPu9EMN9ujiV1uE6ozLRjKDPYlirVx+6t8IKS7gEMv0K2gPM
8pjB6SGBWYYoiBW0MqAkGHqWv2BHEY8POmX9A4glUjtftPWTLHmDtu1SjC3mDPbS yn6BUUID/13Gr8jcGQW/0snIpG50J9xRSLP2XtR5kPhrv0uBH8ACvX3dRUAPdorS
XgFGa5sFtQMh0SGENacIwu8iqXDq0Z4ivkK9KDDZKt+BCmvZWGk5rvO91ZqCX3RC UQE6Q4EsrEFWxB8HMb6bQ9DsgkFJyDC044nd9HKpFI9IZUlhP/nAuTmqSxCMErVd
c9yrfExWKEAq9+MQ6qjxpzdmpz1ThIrdYghcnz0+nR66wK5QQAMyo4JJ8pTqAn8= dPG0PyY0nUUA8kqnWtHpFhm4CCgl00uGr0rMwqM/ienspg==
=fhpd =YQEC
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: B643A5D780A01F24E95AA100DE6F8E2C149C3748 fp: B643A5D780A01F24E95AA100DE6F8E2C149C3748
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQGMA9vEXLVODHp3AQv/e502IrrUfeQDZbx1YIL2ulTX4Mi/o6C4M1mT0spXeqFW wcDMA9vEXLVODHp3AQv9FIxXFwDFg9EQ0bwdrxPWzrZnVIXKOpQeHtv+aA+iT8Hi
BKKDV7JPKiuZqTD3Db3qS9hZaYaBtw6m4+opR1AiSdBI3+IHENx7uepIrsCKSoCZ pMz8kimNlgHjWUthJsmAujMcoyvH04PTDlJUd6UTzVbqSRaSh4+8DrSsINyofjgn
XL8YEA1H8VS3ZsaF9SyrmF5MNt9fj20/UtKnTrXzVNHBhRghSF/iQJgmIQSOR/Bs 0l/Wy1w1Bv3zmcAZwHD4/sITjgCZ8ETYOFSsZ67JoDz5MZ5jqCSSrvtFOrDIwlvl
OCbEZFPbdxNineI4UgT0LymPAMzl9x8VDpJgx/PXdU5yAfqk6i1vwcWM/Wt1f6Ai sZTSY0gU/J27GJ7Oc2FJ8mxKeWN+ZO5HEpRZgoyo3rj6SKIgqw1mYAVPwl/e9eVv
XXg0ic7Q500/n6H2/HPpU/h40NQtUSL5WEUrLDDTM/SBoNjGnsE5pPJsP4PbXuXM hzhNe2A9bpSWFjLUKSrAW0VAai23HrdSHup45rKOEv28iAOSOTXon3jZNSH1au7K
dft46OUg8N/oZuoN/DVCxQxCUkjswpMsIgduHLfh9EtUFveHh16g91stslZeQJod KbBKahvvdJ679F0/9zH/iZAsnrY5oW+shgIjpi0moWnih0YPwZNu1mzDkcfLDQDH
3RDAZYtcrEiaLy/Cld7DHykW0hjsnYe7xRv9SCp0rl0cfJljqVUjB3H7ZtRNRZhS F60eoZrg3iieS9DWcxOksbprqWdyF+B1d0AxrxR57Ru2nFdR+ST/8oIcGue6I+uK
btEuPKUIyUc5yeHG5tzU8+B2EhlOu2v4U3CGKqnJ0uA25WaJ1bKGGpkDlCRrBdxY kVSJFeArdbAjEI8ldB9WCqkLeKXVTPGLcOOQxSWLNFsHuuOpZWnWpOAMF06HtBcY
XmpPNQNCtHe30Gq1/dD80l4B6tI3Aj6WcdJvyzK98MnzWNzQY/IZNBHvfLxdcfX0 eSZHsqGHgyvndIgQ8FLv0lEBXgxpZl826/2gkLVSdNveCLF90yxaagrtdbTEfm3T
bdfc8w58YfDdqhGZXtQlfrqjB9CoZx2vhGk8wQevw8/6Z2VtGpwVX4+iY9q5aYvL 7LIUdeZlRhYe+eg0diWcAyDG1XWgXiCUfocFR0yfQRPHWEVXGh98zZ3MFndPYrfB
XqcHeARup0yzrBI8i46I Rf8=
=iFpW =J4gG
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: C19A7D807525CE24443CA9A49372E896B41FE700 fp: C19A7D807525CE24443CA9A49372E896B41FE700
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMAztV5cc72nziAQ//YN+hIkadfvYWgUS6pyfym9ulATzJszRyaZk2MClrSHz6 wcFMAztV5cc72nziARAAieRTsV9FNm/utlda05oE5ALMM+clIAtxw5grfaNBWeUo
aY7mDVHskvlY9laeBR0xSinEzY0z9zus65/zSYC4hahwVUPPPFh1gmkOtEJpWWRR Xy4fgkzBQx6UhKDwsIsAi9wUBS1Dzd9HG4tUmmAf85TEbX0llKdc8KD9gdzt22C3
KJHNDQe/ucmNy4evlquCz/CCgABBN9De6oXlo5lZoi+X/gKSLwwZhPKu99TpinHK Roq2oCQKHdomA41qVpnwudPQXDakc6pltLZy+TAuziypgzLHc+7nY5Kd9wFhzeGf
z9MGuxyxdudBWFJA5lkW53t7TExZkVRa5uu+vBF+8klxGLE1B0QPp0myFWhW3lMA f4sIQj+ctHSd3ghGu7UQpJW6W6zfmkBjSHMnbZj/pQndg9i0+2YtxUJ9yqij5q0P
lil1DL4lEsWNjI+4rNw9ZNPLZ1aEYdrGVcOCrs7o51BDSxMhYks0wLYaDPSMYco9 zIWVZgNt4dLoik3Q/CDDtw7u4IWPHN0vSNJRgeylUTMuF8Q5oVQgGcq6TTUYtrxp
H7u2m4yvhUBXi7aYNUk8+DFJHvlTk8NSmFQtwmCDEf/cPzV348PspoAoc5Ans7VA 76h/e8kFdxfif4fQkHVUB+kDvrGO7CUUjtgk+tMop5165BlkdZx3NpcPaAuk0ZP1
sGvHjil/f4S2e6ayU0sdSf7uedBPRkQ6bVkta2DUj7lDGLO739n6McuknhbwYlQj 9CtCDRnGBRCz5sjjailmjEGXagUci/nWD7qT02I+ZWzqwnHPYA75FBmIrb6qeUNm
zm6tkQ62v59nR2nhNbpL1csc/Ksfkdp6sJbclQPCA2TLgx+K/1lSSZd6E1aJf6St KsrAVsTNqb3o/iuLHaBAdEvncOQnV9ne9QAyp/i0KbLyTQ/zJaZEAIANY2GspRb3
dZGRUy1PjwRIy6TwrctswuIMSxCG7ZEtdE1TIWKATgcRfcbWWOLvglt6sarbCNon gsCnL0vr2knofMVQD618WByyiTt2fqTnbfb47Jadp9otsim6OVNCzxYxFKX3VpYr
IerhQ4dGMd1aXhU6O7/1PIcXf7dA4oqmyHe1BXSpoXcKft08GULpZWsVBftC4Ay/ ncZxuxn+FxIFMn2tyFC6Og+xYPe4eBtbb5rqaEZdmzwYW2FMP6U2b4YyLqpQE3hw
+vCGFIUtxhmkqP/1TXByZBdw2c4MITqNWrv6eJoxTg2wMuhdy8G26KL5RpNPyjrS miwo9ODNgtUpbVBrb5pRM9DVvsEVmibAEPV7uWzpPXFBCaLIlWSuHGtvWttEcQzS
XgGuJntCHnLofzyu3jgs1NsBwXm+S5keE+9rBT533W2fjtwmtGN8pOowc9tDN3gL UQFATosYmOKZjPcjPAFfr4avz2co17LZ38N98JQ5posfLFMlLMxqGfFcDZmQdxep
hx/Sgqmf/D33XVfnH5FlCKRsqEYwVplslfklgjDlDob2wKIjcUIjrbiWZ/9Du1Q= EGSR4dkO4xzzZ7ORcCdxhZaOtcB092kIJKtM9RCFegXo8g==
=18wd =LPni
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 0DB51A7E90AC6418B7DB83724D38970874850C33 fp: 0DB51A7E90AC6418B7DB83724D38970874850C33
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DZmNQj/lmIGsSAQdAHsFusAI1XmMWu8RvjcK2FAtiazaGxPq37xZLTGbd+3Aw hF4DxQtfVaqAjfQSAQdAL9rn+f5L3cPwmS+NM7vM5tR0VCDD/p+b43nFFhAnVQow
dcWsrkdYYYOpziOnzFPFl9+Jkw9SZmg19Y0gnr8x0D0EYGntreiIGae/amK2CIk6 XcSpJNehn1E4JmgY5ixYk5hysPoDTanHvytXKSSOJF8XpybUz1K1BF06iiCnq6X9
1GgBCQIQdrq8vRwktEfaOY2lw11yvcgxScxTUSnRekXDmrZFXoC0tOz9y5Hl/m1t 1GgBCQIQfTwPQePieWp4usWB7gkimOQ5KeSmMRQ8vqRTa9i5AXzWlGruP/i5OSHq
BaqNk5rB/ZaS1bxmWjnntOmamHYJkmmxxu90RbeHvRn/FPzaBOY8afaqHXVF/qV1 FAKhcdcihAt9jFwxsAymbmrpqWOTA/H7uu5385cRiCRvJUydmz1AjD+e9U96dYT2
IIfVAZBobrWuJA== Z9OHZM/x7057bQ==
=/l6/ =dZEu
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 73C2C9954D1BC94DC6682525D2FA233B52AEC75C fp: BF3D5CEA36DB58AAE1063D0BB341078652D87924
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQGMA6r2J+JSOMNuAQv+MiLJUpEczlb4dfa5VYkAsZqmuJEbM5JM4kzlCFuO0n28 wV4DZmNQj/lmIGsSAQdAMt1u6obZgLUjVDQFJ4cXDfUwzy+n9p+rZa/5DtAC+R8w
tfOdiQRY2q+l0s62gxUx9jkmDY6jWWnWXi+Pp34weEU0cOSY3WTPdQTmAcz0fL6G ChbOqargvUW+TPuA2KAOrH0m7QrzpUAXvk0grF5qewdTwvp9zRArCobkz/xwF6jS
SVJ8jf8gOLcL4/ubno1oITR5M8DL8G7vZlZ2eoiz0mGwFSJ/jvAWuHZmlCnEfew/ 0lEB/rra99F+Wp4c7IBque3HnyWbcNhw06BfK8jhmwjLcy/pNZkj93WYcvannZLJ
HvCcC0zDv+rYBrgyl547Z4werfXLoMlw0g9eayKTf6ZmDAveMx/9Sfj6SwtyiYtQ Lc93MffCPEK6eMXW4cFHT9BacyGTHKtvagwLPOo7yryKwTs=
BOq5f1Ek/LAxxm/l+XJQ4tQmNBLAbaSuJmAM+bPGYOcMnksMQQm2HfRyzOQCI9Xr =nYcx
ZPb1OsVhhbQcL6saTnxw5OTKLMnpHQpOqr4Gr1JhgdYZS8UhDAqEkSZCbeQ86Hae
PKRx7OE/WuvWuguSnliI7E9Gi5TLfgxV3kpBOXbq9tnOeLaTktOzC8i+KGT0oIul
XuulcQxU0UT8EcHhF+/+GyIKfWs9T2keTnFkw1rZOOaTsqGqmjYyKxw+akeKjsZO
x5q2H3OgEZH1otvL85Ng0l4BnOWYHPsbCvEcP0jUdX+Sni3Dvy6x5jAzCH9xJwx0
3Hg9zZR81o2T1wJQDQVA6DnY3lRGJlB3gZPH6XWPxB5Wdm0Ophjbo/SiTDPNWULA
BiMoMvZYRw33f7arpmx6
=4oXO
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 3511D1A5B7B2AC97BAE8AF3EE758168C000375CE fp: 73C2C9954D1BC94DC6682525D2FA233B52AEC75C
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DAQRCY74qADkSAQdA8jeFNe9adqFhTEZ/jQUrS05jrjIjNA8JIR9af7f3glMw wcDMAxSu/PO9GEkJAQv+KGOnoZBVSEuWqR+m1npSR59qdPU/XQpkfRKTKK1XQOo5
bUTI0kW9S2/oXS4TcDq+Gx20XuNru+OBbxqFkxqNy66Sy9xppEoRo0K5Wc3b/3sW 0IU+uAnqweIXaScnI5+Mf+k9QbVPUw00w5ot5JlXfupBL2dS/0ZE9a8iESEu/hIR
1GgBCQIQF0+VEd4kt27jo/QOsNMNhbBgO8MsdK1fps3tUcFR1N3xLB0gzr3diI39 d9FWSMGs2BwUlCVIlZPSz/p/+5NaxsckWKORDP8QBABHQ1c8bzq4yUWCt74gkjgc
U5AlQZzy0FB+A8RSNK3weRnFDXuysOC5znFrXvwpltqgtW6qzwG+0FzA7ClhTgFf oK2idCXqkvRaPe9ihiyq8fSWtKUPq84aSlQ2cVJMQ1C36xdbQi8Q4gQnTGr9Ncup
nYDREKmKCj3nig== qUbryHejG7Zd1lUtgUZDPVdHnuDck2OUjD6R6DOe4U8dH+5/aH8mk1u7iBoxjAw+
=hFH2 InWUubfQJzEwpBZ3bojfz8oWKoEpToln3sJGfnlb/ssPFhh+AiH0sBfRgqbSf5Jh
pCMDKN3X8sy53pJdcaENwSRbZ4LcgsgyR9XihG9ZxGgPhXpDzMxZ65pTrvDjz3Kp
UloSzEjSSrQNE+z5sYbbjRTNk8YOkVW6FpzU5gmKrnsOFLARd96fdAvgyI/9Etuu
g45uD4GnNrq/wd6DLN4y0lEBUGFCPdh/eLsgsss830UVtCs2lQPfj5C1Q3yxhxjP
Hae+f/+bTfpOepMrd8huxQ0tB8qKDW94mdsikowJewX+5wV5EdErQ/4G2YtJZTOA
oTE=
=3jwE
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A fp: 13E169CF5C35EF164628764AAA2EECBDE0B38CF7
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQGMA6N7K3Tfl3HGAQwAgl3vSd0O8NGsPosOI8XINunpcvG14pdPZvSN6iTf4gDY wcDMA8b/EJ6Mi55zAQv9GnVQNxIAnrBOPolTnJ46tHKs/Ny5QCn8i0pJ0cmj8LR3
+Vdx4ECXRuW47i7hEstPybzL+fTAQLmStWY3Bg+mFfhTTFARYfDChCGJxO+/YTZg l6eCrrvb5aEZRYV1DIMzP9BR9D6G0ShZBsqcBgpm3DgNjQDD1eWAAZxMuWMLMFlQ
2IFnO1sC5ioahxQqhrH1dPVimwERFF1LNmp50fbCoK8tYU7qeaeej1xiQeN1zw27 0KDG1myVgRNzGXP2cpiJHPJPcdXTd9aNntMDzc/xpHlfW2UXCmdNwl9Q0NrMHR1w
YcspHJMCTG1XxY7HTg1TM8a6LAqDxkQOBdJgdLKUMPpfifhsxNv7qSZuoWk4Y1z+ xjcf2UIg6BN3yjxUOxxUbDPw5cRWlIUiIPC52R6V8hHBzh1UUhdj06Hln4e1aVp7
iNa/5hTRao7GVZP8x8ctUKgo5sODjKVwL5o6dZ8SA3me6qFsZFu0bY8v1cix45mB Wpa4K9KJd2n6q9XkF9aRuYyGybOvnPJlL6OHaR9PgIfGCZ+pufI5AneQeahrc+EU
/23amvyvctLUoltdz9Hv/1aE6K1oHEKBBje5K/vaqb5GnL5yUsivf0cj9xAWdxvi /DkQZNILkBEW8hnwkrXGk53CnS7GQPg8s1kiab7nIuQNF21dpSA4RATMlESC3i0t
yMlJXd89ev71wrZzW0AU2uRLb8+ofaE6eJghv13vgt/NDDjv18JXUbl+LjjLYOTr BmTfI0HuIaZMxbnRvPSfQwGiMhf6ea+02QwTIjuN59lDuFyQBa3CwJXpiAAtFyyz
LBGcBmlgi/a21XODeOfEDWStKCvbI6zn1gJhOEZ2YejcraZqIfGS4kSoOqN1LoPH 9Lu+HAsnRmheK48PXtLkZ8ldNH2r/IYFjtjbANKKzn5HelmPWwLmHo3N4YIerKrj
pRu0hJNzUvgsWFMu+wCg1GgBCQIQ7VZkRhyPjn9HPKxzEfU1t2k2qFEIbo30j0CH znhdrY/9imhtA7CiC89Y0lEB6Y/cfSWKtoOLkx4RKknkQURvyJfAMjRhVVFxGZCc
faZEMLLC/+h0KiKo9bkPYb5cQFNkGk8ypOEMVWrq45KHDBnBz+3/fqjPS1VQ531j LerDo0Ofmm0z7ZgibYiL1W7Rv4TsnZXr1KDbSrJzD9PcSZt0rTQ9Rw7MpqBeHH/f
p4e13LzNoBRBABE2PCbnRQ7AgZENhbSbYA== /CI=
=gvDl =L8LE
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: BB333E772B60EC8A29E8DE641D6B8CC68E09BCA5 fp: 13D7771BDE5241293F3EDA442AB3335ECC93DDDC
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA5KoiSc3R+FfARAAtRnqnrjOC8C4l2lcHOzKXijm+hFEdiy3aLRdYaRaayJA wV4DAQRCY74qADkSAQdAERj1PfuanNLwdZgD+mojcIflbrh8NbXqU0kBicBH6SYw
9EJ40JAsDls0c16MOkSoqPy6wzYyxCGLMwMPFd8E5Obwsewo+VwL5x1OytYNkEtq 3ZBhzUo72iPSpfHOzk3uZhLw1gIxyEwIAfg35k+2GQUlIO2yFjNGMrNXEXnd2QKz
e9eLQJJ8Q78K7/S/jyOy9hrUKtOzzFYm54RDDTzC7jR9yVYhuD6fO5+OW4Ds/z3P 0lEBhmYkMPlKeRXHAbaq2jF72GoHss5LxBVi88L68QkXeUSlITa4dN/YLcpn1rIA
QCJFWPetjxpFdYPD7mmy7/lyS6glU2fPIxmrxBRRVx8kB6bkJ4mpUqCcbwHCq4UF 1DvGGEEyrRt5zbYkOZsMxXgbAtarBf/HxDB2nHKmKUo38GE=
LKIIrPB59CcK1nlOX+heRT4CHjd20ajmNB9ZgT40GswgUE17vosXwa2xQVb/HKtp =xzey
E9/nFWn8V/buaSWbnjvySMemR+f+NIACq6Bu/xJcpMvEINKB2S81D+cx914X2kwK
SycLc72yLPUy9Sa8rxVIZ8TbMUJxgCcVzUUog8legfb/zpVMOA/0/170f6eoCOkM
24GnZ4ih3tW+BPS1g60PnbuoSDLU5J1oM5WQ78cMgVSFItMZXHll0HvG8syMXbR/
f8zfArUj1EVGVTBoIb3EPCHeoV4tLF2gVgHnr9Y0bCgQV6vEOg0eGq44BRhEgJE8
TnQy0ET86A8IL+/aytq2zCmE06oIbxzMA++VQLUJYCnvA/rEH2Sqg1jRbLhwqYOq
KdZhu3aRPUQQVgAZnxj7TGaRqLMFOppgoYiSAE1+CEKrOafmpIrEp4OMAKe/37HS
XgGvDkCu6Hio8Ioc7Qe39vhRwYnYWY2pJ+RIoBuyIUE585FaYmi3pZSeupOCuJxe
RFbCC6clt/8xj4Wta88hJvqeUeBScgmsHAJDY2RTAyEk/Q5GomNeoWS9TVwH6W0=
=AnWt
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 57F93F2A6585CF2DF9A3B31F13B9F45E122698D5 fp: 0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A
- created_at: "2026-05-17T14:21:50Z" - created_at: "2025-02-26T16:39:44Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQGMAwTtVaE3mgdcAQwAwaZ+LZhADRQD6vORPKogRb5LHRGblK5NXO8TQbKJMmh3 wcFMA5KoiSc3R+FfAQ//WNYLuMOvDNX4ieMs8YwYFnti9ZBjuopwrPSMvNY+k+yt
qaGRZGdrhehlybgDI4uRg6OwIAGf/mEFMLJwBCraj+VEvxOAah/U2SHx6XwgjyQs AhAFN4DX2m5s76U2ILjyJbd2c2ZRUxa2Pmv2BjVhxjHt+Jkh1AznWCqX9BxcBlxd
znRZyKIsvA3cpK+6D264d/d5FsiCo/PLMN0qqk3fbQQgizFDnsIK2zLWYsujTNAX q8kQAp2ciznmYePrPnZAOQkyu8Ik1A5/W0W9shL2LAfjRuwcqeOGEhoVSsXRQdi3
x3kUpaaVFG2R0RPpy4xOYhUphTIVHLGMml8Xr6YLH+3Hx4rfUkIzJ0fJ+yPjBwkV knGTqbCF52MX1yN/Z/AU6jJwFUPz7aUzpkJwW2Y8vWV+ndiyjZjyu8jT3qJtlH2z
wh90GiVVHBxrRYnscQgS5j+ZtATMjVdrMHDww9PfjFx/MhUd35MdAVABbACVAdEu JlaTBBTH0GWtXtlY2v+W9szfL70IzJVaKciqY7y6G767i+jPYLFXVOgudsAAfnPe
UGdOZllx6P669hHoUOp4u4SqQwrNbLOdPFvPDOvze68kzFxwWnlgn5o2wrdlcUWR JMp0uvm6Hw1po9qgpoWGmiG8NPp8Sl4BCRQsk4oiddm/+34yfBDq+ra9hmeqiVan
L0mL4cqdlHahlxwbrRoiP1Pwiob0LCx5+Jf4DaWZqtuhdW2R5pZVyH8WgYM6xkhC 9z0oFnpBY18L8MVimwoeAJOoihuq2/8k3OlpJoqRkLV+ez6o65qoPd8rS17+iOqb
1IQ5Rb+22hmMtgfj7RtyvpnDaJhsa6TnUbX1IoBcO4uvUIwCs+EVjJwgRrC88E96 ZDQwmqUf8lgYI1Sfq9qwWk88UYgBnwhRmyw7eZuqeCoaKv4x605cIydgKfd25xr8
0PnVEiziSruqw859GJww1GgBCQIQ4GeGPwPH3IDoEK+rBbq1pNBMQKXEOAHqyfkg SeeuLzrWeXGQF3friqj2LujtTOAH34O5XkQVp0TKHXoVyL0wqgVPPIGBs14HOh3M
v8o8WKeijcy9NIj7FmIdkmVp9LYmwmg9qfYxfoXm+4QTl5032dROimv/KzH+3nE5 FQQH2knRmoQDARIzlN8+UCf29VVG73BxRG71XbZnVTL54mwDjBYYOW7T9A9DpBGK
E4nSznllWtjCbwFG+kLXRQuovX9eRdzOig== wo+8zzptoXc4bhIYCYz06mvuEyH3IMe2o4/MQ38fboU7Qsi3no9jqxRb/H6ye0PS
=8dwk UQGRIaDP3cKXh34JQLT6XTpuVDpDpVw/F5xy92VDDafvD1PiSiFhQzWD15zEw1tw
2QcLcJZI3pUGf5aV9HK+thjzZKMTOtDog02GkIblov1EWA==
=sR1k
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: D667348F310C57655FCE5D4EA689FF232FD681F0 fp: 57F93F2A6585CF2DF9A3B31F13B9F45E122698D5
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.12.2 version: 3.9.3

@ -25,7 +25,7 @@ mv .sops.yaml.tmp .sops.yaml
# define "fixture" # define "fixture"
repo_root="$(git rev-parse --show-toplevel)" repo_root="$(git rev-parse --show-toplevel)"
# --- # ---
function fn_test_create_sops_cfg_default(){ if [[ 1 -eq 1 ]]; then
>&2 echo -e "# ---\n# TEST: create sops cfg in default dir: ${repo_root}" >&2 echo -e "# ---\n# TEST: create sops cfg in default dir: ${repo_root}"
set -x set -x
rm "${PWD}/.sops.yaml" || : rm "${PWD}/.sops.yaml" || :
@ -39,10 +39,12 @@ function fn_test_create_sops_cfg_default(){
# enmesh: restore, since this particular one is checked in # enmesh: restore, since this particular one is checked in
git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1 git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1
rm "${repo_root}/.sops.yaml" rm "${repo_root}/.sops.yaml"
} else
>&2 echo "# INFO: skipping ...."
fi
# --- # ---
function fn_test_create_sops_cfg_dir_cwd(){ if [[ 1 -eq 1 ]]; then
>&2 echo -e "# ---\n# TEST: create sops cfg in curdir: ${PWD}" >&2 echo -e "# ---\n# TEST: create sops cfg in curdir: ${PWD}"
set -x set -x
# note: fail if for any reason sops config defined at top level; this repo should not have this! # note: fail if for any reason sops config defined at top level; this repo should not have this!
@ -57,10 +59,12 @@ function fn_test_create_sops_cfg_dir_cwd(){
# not necessary, all tracked in git # not necessary, all tracked in git
# enmesh: restore, since this particular one is checked in # enmesh: restore, since this particular one is checked in
git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1 git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1
} else
>&2 echo "# INFO: skipping ...."
fi
# --- # ---
function fn_test_create_sops_cfg_opts_complex_1(){ if [[ 1 -eq 1 ]]; then
>&2 echo -e "# ---\n# TEST: Full Args: specify path to each, also for secrets, mix specified and positional params" >&2 echo -e "# ---\n# TEST: Full Args: specify path to each, also for secrets, mix specified and positional params"
set -x set -x
../bin/update_sops.sh -k "${keys_dir}" -c "${sops_cfg_dir}" -s "${secrets_file}" "${secrets_file}" > /dev/null 2>&1 ../bin/update_sops.sh -k "${keys_dir}" -c "${sops_cfg_dir}" -s "${secrets_file}" "${secrets_file}" > /dev/null 2>&1
@ -69,43 +73,12 @@ function fn_test_create_sops_cfg_opts_complex_1(){
# not necessary, all tracked in git # not necessary, all tracked in git
# enmesh: restore, since this particular one is checked in # enmesh: restore, since this particular one is checked in
git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1 git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1
} else
>&2 echo "# INFO: skipping ...."
# --- fi
function fn_test_auto_find_secrets_files(){
>&2 echo -e "# ---\n# TEST: auto-find secrets files"
# SETUP
_tmp_mock_secrets_dir='mock_hierarchy'
_tmp_mock_secrets_filepath_1="${_tmp_mock_secrets_dir}/one/secrets.yaml"
mkdir -p "$(dirname "${_tmp_mock_secrets_filepath_1}")"
touch "${_tmp_mock_secrets_filepath_1}"
_tmp_mock_secrets_filepath_2='mock_hierarchy/Tw o/secrets.yaml'
mkdir -p "$(dirname "${_tmp_mock_secrets_filepath_2}")"
touch "${_tmp_mock_secrets_filepath_2}"
# RUN
# set -x
# suspend strict: check output for errors
set +e
# move 'set -x' within the sub-shell, otherwise all output dumped to tty
# ... bug: stderr still gets printed, not sure why. E.g. '# RUN: sops updatekeys mock_secrets.yaml'
_out="$(set -x; ../bin/update_sops.sh --find_secrets -s "${secrets_file}" 2>&1 )"
echo "$_out}"
# re-enable strict
set -e
set +x
grep "${_tmp_mock_secrets_filepath_1}" <<< "${_out}"
grep "${_tmp_mock_secrets_filepath_2}" <<< "${_out}"
grep "${secrets_file}" <<< "${_out}"
set -e
# TEARDOWN
set -x
rm -rf "${_tmp_mock_secrets_dir}"
# enmesh: restore, since this particular one is checked in
git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1
}
# --- # ---
function fn_test_expect_error_invalid_file(){ if [[ 1 -eq 1 ]]; then
>&2 echo -e "# ---\n# TEST: induce error: invalid file" >&2 echo -e "# ---\n# TEST: induce error: invalid file"
# dev note: ':' is a noop operator; could also just temporarily disable strict errors # dev note: ':' is a noop operator; could also just temporarily disable strict errors
set -x set -x
@ -115,33 +88,11 @@ function fn_test_expect_error_invalid_file(){
# not necessary, all tracked in git # not necessary, all tracked in git
# enmesh: restore, since this particular one is checked in # enmesh: restore, since this particular one is checked in
git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1 git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1
}
if [[ 1 -eq 1 ]]; then
fn_test_create_sops_cfg_default
else
>&2 echo "# INFO: skipping ...."
fi
if [[ 1 -eq 1 ]]; then
fn_test_create_sops_cfg_dir_cwd
else
>&2 echo "# INFO: skipping ...."
fi
if [[ 1 -eq 1 ]]; then
fn_test_create_sops_cfg_opts_complex_1
else
>&2 echo "# INFO: skipping ...."
fi
if [[ 1 -eq 1 ]]; then
fn_test_auto_find_secrets_files
else
>&2 echo "# INFO: skipping ...."
fi
if [[ 1 -eq 1 ]]; then
fn_test_expect_error_invalid_file
else else
>&2 echo "# INFO: skipping ...." >&2 echo "# INFO: skipping ...."
fi fi
# --- # ---
echo "TESTCASES PASSED" echo "TESTCASES PASSED"
exit 0 exit 0

@ -14,9 +14,6 @@ set -x
# within current dir: update .sops.yaml, update keys in encrypted file # within current dir: update .sops.yaml, update keys in encrypted file
../bin/update_sops.sh -c "${PWD}" "${secrets_file}" ../bin/update_sops.sh -c "${PWD}" "${secrets_file}"
# verify: dump secrets, GPG_TTY src: https://www.varokas.com/secrets-in-code-with-mozilla-sops/
GPG_TTY=$(tty) sops -d "${secrets_file}"
# Special Case: Add caveat header # Special Case: Add caveat header
cat <<EOM > .sops.yaml.tmp cat <<EOM > .sops.yaml.tmp
# PURPOSE: BLUEPRINT for .sops.yaml config # PURPOSE: BLUEPRINT for .sops.yaml config

Loading…
Cancel
Save