rcourtman
052e344e1b
Add Kubernetes RBAC inventory to the agent + canonical + UI
...
Closes the only API-coverage gap from the Docker / Kubernetes IA
maturity review: Roles, ClusterRoles, RoleBindings, and
ClusterRoleBindings now flow from the Kubernetes agent through the
canonical resource registry into the Kubernetes platform-page
Configuration tab.
Agent: pkg/agents/kubernetes/report.go gains four new report struct
types that carry summary counts plus subject-kind sets; individual
subject names and full PolicyRule contents are deliberately omitted
so Pulse stays a "what permissions exist where" surface, not an RBAC
enumeration tool. internal/kubernetesagent/agent.go gains four
collectors that call rbacv1.RoleList/ClusterRoleList/etc. through the
existing runKubernetesCallWithRetry wrapper, matching the
ServiceAccount collector's RBAC-forbidden retry pattern.
Canonical: internal/models mirrors with NormalizeCollections coverage;
convert* funcs in internal/monitoring/kubernetes_agents.go translate
agent report -> model; ResourceTypeK8sRole / K8sClusterRole /
K8sRoleBinding / K8sClusterRoleBinding join the canonical type set;
registry ingest* + adapter resourceFrom* functions emit one Resource
per RBAC object with ruleCount / roleKind / roleName / subjectCount /
subjectKinds / aggregationLabels on the K8s meta; search mapping in
internal/api/resources.go and the privacy allow-list in
internal/api/org_handlers.go pick up the four new type tokens; the
K8s privacy category in unifiedresources/policy_metadata.go classifies
them like the rest of K8s.
Frontend: ResourceType union + ResourceKubernetesMeta carry the new
kinds and RBAC summary fields; KubernetesPageSurface query asks for
them; the page model buckets them into the Configuration group;
KubernetesConfigTable renders Role / ClusterRole rule counts and the
aggregated flag, plus RoleBinding / ClusterRoleBinding role refs and
"N subjects · Kind1, Kind2 +overflow" subject summaries.
Curated demo seeds per-namespace Roles + RoleBindings plus an
aggregated ClusterRole + ClusterRoleBinding for pulse-demo-monitoring
in each cluster so the Configuration tab renders 18 RBAC rows across
the three demo clusters.
Contracts updated for the canonical-shape guard: monitoring,
api-contracts, unified-resources, frontend-primitives,
organization-settings (canonical) plus agent-lifecycle and
storage-recovery (dependent via Extension Points). Verification
proofs extended: kubernetes_registry_test.go, kubernetes_agents_test.go,
agent_inventory_test.go (new TestCollectRBACInventoryReportsSummaryCountsOnly
that pins the subject-name-omission contract), demo_scenarios_test.go,
adapter_coverage_test.go, contract_test.go, org_handlers_test.go,
resourceIdentity.test.ts, reportingResourceTypes.test.ts,
KubernetesConfigTable.test.tsx, and the
subsystem_lookup_test.py line-anchor bumps that the contract edits
shifted (api-contracts 246 -> 253, organization-settings 92 -> 93).
Verified:
- go build ./internal/... ./cmd/... clean
- go test ./internal/unifiedresources/..., ./internal/mock/...,
./internal/kubernetesagent/..., ./internal/api/...,
the K8s subset of ./internal/monitoring/... all clean (three
pre-existing unrelated monitoring failures noted earlier remain
unchanged by this commit)
- npm run type-check, lint:eslint, lint:theme,
lint:canonical-platforms clean
- vitest: 70 K8s frontend tests pass including the new RBAC render
coverage in KubernetesConfigTable.test.tsx
- browser proof on /kubernetes/configuration: 36 config rows
including 18 RBAC rows across three clusters; ClusterRole
"pulse-demo-monitoring" shows "12 rules · Aggregated";
ClusterRoleBinding shows "3 subjects · Group, ServiceAccount +1"
2026-05-25 09:25:03 +01:00
..
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-05-13 14:04:14 +01:00
2026-05-13 14:04:14 +01:00
2026-05-13 18:36:00 +01:00
2026-04-22 00:05:57 +01:00
2026-04-22 00:05:57 +01:00
2026-04-22 00:05:57 +01:00
2026-02-04 14:24:42 +00:00
2026-05-10 15:16:17 +01:00
2026-05-13 14:04:14 +01:00
2026-05-12 12:06:27 +01:00
2026-05-13 18:36:00 +01:00
2026-05-13 18:36:00 +01:00
2026-05-19 09:47:05 +01:00
2026-03-18 16:06:30 +00:00
2026-05-13 19:00:02 +01:00
2026-05-05 14:19:50 +01:00
2026-05-04 00:50:14 +01:00
2026-02-04 13:43:28 +00:00
2026-01-25 21:08:44 +00:00
2026-01-19 19:26:18 +00:00
2026-03-18 16:06:30 +00:00
2026-05-13 18:36:00 +01:00
2026-05-13 18:36:00 +01:00
2026-05-10 15:16:17 +01:00
2026-04-22 22:57:08 +01:00
2026-03-24 23:59:52 +00:00
2026-03-27 08:39:59 +00:00
2026-05-07 21:58:06 +01:00
2026-03-29 21:52:18 +01:00
2026-05-15 16:57:25 +01:00
2026-03-18 16:06:30 +00:00
2026-05-15 16:57:25 +01:00
2026-03-18 16:06:30 +00:00
2026-01-25 21:08:44 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-19 04:04:14 +00:00
2026-04-23 15:54:48 +01:00
2026-04-09 20:15:17 +01:00
2026-04-11 16:47:37 +01:00
2026-04-22 00:39:53 +01:00
2026-05-12 12:06:27 +01:00
2026-03-18 16:06:30 +00:00
2026-05-15 22:45:48 +01:00
2026-03-18 16:06:30 +00:00
2026-04-11 16:47:37 +01:00
2026-05-12 12:06:27 +01:00
2026-05-15 22:45:48 +01:00
2026-04-28 15:49:18 +01:00
2026-04-28 16:11:27 +01:00
2026-03-26 17:12:27 +00:00
2026-04-11 16:47:37 +01:00
2026-03-18 16:06:30 +00:00
2026-05-06 16:31:51 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-04-11 16:47:37 +01:00
2026-05-06 16:31:51 +01:00
2026-01-25 21:08:44 +00:00
2026-05-08 02:21:31 +01:00
2026-05-11 23:10:35 +01:00
2026-03-30 13:22:50 +01:00
2026-03-18 16:06:30 +00:00
2026-05-06 13:01:32 +01:00
2026-03-18 16:06:30 +00:00
2026-03-28 21:14:54 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 21:02:52 +00:00
2026-04-22 07:59:12 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-04-11 16:47:37 +01:00
2026-03-25 00:36:47 +00:00
2026-01-24 22:42:23 +00:00
2026-05-21 16:11:30 +01:00
2026-03-18 16:06:30 +00:00
2026-05-04 00:16:31 +01:00
2026-05-04 00:16:31 +01:00
2026-02-04 09:52:32 +00:00
2026-03-24 23:59:52 +00:00
2026-05-21 16:19:25 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-05-04 23:16:15 +01:00
2026-03-18 16:06:30 +00:00
2026-05-06 14:25:36 +01:00
2026-05-06 14:08:03 +01:00
2026-03-18 16:06:30 +00:00
2026-05-05 12:59:59 +01:00
2026-05-03 12:25:56 +01:00
2026-05-03 12:25:56 +01:00
2026-04-01 01:04:06 +01:00
2026-02-02 18:59:44 +00:00
2026-03-18 16:06:30 +00:00
2026-04-03 19:00:40 +01:00
2026-05-04 00:50:14 +01:00
2026-05-04 09:47:54 +01:00
2026-05-04 09:47:54 +01:00
2026-03-26 20:51:29 +00:00
2026-05-04 09:47:54 +01:00
2026-05-04 09:47:54 +01:00
2026-05-04 23:16:15 +01:00
2026-03-18 16:06:30 +00:00
2026-05-05 12:59:59 +01:00
2026-03-18 16:06:30 +00:00
2026-04-22 01:03:10 +01:00
2026-04-09 20:15:17 +01:00
2026-05-05 12:59:59 +01:00
2026-03-18 16:06:30 +00:00
2025-12-01 23:50:10 +00:00
2026-05-05 12:59:59 +01:00
2026-05-19 11:09:14 +01:00
2026-03-31 12:53:08 +01:00
2025-12-01 14:46:00 +00:00
2026-03-18 16:06:30 +00:00
2026-04-19 20:42:22 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2025-12-02 17:21:48 +00:00
2026-04-22 20:26:15 +01:00
2026-03-18 16:06:30 +00:00
2026-05-05 14:19:50 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-28 20:35:10 +00:00
2026-03-18 16:06:30 +00:00
2026-04-26 17:26:16 +01:00
2026-04-23 23:04:03 +01:00
2026-03-18 16:06:30 +00:00
2026-05-05 12:59:59 +01:00
2026-01-25 21:08:44 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-05-19 11:09:14 +01:00
2026-04-10 12:33:57 +01:00
2026-03-18 16:06:30 +00:00
2026-05-14 14:37:24 +01:00
2026-05-14 14:37:24 +01:00
2026-05-13 20:38:26 +01:00
2026-05-14 00:22:18 +01:00
2026-05-14 00:22:18 +01:00
2026-04-22 20:48:16 +01:00
2026-05-06 14:25:36 +01:00
2026-05-12 00:29:04 +01:00
2026-04-22 01:18:33 +01:00
2026-04-22 01:18:33 +01:00
2026-05-13 20:16:35 +01:00
2026-05-25 09:25:03 +01:00
2026-03-18 16:06:30 +00:00
2026-04-26 15:27:10 +01:00
2026-04-26 15:27:10 +01:00
2026-05-04 09:14:09 +01:00
2026-04-11 17:20:58 +01:00
2026-05-05 12:59:59 +01:00
2026-05-05 12:59:59 +01:00
2026-05-04 09:14:09 +01:00
2026-05-04 09:14:09 +01:00
2026-05-05 12:59:59 +01:00
2026-05-05 12:59:59 +01:00
2026-03-18 16:06:30 +00:00
2026-05-08 20:58:32 +01:00
2026-04-30 09:23:40 +01:00
2026-04-30 09:23:40 +01:00
2026-03-18 16:06:30 +00:00
2026-05-08 20:58:32 +01:00
2026-03-18 16:06:30 +00:00
2026-05-20 14:54:19 +01:00
2026-05-20 14:54:19 +01:00
2026-03-24 16:05:19 +00:00
2026-05-05 12:59:59 +01:00
2026-03-18 16:06:30 +00:00
2026-04-30 09:13:04 +01:00
2025-11-29 17:06:18 +00:00
2026-05-05 12:59:59 +01:00
2026-04-30 09:13:04 +01:00
2026-04-30 09:13:04 +01:00
2026-03-28 20:35:10 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-25 23:40:22 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-05-13 16:44:26 +01:00
2026-04-22 04:23:23 +01:00
2026-05-13 00:28:24 +01:00
2026-05-13 00:28:24 +01:00
2026-03-18 16:06:30 +00:00
2026-02-02 22:01:46 +00:00
2026-03-18 16:06:30 +00:00
2026-01-25 21:08:44 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-04-23 23:04:18 +01:00
2026-04-05 13:18:30 +01:00
2026-04-28 15:49:18 +01:00
2026-04-28 15:49:18 +01:00
2026-04-28 16:36:09 +01:00
2026-03-18 16:06:30 +00:00
2026-05-04 09:33:19 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-04-10 12:54:12 +01:00
2026-05-05 09:26:10 +01:00
2026-05-03 12:48:01 +01:00
2026-03-18 16:06:30 +00:00
2026-05-05 12:59:59 +01:00
2026-03-18 16:06:30 +00:00
2026-05-05 12:59:59 +01:00
2026-04-28 19:12:21 +01:00
2026-04-11 16:47:37 +01:00
2026-04-10 12:33:57 +01:00
2026-05-05 12:59:59 +01:00
2026-05-05 12:59:59 +01:00
2026-04-28 19:12:21 +01:00
2026-05-06 17:18:35 +01:00
2026-05-05 12:59:59 +01:00
2026-04-16 10:17:37 +01:00
2026-05-06 23:45:37 +01:00
2026-05-12 09:19:58 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-02-02 22:02:22 +00:00
2025-12-12 11:05:24 +00:00
2026-04-22 00:39:53 +01:00
2026-05-04 22:43:35 +01:00
2026-05-04 22:43:35 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-04-15 13:40:24 +01:00
2026-05-12 21:10:58 +01:00
2026-05-12 21:10:58 +01:00
2026-05-12 21:10:58 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-01-19 19:26:18 +00:00
2025-12-10 00:29:07 +00:00
2026-04-10 23:40:13 +01:00
2026-05-10 22:59:23 +01:00
2026-05-10 22:59:23 +01:00
2026-03-28 21:14:54 +00:00
2026-05-21 12:33:10 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-05-21 12:33:10 +01:00
2026-04-22 05:42:45 +01:00
2026-04-22 05:42:45 +01:00
2026-03-18 16:06:30 +00:00
2026-04-11 16:47:37 +01:00
2026-04-11 16:47:37 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-05-05 12:59:59 +01:00
2026-05-06 10:35:34 +01:00
2026-04-09 15:48:28 +01:00
2026-05-05 12:59:59 +01:00
2026-04-23 23:04:03 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-01-25 21:08:44 +00:00
2026-02-02 22:02:22 +00:00
2025-12-02 16:47:13 +00:00
2026-02-04 15:10:02 +00:00
2026-03-19 05:21:22 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-04-29 16:25:09 +01:00
2026-05-04 00:16:31 +01:00
2026-01-09 19:25:33 +00:00
2026-04-22 05:42:45 +01:00
2026-04-01 16:36:44 +01:00
2026-04-22 05:42:45 +01:00
2026-03-18 16:06:30 +00:00
2026-04-18 00:06:50 +01:00
2026-04-18 00:06:50 +01:00
2026-05-25 09:25:03 +01:00
2026-05-25 09:25:03 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-05-05 12:59:59 +01:00
2026-04-22 00:39:53 +01:00
2026-05-22 20:26:56 +01:00
2026-05-21 15:15:23 +01:00
2026-05-21 15:15:23 +01:00
2026-03-18 16:06:30 +00:00
2026-01-19 19:26:18 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-02-04 14:35:08 +00:00
2026-05-04 09:33:19 +01:00
2026-04-08 20:42:36 +01:00
2026-04-09 08:07:34 +01:00
2026-05-16 13:57:53 +01:00
2026-03-18 16:06:30 +00:00
2026-03-26 20:51:29 +00:00
2026-03-26 20:51:29 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-27 12:04:44 +00:00
2026-04-22 00:39:53 +01:00
2026-03-18 16:06:30 +00:00
2026-02-02 18:59:44 +00:00
2026-02-02 23:01:29 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-25 23:40:22 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-04-26 17:26:16 +01:00
2026-01-22 00:30:15 +00:00
2026-03-26 22:43:26 +00:00
2026-03-31 15:42:16 +01:00
2026-02-04 15:01:09 +00:00
2026-04-22 00:39:53 +01:00
2026-05-01 21:36:28 +01:00
2026-04-24 13:13:36 +01:00
2026-03-25 12:14:16 +00:00
2026-03-28 19:32:42 +00:00
2026-03-28 19:32:42 +00:00
2026-04-30 12:53:29 +01:00
2026-04-11 16:47:37 +01:00
2026-04-11 16:47:37 +01:00
2026-05-16 13:57:53 +01:00
2026-03-25 22:27:35 +00:00
2026-05-10 22:23:09 +01:00
2026-03-26 09:15:15 +00:00
2026-03-26 22:58:27 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-02-04 10:28:41 +00:00
2026-05-24 12:07:10 +01:00
2026-03-18 16:06:30 +00:00
2026-05-13 14:19:59 +01:00
2026-05-13 14:19:59 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-05-22 08:54:43 +01:00
2026-05-25 09:25:03 +01:00
2026-05-22 08:54:43 +01:00
2026-03-18 16:06:30 +00:00
2026-04-26 17:26:16 +01:00
2026-03-18 16:06:30 +00:00
2026-04-26 15:27:10 +01:00
2026-04-28 16:36:09 +01:00
2026-03-26 17:12:27 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-04-22 01:18:33 +01:00
2026-04-18 00:06:50 +01:00
2026-04-23 23:04:03 +01:00
2026-04-23 23:04:03 +01:00
2026-04-30 12:24:22 +01:00
2026-05-03 12:25:56 +01:00
2026-03-18 16:06:30 +00:00
2026-04-11 15:35:05 +01:00
2026-05-22 08:54:43 +01:00
2026-02-04 10:28:41 +00:00
2026-02-04 10:28:41 +00:00
2026-05-09 23:04:22 +01:00
2026-02-04 10:28:41 +00:00
2026-04-22 00:39:53 +01:00
2026-03-29 21:57:47 +01:00
2026-03-26 21:43:30 +00:00
2026-04-26 17:26:16 +01:00
2026-03-26 21:43:30 +00:00
2026-03-26 21:43:30 +00:00
2026-05-10 14:30:41 +01:00
2026-05-07 21:58:06 +01:00
2026-05-07 21:58:06 +01:00
2026-03-18 16:06:30 +00:00
2026-05-03 12:48:01 +01:00
2026-03-18 16:06:30 +00:00
2026-04-28 16:36:09 +01:00
2026-04-26 17:26:16 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-04-30 12:24:22 +01:00
2026-05-22 08:54:43 +01:00
2026-05-06 10:35:34 +01:00
2026-04-11 16:47:37 +01:00
2026-03-18 16:06:30 +00:00
2026-04-29 14:18:43 +01:00
2026-03-18 16:06:30 +00:00
2026-05-22 08:54:43 +01:00
2026-04-29 16:25:09 +01:00
2026-05-21 16:26:00 +01:00
2026-05-03 13:19:51 +01:00
2026-05-21 16:26:00 +01:00
2026-05-03 12:48:01 +01:00
2026-04-29 16:25:09 +01:00
2026-04-01 12:00:31 +01:00
2026-05-21 16:15:53 +01:00
2026-02-04 10:28:41 +00:00
2026-03-30 09:52:07 +01:00
2026-03-30 09:52:07 +01:00
2026-05-21 16:19:25 +01:00
2026-05-04 00:50:14 +01:00
2026-05-10 22:25:34 +01:00
2026-05-10 22:25:34 +01:00
2026-04-22 07:59:12 +01:00
2026-04-25 13:45:31 +01:00
2026-05-21 12:29:32 +01:00
2026-03-24 23:59:52 +00:00
2026-03-18 16:06:30 +00:00
2026-05-04 00:50:14 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-05-04 00:50:14 +01:00
2026-05-21 12:29:32 +01:00
2026-01-10 12:55:02 +00:00
2026-04-22 00:39:53 +01:00
2026-04-22 00:39:53 +01:00
2026-05-05 14:19:50 +01:00
2026-04-12 09:02:56 +01:00
2026-04-11 14:51:10 +01:00
2026-05-03 12:48:01 +01:00
2026-04-01 12:00:31 +01:00
2026-04-01 16:36:44 +01:00
2026-04-01 16:36:44 +01:00
2026-03-18 16:06:30 +00:00
2026-05-05 12:59:59 +01:00
2026-05-05 12:59:59 +01:00
2026-05-06 17:18:35 +01:00
2026-04-07 10:24:53 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-28 23:13:43 +00:00
2026-04-26 17:26:16 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-04-30 12:24:22 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-02-04 14:48:03 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-05-04 23:16:15 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-04-28 16:36:09 +01:00
2026-03-29 19:50:31 +01:00
2026-03-29 20:36:43 +01:00
2026-03-29 20:13:39 +01:00
2026-05-05 12:59:59 +01:00
2026-05-05 12:59:59 +01:00
2026-03-18 16:06:30 +00:00
2026-04-10 17:32:30 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-05-13 19:00:02 +01:00
2026-05-05 12:59:59 +01:00
2026-03-19 04:46:02 +00:00
2026-04-22 03:51:46 +01:00
2026-04-23 13:15:52 +01:00
2026-03-18 16:06:30 +00:00
2026-04-23 23:04:18 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-04-11 16:47:37 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-04-22 03:06:22 +01:00
2026-05-22 20:26:56 +01:00
2026-05-22 20:26:56 +01:00
2026-03-18 16:06:30 +00:00
2026-04-22 04:46:13 +01:00