Compare commits

...
Sign in to create a new pull request.

15 commits
main ... main

Author SHA1 Message Date
708059a7b6
chore: ran deadnix 2025-02-15 00:32:05 +01:00
966fbde1e9
formatting 2025-02-15 00:31:05 +01:00
74c6cec7c6
rspamd: remove nixspam blocklist 2025-02-15 00:30:43 +01:00
00360fccc2
deploy new kpp version 2025-02-12 15:39:05 +01:00
edcba9dc85
updates 2025-02-04 2025-02-04 12:20:46 +01:00
Frieder Hannenheim
f1f330daab Neuer sharepic-generator. Keine Begrenzug auf Uninetz da keine SPD-Assets mehr 2025-02-03 19:13:19 +01:00
969ff27555
sharepic: limit to university nets 2025-02-02 19:59:42 +01:00
Frieder Hannenheim
839b00af20 add ssh key for frieder 2025-01-31 16:35:24 +01:00
Frieder Hannenheim
a8cb4d45ba update notenrechner to add disclaimer about correctness 2025-01-30 19:13:53 +01:00
7377c77952
sops: reencrypt secrets 2025-01-30 18:00:02 +01:00
Frieder Hannenheim
e9d1e22b43 update notenrechner to fix the package not building 2025-01-30 14:55:06 +01:00
Frieder Hannenheim
8b80988768 add sops key for Frieder Hannenheim 2025-01-30 13:33:51 +01:00
Frieder Hannenheim
a07d51bb56 Merge branch 'frieder.hannenheim-notenrechner' 2025-01-30 13:23:05 +01:00
Frieder Hannenheim
4782376b23 remove redundant forceSSL and enableACME from notenrechner.nix 2025-01-30 13:22:04 +01:00
Frieder Hannenheim
cca6385ce8 add notenrechner website 2025-01-30 13:10:44 +01:00
10 changed files with 212 additions and 167 deletions

View file

@ -10,6 +10,7 @@ keys:
- &joachim B1A16011B86BACB56ADB713DB712039D23133661 - &joachim B1A16011B86BACB56ADB713DB712039D23133661
- &jonasga FB44F0746DF25F0B24A2EAE586C8A257C3EC82AB - &jonasga FB44F0746DF25F0B24A2EAE586C8A257C3EC82AB
- &hendrik FBBFAC260D9283D1EF2397DD3CA65E9DD6EB319D - &hendrik FBBFAC260D9283D1EF2397DD3CA65E9DD6EB319D
- &frieder age1x76ajqw8w4l5vlkwt5s3flz5a5jq5qlxv7uppmnf8ckj9egh9ekqjclzt6
- &quitte age1wvdnprpnq2rcc4se3zpx2p267n0apxg2jucvlm93e3pfj439ephqh2506t - &quitte age1wvdnprpnq2rcc4se3zpx2p267n0apxg2jucvlm93e3pfj439ephqh2506t
- &tomate age18lwgjazaxujqgcc5j0gjllnykhtjn6p0q44jzrsk4au2a5k6nd9s77kd6d - &tomate age18lwgjazaxujqgcc5j0gjllnykhtjn6p0q44jzrsk4au2a5k6nd9s77kd6d
@ -26,6 +27,7 @@ creation_rules:
- *jonasga - *jonasga
- *hendrik - *hendrik
age: age:
- *frieder
- *quitte - *quitte
- path_regex: secrets/tomate\.yaml$ - path_regex: secrets/tomate\.yaml$
key_groups: key_groups:
@ -39,6 +41,7 @@ creation_rules:
- *jonasga - *jonasga
- *hendrik - *hendrik
age: age:
- *frieder
- *tomate - *tomate
- path_regex: secrets/admin\.yaml$ - path_regex: secrets/admin\.yaml$
key_groups: key_groups:
@ -51,3 +54,4 @@ creation_rules:
- *joachim - *joachim
- *jonasga - *jonasga
- *hendrik - *hendrik
- *frieder

81
flake.lock generated
View file

@ -78,7 +78,7 @@
}, },
"flake-utils_3": { "flake-utils_3": {
"inputs": { "inputs": {
"systems": "systems_4" "systems": "systems_5"
}, },
"locked": { "locked": {
"lastModified": 1681202837, "lastModified": 1681202837,
@ -101,11 +101,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1732530918, "lastModified": 1739371104,
"narHash": "sha256-O5cmb7xeIq1luKn9FbS3UP4aziP2UuBKARsq/w7CGqs=", "narHash": "sha256-k7RZrUCxPPV2htf5bSEGlailgMSXh0c5DTPY6uvB1QY=",
"owner": "fsr", "owner": "fsr",
"repo": "kpp", "repo": "kpp",
"rev": "b867b6b3d4c604c177e1866d2babc7ae5c0f6a9d", "rev": "c98d8003aaf7b8b085c674ce6d931cb6014a5c95",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -143,11 +143,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1737861961, "lastModified": 1738466368,
"narHash": "sha256-LIRtMvAwLGb8pBoamzgEF67oKlNPz4LuXiRPVZf+TpE=", "narHash": "sha256-PZhUjtvQZOH3PO0EYdTpQvcqkgkq1NkP2A6w9SPHYsk=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-index-database", "repo": "nix-index-database",
"rev": "79b7b8eae3243fc5aa9aad34ba6b9bbb2266f523", "rev": "46a8f5fc9552b776bfc5c5c96ea3bede33f68f52",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -174,11 +174,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1738023785, "lastModified": 1738574474,
"narHash": "sha256-BPHmb3fUwdHkonHyHi1+x89eXB3kA1jffIpwPVJIVys=", "narHash": "sha256-rvyfF49e/k6vkrRTV4ILrWd92W+nmBDfRYZgctOyolQ=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "2b4230bf03deb33103947e2528cac2ed516c5c89", "rev": "fecfeb86328381268e29e998ddd3ebc70bbd7f7c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -202,6 +202,27 @@
"type": "indirect" "type": "indirect"
} }
}, },
"notenrechner": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"utils": "utils"
},
"locked": {
"lastModified": 1738260727,
"narHash": "sha256-dqwlhg3L5SPoHSWbdI10EL0Vs/7BGW76h+q05laKyTA=",
"ref": "refs/heads/main",
"rev": "72c70b74f9216a3cb2913df91c8edf8516de1800",
"revCount": 9,
"type": "git",
"url": "https://git.ifsr.de/frieder.hannenheim/notenrechner.git"
},
"original": {
"type": "git",
"url": "https://git.ifsr.de/frieder.hannenheim/notenrechner.git"
}
},
"poetry2nix": { "poetry2nix": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_2", "flake-utils": "flake-utils_2",
@ -254,6 +275,7 @@
"kpp": "kpp", "kpp": "kpp",
"nix-index-database": "nix-index-database", "nix-index-database": "nix-index-database",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_2",
"notenrechner": "notenrechner",
"print-interface": "print-interface", "print-interface": "print-interface",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"vscode-server": "vscode-server" "vscode-server": "vscode-server"
@ -266,11 +288,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1737411508, "lastModified": 1738291974,
"narHash": "sha256-j9IdflJwRtqo9WpM0OfAZml47eBblUHGNQTe62OUqTw=", "narHash": "sha256-wkwYJc8cKmmQWUloyS9KwttBnja2ONRuJQDEsmef320=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "015d461c16678fc02a2f405eb453abb509d4e1d4", "rev": "4c1251904d8a08c86ac6bc0d72cc09975e89aef7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -338,6 +360,21 @@
"type": "github" "type": "github"
} }
}, },
"systems_5": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": { "treefmt-nix": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -360,6 +397,24 @@
"type": "github" "type": "github"
} }
}, },
"utils": {
"inputs": {
"systems": "systems_4"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"vscode-server": { "vscode-server": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_3", "flake-utils": "flake-utils_3",

View file

@ -14,6 +14,9 @@
ese-manual.url = "git+https://git.ifsr.de/ese/manual-website"; ese-manual.url = "git+https://git.ifsr.de/ese/manual-website";
ese-manual.inputs.nixpkgs.follows = "nixpkgs"; ese-manual.inputs.nixpkgs.follows = "nixpkgs";
vscode-server.url = "github:nix-community/nixos-vscode-server"; vscode-server.url = "github:nix-community/nixos-vscode-server";
notenrechner.url = "git+https://git.ifsr.de/frieder.hannenheim/notenrechner.git";
notenrechner.inputs.nixpkgs.follows = "nixpkgs";
course-management = { course-management = {
url = "github:fsr/course-management"; url = "github:fsr/course-management";

1
keys/ssh/frieder Normal file
View file

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH70IC7DaiGBYdftUhuOE9CatcdYj2L50eZfztQA+pVs fried@Frieders-Void-Laptop

View file

@ -1,4 +1,4 @@
{ config, pkgs, ... }: { config, ... }:
let let
domain = "kanboard.${config.networking.domain}"; domain = "kanboard.${config.networking.domain}";
domain_short = "kb.${config.networking.domain}"; domain_short = "kb.${config.networking.domain}";

View file

@ -12,5 +12,6 @@
./userdir.nix ./userdir.nix
./ftp.nix ./ftp.nix
./hyperilo.nix ./hyperilo.nix
./notenrechner.nix
]; ];
} }

View file

@ -0,0 +1,9 @@
{ config, specialArgs, ... }:
let
domain = "notenrechner.${config.networking.domain}";
in
{
services.nginx.virtualHosts."${domain}" = {
root = specialArgs.notenrechner.packages."x86_64-linux".default;
};
}

View file

@ -1,60 +1,14 @@
{ pkgs, config, lib, ... }: { pkgs, config, ... }:
let let
domain = "sharepic.${config.networking.domain}"; domain = "sharepic.${config.networking.domain}";
user = "sharepic";
group = "sharepic";
in in
{ {
users.users.${user} = { services.nginx.virtualHosts."${domain}" = {
group = group; root = pkgs.fetchFromGitHub {
isSystemUser = true; owner = "jannikmenzel";
}; repo = "iFSR-Sharepicgenerator";
users.groups.${group} = { }; rev = "ac721d5fff2dba1f046939a6d6532b1a8cfceba8";
hash = "sha256-of+N58TDt2BcbDVEriKn6rjQVl0GdV4ZMEblrdUutZk=";
services.phpfpm.pools.sharepic = {
user = "sharepic";
group = "sharepic";
settings = {
"listen.owner" = config.services.nginx.user;
"pm" = "dynamic";
"pm.max_children" = 32;
"pm.max_requests" = 500;
"pm.start_servers" = 2;
"pm.min_spare_servers" = 2;
"pm.max_spare_servers" = 5;
"php_admin_value[error_log]" = "stderr";
"php_admin_flag[log_errors]" = true;
"catch_workers_output" = true;
};
phpEnv."PATH" = lib.makeBinPath [ pkgs.php ];
};
services.nginx = {
enable = true;
virtualHosts."${domain}" = {
root = "/srv/web/sharepic";
extraConfig = ''
index index.php index.html;
'';
locations = {
"/" = {
tryFiles = "$uri $uri/ =404";
};
"~ \.php$" = {
extraConfig = ''
try_files $uri =404;
fastcgi_pass unix:${config.services.phpfpm.pools.sharepic.socket};
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
include ${pkgs.nginx}/conf/fastcgi_params;
include ${pkgs.nginx}/conf/fastcgi.conf;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
'';
};
"/data".return = "403";
};
}; };
}; };
} }

View file

@ -1,6 +1,7 @@
_final: prev: _final: prev:
let let
inherit (prev) fetchurl; inherit (prev) fetchurl;
inherit (prev) fetchpatch;
inherit (prev) callPackage; inherit (prev) callPackage;
in in
{ {
@ -40,4 +41,14 @@ in
./hedgedoc/0001-anonymous-uploads.patch ./hedgedoc/0001-anonymous-uploads.patch
]; ];
}); });
# patch to remove the nixspam blocklist. Remove after next rspamd release
rspamd = prev.rspamd.overrideAttrs ({ patches ? [ ], ... }: {
patches = patches ++ [
(fetchpatch {
url = "https://patch-diff.githubusercontent.com/raw/rspamd/rspamd/pull/5300.diff";
hash = "sha256-7zY+l5ADLWgPTTBNG/GxX23uX2OwQ33hyzSuokTLgqc=";
})
];
});
} }

View file

@ -42,151 +42,158 @@ sops:
azure_kv: [] azure_kv: []
hc_vault: [] hc_vault: []
age: age:
- recipient: age1x76ajqw8w4l5vlkwt5s3flz5a5jq5qlxv7uppmnf8ckj9egh9ekqjclzt6
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBJME1QdHA5ODcrT2FSdWdy
aFJ6cmFURmRhcVRLN0FIYmdOeVJYZ2Z4K0hFCmxVZlpBaVBFMk9CUU44eWk1b3ZS
MXo4eWZiLzJoSVJ4SVI3WTBFZFpjbXcKLS0tIGpsTStUS3ZBMTFUdGNzUTZ2MWxh
Qlc0a0taMytXbVdJTHRONmNoVDMrbHMKU3K84N5vO6O7ruBjWylgzzvURvTLa3gR
ldzSOAnWLeZo4IwXM9ic1j3DcmQDXSC7XFwLx6xzuTCsHJMhDOdS5g==
-----END AGE ENCRYPTED FILE-----
- recipient: age1wvdnprpnq2rcc4se3zpx2p267n0apxg2jucvlm93e3pfj439ephqh2506t - recipient: age1wvdnprpnq2rcc4se3zpx2p267n0apxg2jucvlm93e3pfj439ephqh2506t
enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2anFsRGRMaHNVaEhvUmsw YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBmKzZveDZTOEtHWERHZlZP
WnMzTU80Qyt2N0ZWaW5jTUVqM2owOXhLaWxJClMzQ0RPQktPRkFPWTYxTGY1T2xi cTdORFh2bFpMcmxQUzZ4ZmdNQ3NxWEt6NUgwClY2eXZxK1dkbVg3Z0NrOVZLeUM1
Z21McDNzdGxnSTl6RExBNitJTFlncDQKLS0tIEFsZkIwSDVhR0JuTlMycm93cEc3 TXlGYmFMUjJZNlU2WlFxcklIaHptMnMKLS0tIDFTRmVZaEVZK3hLK1RWa08vcWZ0
c2lzVGV6WnVQT1pOTTVwRUxlMWZobWsK0CrDl2ELoYOTrMt3uN3mgBSyaYqOQY4I d25xY3FKK2pJT01GcVo1bG9pYzJReGsKXNg/A0AVkk6YUuvxH4lPQGbSk2IdkeDG
vBK12PV9FR9GFpKN4kGB03PZ0gV0N1zlcCHpnPCUuHwbCvvF2+vCag== OQ7H3HCdMYSyJ/pRIrJwY+Mq9SbbIVF/zmsxbg8pl0RwFalQpCV0JA==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2024-10-13T20:49:09Z" lastmodified: "2024-10-13T20:49:09Z"
mac: ENC[AES256_GCM,data:xU5qqNX9M4ouWfimodb27Xvvi1F7wDJ946fJcP1ADi181/FLQ+kbKPm8QgPw9bDEJfBG4KculfplErNqzGZIqiL+0EDZVeHktRFq+1ojtRBXkpyWDalqV1nOlWGZ0ov/BjW3z0TA23Wb2K5JFjnR7MBRIPPs/CRFB7ke7khD9Og=,iv:fYe82vVtQn/BATRRWDvPmZ9PCKx5f3Xk4uYHP9woY/s=,tag:ktvyedUk0wOJ0tDvmBS64A==,type:str] mac: ENC[AES256_GCM,data:xU5qqNX9M4ouWfimodb27Xvvi1F7wDJ946fJcP1ADi181/FLQ+kbKPm8QgPw9bDEJfBG4KculfplErNqzGZIqiL+0EDZVeHktRFq+1ojtRBXkpyWDalqV1nOlWGZ0ov/BjW3z0TA23Wb2K5JFjnR7MBRIPPs/CRFB7ke7khD9Og=,iv:fYe82vVtQn/BATRRWDvPmZ9PCKx5f3Xk4uYHP9woY/s=,tag:ktvyedUk0wOJ0tDvmBS64A==,type:str]
pgp: pgp:
- created_at: "2024-02-29T15:23:23Z" - created_at: "2025-01-30T16:59:31Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DntlvaG5T7wcSAQdAq8HJ1VopKhShChQAnq9ETU308YAZqOojMA1Plpb2thMw hF4DntlvaG5T7wcSAQdAc4V+guwi1dl8ELb8QNzotAu+SvIribVJ9I+JhzZvlkEw
i/fon3Dt/odw8jj9sbIUVqImWy7K6FqEiAkIWN6Sq6F8raA1ohc+AmVHos1pHK5z 7iHJltL6yj4IhVCYKMOmIDYUYVKw/kmZdW8cUnDTsaGjfDgLw1Uu6SZXYZwr7/u2
0lwBHKNB7pt1h8LIv3GYqPUaz+yPhYyCk5PQqVemJSvMlilOjfkaIHHDV7VNEsVx 0lwBlW5gV0st8QPrpmFRVHPmtc7YcngIfQ8i0MPZPLxeD9O381qmD3AMG18SkgIF
kwZSaNij15cytLHY+iJGkChUqlTdwmxWRIW3Fa0FEe9OZzSj0fkS60m9TAug3w== nAiqxAdt9TmACJ41JRqOVGAfLzTjTLHG2HQLrwNmgby5TBXZgxvZhdqvLCCD4Q==
=EMPz =k4X6
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: B8E1727497FC48AA14158BDF947F769D7B95EC2B fp: B8E1727497FC48AA14158BDF947F769D7B95EC2B
- created_at: "2024-02-29T15:23:23Z" - created_at: "2025-01-30T16:59:31Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA/YLzOYaRIJJAQ//RaAlgiR0nVZYWrN+aVgYIJsW8vz2ZMREcvONe++DF7XV hQIMA/YLzOYaRIJJARAAub2pfnT2qB/tPwKCwPhOnsfvOjYze76a/Kvwk7E0jo7T
NOKkI7fua1jag6NWGQ9hzCEXQsoiQjL8CpaOSN9fJmnsmQoNv3vOLoeArLnPI6np xcq3Vci19gJPyYXO0gKMXQj0gEz3DuQiHoumqJHdg0oCNBeUYLk6XUSOfRiCqe/l
OBwOLQu2KgIcHCP48qfJ5idIV90UNoABro3MsbKDQAnXES+Eco7YflQVlesgEfau RNG06RpSk4r7pmqWuR6EOwt/w6RkH/PAka5C+yIXmjtqJq5VOKm26XKC4NJ6L73m
oxKnZvGcOhxigQM3DobM1/keNnCuE3wyK5hVKV28VD/TNozZIj1MyoXpfzjzSgne Xk2YJ5R0jajaZLy5pHLHj9HovemVfhHh3vnO9aaGRfGq0OpBsNND4rygg0IqxZpo
A80+/uLj1r5eg1l5nDAdEtOfvxf+eCCEom3oh2uRKK5HsRUySSE7tNRGNnn8QsWy bh0lHnNnWLYZoJv4L5EhfdmqZzbATkn1+kb2V9/ZaGyRV84K6KxGoLKPjy5Qsz1p
fUy+/95fOasyHRtr/cNfhZrly9VcavAhR4WYWU/LJ0pOYT1WtxMG3U4HGswiT2G2 +9p2BWKZRCOy6tH3qKsjYHyZa6tWU+dBaOZacSPh2tpum0+vWIVjRMBTaEhYdsNR
4ElM1BvdV/TlTTd3G+XhzyLK182w7Lz0CpNfpI9tgA6iIDHFiWL+KjF9Cy/VbidB ChyhImIjoX7jXncMdxiSW9KSXpuKC0qqqBEXhankkPhE8ADcjk7Iya0WZE3OZrAy
B4h3bMOSw3YeESQFRG9y91QQreT8OOfkI58taiKM5J1yCNKGu7F3DEQxQm0/wHBP YAUR3SOOf5aDDfx2T3XT5tc2VQOM5MFOgqkTqG5VXGzO40HJDET9eHqT3/GZxgZg
xMNZGu3nZGL05QgqFw1lw4YeQlSQJC81bQZMSaBB+7KEcU2oXH8pKVHerKHwieZR 5GpMl0NXdn00dfsifPxs7g0mv3Z4T4hoIj3N1wde6XI0t+t3Bdx7KizlJpAPoB7c
Kd7uD1ounFp5QD33Xc9Ebqin9dIOMyM8QtMsi6fD4ofwb7riRcBM82EF2slE8Q6o r8orobQz2DUz7gq0ccqEXe9p3mB87Mbv7ln0sYp7jOMpv/0iC7zJvcqGXn19OTaw
u2VuTj0mlsG75EnLyrQ9AFLPAPtR+qS6R+/JaZqgRUxk0xswGet8GApA2oou38XS OLhUuk/PF38DWBC8wshZ/yZmkLmg1MokuDUVwLA/QA32gszuaDDNWW/mTgOUCa3S
XAE5sEQTEGD6SD34U0BHRNrPLbqKNcZXccwukZ9er90p2NzyE+hoxKfQFhocnpdv XAFezl/NfryxsrDi+ftzElun8hSUFvxYGkhihWiWvBfHudA5OHhRuDWvxOY5s9Xv
j86MWn4nAcZYY75Vyg5AxaS60/R48WvzfEp0nVd6Zukd/05AV2kBMVJp9WZw CEqvcgLxwm/7GrDE2LJ5ARMOyAeicKXO0iCJo4qzMb0FnphXVbt02Si4oIFv
=Nzjo =kfjO
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 91EBE87016391323642A6803B966009D57E69CC6 fp: 91EBE87016391323642A6803B966009D57E69CC6
- created_at: "2024-02-29T15:23:23Z" - created_at: "2025-01-30T16:59:31Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA8uqUsBLHj6XARAAiGzDHGIs1rA3EMCBHY8ajWMJ5XQeLJBU6iZHlCijLqLf hQIMA8uqUsBLHj6XAQ//ekvxqmiiCP7ZmXEqudwlPrrmEDOTmq0SS1hHPHK0wTiz
nnGUwVj1fWXj0Gh+cQV28YMaQL7KPUbKBswhqRgYu4uCFdyC+ipQ2aC5OwUz1t+y N3hw4c/nr8WEMby5xpzUhmxxFSp8Uysta1m6DqU3Z67oVZobkdUOwkZO15lics2D
cbX3jMifiVpDVanYwukb/gC4O3F6aY99ezEo7RJNkwBO730DsPadUZ3S5i7IlC5+ NqsU6UvmPdbJsAKJqTtrLjO65pN31UZhBEhnQj5IkGV+dl0Qgrazh3r8hr5t1oTp
5dd6eIzlt72fBC9QceSi2cAiiP57WmKC1bHLyCR7LXNN3719QzXQsjxVBvwYpD4d HYAOGQLkn9GhQEXKh328ks5KK5glQJWC4v1WToxty//lz5JJn5WNWM8aER/fQV+j
dF5lgdDMNi4xgjQ03UawHjp3TbsqXIw6F+/Wx6CEXo6XSCcOLIdrOVJNirocw3sO QizCuDalgNixmg22Q/+c8uFEfsMpbU2MnrbHXAeZAWqKA9SfEBl5YOO8rce7PlA6
lg1tjfvqOnZbVNjh51Txl6IFfdffx37qgQjx9O1dxNod3ORa7aO74gAnd3oZyOUq TS3R/MQ8zFck4BtLh8KjXMAxmgSuyKRlNjoRccjfGeruYrwt+Z4Sl9Ou+A9qdWmq
FngRxTqu2yvzonbGGRNT5gMk9QZNqCHOHjp4NudpwPuLFnwrvt+jw8XVrGrMYMkA 9Y9OLo6CIbSZ31fBekpyR6gZewta18tmLrn4U1WVaoP+SY9cfMx3DHyThIPah/ek
P/gOc3EXrCKr25yKE+dA8l3ikzd8wnPago2Adm/Xt34J4bIL27QKml3+g/gVnW6i y+qt/ZN+ZIMIVy1M+YKrAgNitk7W27z6WKh0Ewb82K3GZOwHpfsieQfChbKNBBWo
In59tWMQ5lxnD9nXA1jY8RccwEZHvI74+AkQNa3t9miA4bDER7n/KyF+XbxePI3G u+Kk8gh/NHwcUS0GsPx98XlZe/Cf8k3JajRbuQ1PZ0j0wYz7DwAMGsjIZtHHJGub
qta9fCpb2a4EmsBm8JGtFnD7/Dek5UVcOjnrPxG2yMMAxwv7ZjFT/IeqoEb5yL+D DEPdowqw2cj9766sx+4orD1jhhlkVhoPWhIMbD3QAD3ckjy7t5L3MrSwxBHb0hWF
opB002q0UJP01RVBeqoetLNhMX1R8TN55oetpyWkPECuwCKi0Pbqdqe+qWR0UKHU Nv5cIUIJY77SGQw+gtjWfWHpXASq4UkFJTqmHCLoGK+eHnHKoM27ocgNHhynSV/S
ZgEJAhBHH/fM4ZUeqi5Z9B7WvAFj+95g7Jlgtw8nqm9C7JsvDGQ7LxkQ7OJr691U XAFvsambQ4r+lNCylsQQYjJBRnuoMRzx4Sb87nrmFq11WdRmqOko2oL++jQfZIes
jhO60x3CF8SOR9E0A4Y/iVAVQQleVES5+xC0KpVY3YacRHi4HR39v7Lg5cPYIOCT bkcopFv+pQB1Nw5LF2XQFHh3QpbygSyjEt9Gk/8l9SNURIw9905T2DU+9Ois
c3NiN6iiTg== =8So1
=Af2X
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: F8634A1CFF7D61608503A70B24363525EA0E8A99 fp: F8634A1CFF7D61608503A70B24363525EA0E8A99
- created_at: "2024-02-29T15:23:23Z" - created_at: "2025-01-30T16:59:31Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMAzUXo8ZPJwGLAQ//QLCUOMTptOAa+Ol+lB6ijB/iRzQoDs6LW/GvH2mbeV17 hQIMAzUXo8ZPJwGLARAAjYSSQojpC9LhJGIm/YbtUotpqqhMvZbmudhuNYFrLR3i
PBpFge3SYObBAZRZfF6x2PAuBNIAptckJxQ+bw/BoxQWDUI6Bsl0lSxu0eC+e5Z+ eDwAmjcnMP1xDk8iK45Vln0tPTtrS4WZFtpRar3a2jsGcjrTfg9zMDGCDT3cGsCZ
Zx7GOIqUYDuRXZ9NmFA3VeD/3PV4SuveazM6bOwMmlbfxeh+EBiSa7F79cl10pb4 2Dz1lU2tqa4r4LaaAzEU8Kg7K6jTR9tnFcsV3LYYUo/l6/xi1L9MYSq/BFGfPFTH
ZbpOuxqvHb52/jZ0Lsny+MVycgh5YyWyLSl1nO9Uc9zVIWDyygA//UevEgFkr/fp ywhn4oU7c+bFwFwZpUv09Ybot6UeGn42h1AUS4w5yCHPXO3SD+KhXnQ4hgD1kvBH
kUagX164Rmvaxc37fcvER+TxBKTm1SUFc82MB2sC4VEWb6RylpWWrbyEquJOW0/K IN6WZq8TF8PC8H8cwgpkLMr9kZVnrE6y0Xq6q0D9U4co1K4dBZ8irCIanDzeS+0T
Jhw6kFnQ42THB6wSCuZw2HuHzZuXOzQLzJqq8l5p43sTUxiyCGQxtNDE47V32YqR azlNOleCEw+TXmlWIvNULzFVwf/smzh7KmYULeNF3loboy0T8lcxkPJ16un4+ahW
2sEZLltwPLpgmzmPSflDE4GgYOP7rhOJ50bpqBk9yArzCziB3g27/QSLhGak9u6y YVTviGRyX2Tci8DIs+lZ6Ucwo9GHNtN0gsushsZ48jh14pt2Ct5BSP3ZauswJPU5
b39NdyKA48tXP7TQIWkPFBLWlHWnjWHps2tbNPLaq6CM/tA811Nq+XKBs0/eDeZV q3EV0l+ZSLEaFws7jT8A86CX9NoKmwX+v7DBf9TiGZj478mZBAo7RotcZAG4oV87
+DkX4BFmdvV2k3gq2juqWkeHLcHRyIIC8cHDVTVEL9TBP8GyzCIxhU+q3Dnkffnd uq0oQUhRmhVq7ELUZK+0a6UoPKwa3RukXl9lOuOAui4IVhqREY9dR07L/NQxu/s/
g60olZanFfsVNpg8kFqAN5OeLIHtCxqXzj+qs8QgD5YMUIOuwvkngbyHpWv8vBhi zM53IjKWe4WiGm2TWJAZh5zvfBwB/RfV6glw+XVt/XoySoYFZ91Pb7kvTr9w+nR6
GSIYB+bIBRxJPIc9ofmXv3S4R128NGIKq06K/P4Odnt+8iy/Q00CNYW75zobg3TS xcC9KxaBv91WRm46G+WWePnMQ2O953LmtF0eq3VTdXwK5zlIB3jC2aVpnLexXYXS
XAHD6cnvUQILTDtFLsTZw8rcmHI9ls8L+yHmTilEo7jrsK7DUUjgQlLULZlBE5Hc XAGn4ml/bRr8q9TFUiirpjY9P0sd7nZZtFQVUHCqdr4W+fuumuxRCoekEjh14PeA
vGQ3KEop1AdG+K4try/OSaQPY2dYtLH3mqGlmmaID7fJQiTnWJNpTIgIHynO rFCsW+GmZzH5S+aHiVxJuO8694KWO1QPBwr4EX1qooxTDzO+bUpyTSStg4Mm
=5/0t =zNA+
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 116987A8DD3F78FF8601BF4DB95E8FE6B11C4D09 fp: 116987A8DD3F78FF8601BF4DB95E8FE6B11C4D09
- created_at: "2024-02-29T15:23:23Z" - created_at: "2025-01-30T16:59:31Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA30JDs8MiK29ARAAjlskdt3CZzDk9JflbhgpSgGd+cad6SkaG449uPV+TLfL hQIMA30JDs8MiK29AQ/7B8fkSIuLnoYLnznZwUyyZnWJ4bmLRHpLQxKGzg8xBb+R
lcAG066sYMbMgzZn2D4AZCXb2mcU/gz9Kdo/MBVL8G3TN+M1yMxqOJm8xLQ02HHz 4RSA2NJNqJ0nMXfok57jyHhevv19Sst2yKhmMWdT4mRaPs4HfSf/WfQDEbTKR3sa
VMuSTiwLyj1G+dr161O+PEiNQMqq9YNxGg7Oi8b0T3hylcHFGKQ8Ji37hUmOlvfc Xd0mytFd9UFgTb0iLwGnb5qW5WhDJZ2b0lHQaZTwmvCzDjv7WpIzxPlmla9dZfqx
EuYjd2j6udarLYLDcq5gxYhvlfCJm9WMljrLYC5IatgWF/KgLkFVpy4aa2aYtlxP vPBP6VRlr3Dc7nh/Aqbs7p3Q0kuIoEH/W8ne/hB8lxGTg9JpmTxp69hbSFuAZjTt
mwbea4PqUCznhvUEsD7ucc8fOOPiYD8aJypEG7NxyJSaytdL6yjMTDQAOWRq5dGP NFioUfL0dzmTBb0bP47UTTvdZnbZyL9+bEvluiNL0Yfygw3ZRUVRWMtoq5fpkaJ9
0NcF61r2P8gGDfxk/iCf9vJR/IzM9JgCnlwbiAWx0HKCbkScf/j87Lb7DK2kmY/W ygU/uXPiprWUcZDZPClIof5mnJlvQHoXg84RMfdeFjIZj6HultAJbxVYYr/XxyNh
fJsjwyVpr5X/OHcDEW1Bc8dx2mU5Dc27tpVSuigv/uXLk+H6RQjfMwgE6eViX4ve 5VGOE8o7+eFK/YYWi0p62CNoojON78ZG3egN98QNf+mZ8+F0JkyG7FB4KQG52Oav
rmMw3J+Pnd/eRO7ELQa1D8ujkwOLjSSl/KEwV+BjtQvo1E5NuVxn39o3dblvBY4Y 94qvYn6pJVwQsDU9K6ADfd1TStiZGjFk4k+gBIq6w3uzdn/SFlCwge90Vp5528jX
Lkj9wG5G6N8sUZQt2nQkGR9mIP89CxOFFaiXrCH9VNSO7hyuVQXIb7xED5kWA6KT fFtmJg4BjPmffDMVigz5s/J1+4NoJJdxfdIHKWt59yt1myBGj8HTYDsDJxkrcSO+
eJPvTnx3kzKb7XXW3hOXV3dB7c3Dgjpkp6TyqpWoXxLoMYzeJE1MpnlABxG++oyP TzZZbQSvUZDBqZVdqTQs1R2D4Q/ig8u400v0KluJz2BV5h1mYt97yflaiQeceRRX
AydJ7hRSErm6+3PsslObohW3cuNO7fhurkobd6lhUkOtTyN80n2RqYUWYJcG7uXS WJ6lOQmQq1M4GIXOybeKLRX7wJ7V8AU3FmyDfRhtA8sn38qhnqXYHxQnyYuxIyrS
XAGy4OMGwQJSy4g+2bmNiwCHvnZPSuuF616G9g2+TyYtcL9v2BNYZyt7LAe6MabH XAFcNhhdEXGoTgHy8WmXVI0e2kU+/yjWrNKigZHGMuRBGgpd20CyfhPCH0NsB4dm
IPthrl605mLgmC1Af6hJAXQkLuAWVxN4XIq8PGm4ss3vTqgVLLGMF2ODsHqP Mj6JuLN34Vg9oNyzKYSGBk2MBXCwr/dOkZONN+KQJaR4sYLDARt+9TkJTPXN
=zFMG =acPX
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: BF37903AE6FD294C4C674EE24472A20091BFA792 fp: BF37903AE6FD294C4C674EE24472A20091BFA792
- created_at: "2024-02-29T15:23:23Z" - created_at: "2025-01-30T16:59:31Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DNffZWjBmO5ASAQdA6hgR8rEHwDyrs8e89euwZL1J7Ul/1XKJVGSQHSgAAgEw hF4DNffZWjBmO5ASAQdAxsxPOk9ZxisW5ResmyYS/CEL5dbBvqGeqRDCnht403Mw
1shc8TrDXMt9NveygpzlbDJc9pYUg2bKn+rgpS853Cx+MqYQBeu5SMpxpiZrr8J6 JLPggEsyb4JXQU/IEQKNuUHQkyoX1+1agn9TRtZ23YqqgtrDE5B/X21UVezSK86r
1GYBCQIQeafELm9z2HZo0mwujkbcxPfrPX8vUzzE/EL6EDwfPGDL6HUAyHnQC7hc 0lwByKvO6GBDcnWZ/z8aF3ELpFcoWjHS5ncev3Vw62FCKQj7TMuRPJPfjthstYC+
dCK6qK5OZNkpFGYqwUuPeDQwwwmdd1qNSD1Fcg+SuJ64vw4BAlX5iT1JyVqgTRI4 3maVwjfp0VaTKMF7lk7+Us/XbAnse7nFAjqqQqkrdFXgFrfEw+8arT8LEHTjpA==
Tz3Bpkdhphw= =EL+l
=f1SN
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: B1A16011B86BACB56ADB713DB712039D23133661 fp: B1A16011B86BACB56ADB713DB712039D23133661
- created_at: "2024-02-29T15:23:23Z" - created_at: "2025-01-30T16:59:31Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA1tId/HHLgxAARAAkHey4n6G1FuZMQpZ6Jo/o27mzuqsRwj5+kS14+WVm8Xm hQIMA1tId/HHLgxAAQ//bTyIxfNjxe65w5GM4Czgv07La7xT/ORscd1vhHc309Qc
BZ+DEMIbV/mCBBsIZKHrkrM1ml+Mul3pUHkTfo92n0dHjKaRKNLplbhyXMAavQnY oBPj7Vb0dhfNcc2z44WDlnLPoU3gUTLkE3oj+X21pMmIQuJvwHLxOV07JayTGeVB
MpcYv0OTR3/ZlbtQXsDT691rBGtAXoI5dwX9lRGUN7W0TzjZ91O+mLLloEYdmHuD s/880mFfMqSKnK9xnFkcXnu7aIiYOs4NxwwA+U5l009Mj96qjuX/3X47DRg3gWta
y2b36TsYmV0tq7e/T1xQn2cy7SAB0OUmAlL+W7/18P7NdJxMtBPoPDoRgcXZneZq YYHUX3eqlEXSTpi+iYGK44izDsynJiFLaCIeGVGm6XGsBmIpLQQc2++QozjYYLI2
GxLRiTPgCeXaN6OzfsNxQrWv0kVh0ob95Grp1/J7CPqh+iEf6IROyHpD4/Yc41ih 714aAyVOghZA0m/Egc83Yp+EsJq2WBolgTaXp954OBz8D6pRDj986p+LrHCDEQy2
FJLU3sameMn+PlelRqL2MhctYPjgqFnLB/2ILaG2yNMOM7MiMZY+WW+LjojYgAjS U1htRnO5yLSk6nOwBtDiji4piCMki3VDlOZgMTyjJhLloQ5uou6q8uB53Zof8esk
/s0aBgxBVyR/r22fDsDISbwKkmSiubZcYStwP4WmlMCDYY6nLIxJC1Sel6IRqqGD 42PQspqvvhI3DlmBIQnJCpk/mJEsOmq3bpTDsVKARIs+nnSpwJkb7K2Jq4cB0YkL
QzPiG0lwK4llx9vdDK5IKqFyu+Z89ctVHRntBtDBqWM1z8O/5R+HiDwy3VDkDfH/ EjZNDUUCliDPxExrEyNANB5fV18fqSGUuLYAwreaV1mctXBYSPO3RX4cByt+Xvhb
tuF56xvhVsyEJSe85t89RUDpv9aTq0YxjWBKhCOcP1bWOLzwmaP/Lldo5QUZ3GnP cQ5ePevU25ZBTeXhvf8DjdlxONgl9vF14EyJgbcOA6lwYUZKVyP1OnzrcGprIUww
lDP3FjsRld3upKBQ4UntcChjDjjxWVTIbc07gIDbel4JnNvv/o4r+NpXhiisnXgl lYFsyLbiNo1qLSRy1IJh2OCN10B0+XSLyF7HeUPH+2nsf3LksArJ2C3PvhDGVhpn
siOLAtCdFudfRscSDxhmyBzRmmMe3sKbi+ezxOuepThXaXYvyUk2D8GZg0mLF1HS 08Zyf/90JOXeK8cAilW5HYvhgegVA7JtpUomYBgZE3kWGt6zRIRHH7NeiOIMXQ3S
XAGycxm5KP86z5gREvArW26HbIxNlfUpTIoIKgmX3nWhj62Og5VmBYLcMARxVzut XAFzrgrzDGUFUNd01Kl730ZvbxHvvkZcPf8jc6IL3vHvew3mMAwoZOXnlspwADA9
Fu8ukgtgmIQKx8O2OLnmiO3rLvY2xPS5DUOgmYjfPqcxFkI/q32L2OXH3ZJY gH90i9J9ud12EZ3H+kGtVsz9wVH3hGoT9J//laoImkeT+Cx4o6Vi4sqFvSmm
=KFx1 =F/0J
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: FB44F0746DF25F0B24A2EAE586C8A257C3EC82AB fp: FB44F0746DF25F0B24A2EAE586C8A257C3EC82AB
- created_at: "2024-02-29T15:23:23Z" - created_at: "2025-01-30T16:59:31Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4Da5T//DC6DJkSAQdAyVvnKDj+KjtF0mEhf/QXb8dwIZPjPr5CAcvZvJhSThgw hF4Da5T//DC6DJkSAQdAVIeAdew4oAcgVSZQppDTostppwh+tjE6IQMzOfDk5FAw
J0bpP5IAu6LRp+D8C5SnMjaN1eNKX2McFcM3PVsGyCiAEihHKRD91J5xQ4Uc4Tea v0Tka35Ol3RdQ8cJGjQohtkxpPMFCeq556FusOxzVWV7blwFlIR1UOd8QlRG7rw8
0lwBkk7/c9S0KXiKM8pzqRMuimVOs9DMXqxbEKc2BvM7hmKJJfAYE/dvRxNayW4j 0lwBUg97NdpoVdVDZrJfnZHQ+GAsfyOZrU8DbyEU8rcf83ShNiY9WvyFKfZJPo/N
Qh7px98tsMsSJCeaj5zqa89aBl8UOQmBYdsjby3BRbOoHNE2ulKe4m4HcV3IpQ== 8ZA/Iqt8JLhRYCIPAtKWuc501ziHjTh3mdWjE++DP4b9/IO1NbM1mtpnjhKIUg==
=Rdl0 =aCH5
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: FBBFAC260D9283D1EF2397DD3CA65E9DD6EB319D fp: FBBFAC260D9283D1EF2397DD3CA65E9DD6EB319D
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted