scotthuang
7920af0c9e
refactor: route browser screenshot vision through shared media understanding
...
* feat(browser): add optional vision understanding to screenshot tool
* fix(browser): wrap vision output as external content, enforce maxBytes, forward auth profiles
* fix(browser): remove no-op scope/attachments config, drop profile pass-through lacking runtime support
* feat(media-understanding): add profile/preferredProfile to DescribeImageFileWithModelParams and forward to describeImage
* style(browser): add curly braces to satisfy eslint curly rule
* fix(browser): correct tools.browser.enabled help text to match actual behavior
* fix(browser): thread agentDir/workspaceDir from plugin tool context into browser vision
* refactor(browser): move vision config from tools.browser to browser.models
The browser plugin's vision configuration now lives on the top-level
`browser` config namespace (browser.models, browser.visionEnabled,
browser.visionPrompt, etc.) instead of `tools.browser`. This aligns
with the plugin's existing config location and avoids confusion between
tool-level and plugin-level settings.
- Remove tools.browser from ToolsSchema and ToolsConfig
- Add models/vision* fields to BrowserConfig and its zod schema
- Update getBrowserVisionConfig to read from cfg.browser
- Update schema help, labels, and quality test
- Update vision.test.ts to use new config shape
* docs(browser): add screenshot vision configuration section
Document the new browser.models config for automatic screenshot
description via vision models, enabling text-only main models to
reason about web page content.
* fix(browser): remove deliverable media markers from vision result, drop unused import
P1: Vision-success path no longer exposes the raw screenshot as
deliverable media (removes MEDIA: line and details.media.mediaUrl).
This prevents channel delivery from auto-sending sensitive page content
when the intended output is a text description.
P2: Remove unused ToolsMediaUnderstandingSchema import that would fail
noUnusedLocals typecheck.
* fix(browser): add command/args fields to browser models schema
The browser vision model schema uses .strict(), so CLI-type entries
with command/args were rejected by TypeScript. Add these fields to
align with MediaUnderstandingModelSchema.
* chore(browser): remove debug console.log statements
* fix(browser): harden screenshot vision result against MEDIA: directive injection and restore image sanitization on failure fallback
ClawSweeper #84247 review round 2:
P1 (security, high): neutralize line-start MEDIA: directives in vision descriptions
before wrapping with wrapExternalContent. The agent media extractor scans every
browser tool-result text block via splitMediaFromOutput which treats line-start
MEDIA: as a trusted local-media delivery directive, and browser is on the
trusted-media allowlist. Without neutralization, page or vision-provider output
containing 'MEDIA:/tmp/secret.png' could synthesize a channel-deliverable media
artifact from untrusted content. wrapExternalContent itself does not strip
line-start directives. Introduce neutralizeMediaDirectives in vision.ts that
prepends '[neutralized] ' to any line whose trimStart() begins with MEDIA:
(case-insensitive), defanging the parser anchor while keeping the original
text human-readable.
P2 (compatibility): pass resolveRuntimeImageSanitization() to imageResultFromFile
in the vision-failure catch fallback. The non-vision screenshot path already
forwards this option (d5cc0d53b7 ) so configured agents.defaults.imageMaxDimensionPx
takes effect. Without this fix, any provider timeout/error silently bypasses the
sanitization guard and returns a raw full-resolution screenshot.
Regression coverage:
- vision.test.ts: 6 unit cases for neutralizeMediaDirectives (no-op fast path,
mid-line MEDIA: untouched, line-start defanged, leading-whitespace defanged,
case-insensitive, multiple directives per blob).
- browser-tool.test.ts: 2 integration cases that drive the full screenshot
tool execute path:
- 'neutralizes MEDIA: directives in vision text and does not attach media'
asserts no line matches /^\s*MEDIA:/i in returned text, secret path text
is preserved verbatim, details.media is absent, and imageResultFromFile
is not called on the success path.
- 'preserves screenshot image sanitization on vision failure fallback'
mocks describeImageFileWithModel to reject and asserts the fallback
imageResultFromFile call receives imageSanitization: {maxDimensionPx:1600}
plus the 'browser screenshot vision failed' extraText.
* fix(browser): apply clawsweeper fallback media fix from PR #84247
* refactor: reuse media image understanding for browser screenshots
* refactor: use structured media delivery
* test: update music completion media instruction expectation
* fix: trim buffered reply directive padding
* test: refresh codex prompt snapshots for message media aliases
---------
Co-authored-by: scotthuang <scotthuang@tencent.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-05-31 00:00:19 +01:00
..
2026-05-29 23:04:23 +02:00
2026-05-30 15:11:14 -04:00
2026-05-30 14:07:32 -04:00
2026-05-30 23:51:40 +01:00
2026-05-31 00:00:19 +01:00
2026-05-30 22:34:57 +01:00
2026-05-31 00:00:19 +01:00
2026-05-30 20:04:52 +01:00
2026-05-28 10:51:32 -04:00
2026-05-30 07:45:04 +02:00
2026-05-30 11:48:41 +02:00
2026-05-30 13:21:26 -04:00
2026-05-28 21:22:05 -04:00
2026-05-30 23:13:43 +01:00
2026-05-27 12:30:22 +00:00
2026-05-30 20:04:52 +01:00
2026-05-31 00:00:19 +01:00
2026-05-30 23:13:43 +01:00
2026-05-25 21:20:41 +01:00
2026-05-25 21:20:41 +01:00
2026-05-29 22:08:19 +02:00
2026-05-30 22:11:06 +01:00
2026-05-30 15:07:04 -04:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-28 12:29:45 -04:00
2026-05-28 12:29:45 -04:00
2026-05-27 19:24:04 +01:00
2026-05-30 23:51:40 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 22:42:57 +01:00
2026-05-30 23:51:40 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 23:51:40 +01:00
2026-05-28 16:52:53 +01:00
2026-05-29 05:57:24 +02:00
2026-05-30 23:51:40 +01:00
2026-05-29 22:05:05 +02:00
2026-05-30 22:42:57 +01:00
2026-05-30 22:42:57 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 15:07:04 -04:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 17:48:18 +01:00
2026-05-29 21:01:00 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 03:13:01 +02:00
2026-05-30 06:56:52 +01:00
2026-05-25 20:30:00 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 23:26:29 +01:00
2026-05-29 01:22:09 +01:00
2026-05-29 22:36:29 +02:00
2026-05-27 19:24:04 +01:00
2026-05-30 17:48:18 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 00:04:06 +10:00
2026-05-27 19:24:04 +01:00
2026-05-28 16:14:32 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 04:06:45 -04:00
2026-05-30 20:04:52 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 20:28:29 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 20:04:52 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 17:48:18 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-28 15:47:50 +01:00
2026-05-27 19:24:04 +01:00
2026-05-29 17:35:02 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-29 17:35:02 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 19:24:21 +01:00
2026-05-30 19:24:21 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-25 21:20:41 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 15:09:37 -04:00
2026-05-30 15:09:37 -04:00
2026-05-30 11:48:41 +02:00
2026-05-30 08:26:16 +02:00
2026-05-27 19:24:04 +01:00
2026-05-29 04:46:45 +01:00
2026-05-30 11:48:41 +02:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 14:44:45 +01:00
2026-05-27 23:24:55 +01:00
2026-05-30 22:43:09 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 13:23:03 -04:00
2026-05-30 21:45:16 +01:00
2026-05-30 21:45:16 +01:00
2026-05-30 13:19:42 -04:00
2026-05-30 13:19:42 -04:00
2026-05-27 19:24:04 +01:00
2026-05-30 21:45:16 +01:00
2026-05-30 00:04:06 +10:00
2026-05-30 03:30:42 -04:00
2026-05-30 21:45:16 +01:00
2026-05-29 22:01:27 +02:00
2026-05-30 00:04:06 +10:00
2026-05-30 13:23:03 -04:00
2026-05-30 12:58:59 -04:00
2026-05-29 12:43:57 -04:00
2026-05-29 12:43:57 -04:00
2026-05-30 00:04:06 +10:00
2026-05-30 21:45:16 +01:00
2026-05-26 05:21:59 +01:00
2026-05-30 00:04:06 +10:00
2026-05-30 00:04:06 +10:00
2026-05-27 19:24:04 +01:00
2026-05-27 18:00:19 -04:00
2026-05-29 07:26:01 -04:00
2026-05-29 07:26:01 -04:00
2026-05-29 09:15:07 +01:00
2026-05-23 13:37:03 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-29 03:23:57 +01:00
2026-05-29 03:23:57 +01:00
2026-05-30 23:51:40 +01:00
2026-05-30 23:51:40 +01:00
2026-05-27 19:24:04 +01:00
2026-05-25 21:20:41 +01:00
2026-05-29 12:19:29 -04:00
2026-05-29 12:38:11 -04:00
2026-05-27 01:31:13 +01:00
2026-05-30 17:48:18 +01:00
2026-05-30 14:26:17 -04:00
2026-05-30 14:26:17 -04:00
2026-05-29 22:56:09 +05:30
2026-05-29 22:56:09 +05:30
2026-05-29 09:50:56 +01:00
2026-05-30 10:09:19 +05:30
2026-05-30 10:09:19 +05:30
2026-05-28 16:34:54 +00:00
2026-05-27 23:55:24 +02:00
2026-05-30 10:09:19 +05:30
2026-05-29 19:06:54 -07:00
2026-05-27 19:24:04 +01:00
2026-05-30 20:04:52 +01:00
2026-05-27 23:55:24 +02:00
2026-05-27 23:55:24 +02:00
2026-05-30 22:42:57 +01:00
2026-05-30 22:42:57 +01:00
2026-05-30 22:42:57 +01:00
2026-05-30 22:42:57 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 11:48:41 +02:00
2026-05-25 21:20:41 +01:00
2026-05-27 19:24:04 +01:00
2026-05-29 23:04:23 +02:00
2026-05-29 23:04:23 +02:00
2026-05-29 23:04:23 +02:00
2026-05-29 23:04:23 +02:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-29 23:04:23 +02:00
2026-05-27 19:24:04 +01:00
2026-05-29 23:04:23 +02:00
2026-05-30 23:13:43 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 17:48:18 +01:00
2026-05-29 03:23:57 +01:00
2026-05-29 06:10:42 +01:00
2026-05-29 06:10:42 +01:00
2026-05-27 19:24:04 +01:00
2026-05-29 20:14:38 +01:00
2026-05-29 20:14:38 +01:00
2026-05-30 08:59:36 -04:00
2026-05-30 08:59:36 -04:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 08:59:36 -04:00
2026-05-30 08:59:36 -04:00
2026-05-30 09:33:24 +02:00
2026-05-30 09:33:24 +02:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 00:34:28 +00:00
2026-05-27 19:24:04 +01:00
2026-05-30 21:45:08 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-29 21:01:00 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 00:04:06 +10:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 23:23:22 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 21:45:08 +01:00
2026-05-27 19:24:04 +01:00
2026-05-29 01:22:09 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 09:33:24 +02:00
2026-05-30 09:33:24 +02:00
2026-05-31 00:00:19 +01:00
2026-05-31 00:00:19 +01:00
2026-05-31 00:00:19 +01:00
2026-05-29 11:06:13 +01:00
2026-05-31 00:00:19 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 09:33:24 +02:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-28 21:48:33 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-31 00:00:19 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-31 00:00:19 +01:00
2026-05-27 19:24:04 +01:00
2026-05-31 00:00:19 +01:00
2026-05-31 00:00:19 +01:00
2026-05-31 00:00:19 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 00:04:06 +10:00
2026-05-30 01:29:05 -04:00
2026-05-30 01:29:05 -04:00
2026-05-30 00:04:06 +10:00
2026-05-30 00:04:06 +10:00
2026-05-27 19:24:04 +01:00
2026-05-30 11:48:41 +02:00
2026-05-29 08:05:12 -04:00
2026-05-30 22:14:46 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-25 21:20:41 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 11:48:41 +02:00
2026-05-27 19:24:04 +01:00
2026-05-30 17:48:18 +01:00
2026-05-27 21:16:15 +01:00
2026-05-27 21:16:15 +01:00
2026-05-25 22:00:36 +00:00
2026-05-25 22:00:36 +00:00
2026-05-30 09:07:53 +05:30
2026-05-25 21:20:41 +01:00
2026-05-28 00:29:31 +01:00
2026-05-28 00:29:31 +01:00
2026-05-24 00:05:48 +01:00
2026-05-24 00:05:48 +01:00
2026-05-25 21:20:41 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-28 10:51:32 -04:00
2026-05-30 13:00:29 +02:00
2026-05-30 17:48:18 +01:00
2026-05-30 11:48:41 +02:00
2026-05-30 17:48:18 +01:00
2026-05-30 16:03:39 +01:00
2026-05-30 17:48:18 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 17:48:18 +01:00
2026-05-30 17:48:18 +01:00
2026-05-26 18:51:43 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 17:39:43 +01:00
2026-05-30 17:39:43 +01:00
2026-05-30 23:51:40 +01:00
2026-05-30 23:51:40 +01:00
2026-05-29 09:45:14 +01:00
2026-05-30 23:51:40 +01:00
2026-05-30 23:51:40 +01:00
2026-05-27 02:04:29 +01:00
2026-05-27 02:04:29 +01:00
2026-05-30 23:51:40 +01:00
2026-05-30 23:51:40 +01:00
2026-05-30 23:51:40 +01:00
2026-05-30 23:51:40 +01:00
2026-05-30 09:07:53 +05:30
2026-05-27 14:37:17 +02:00
2026-05-30 17:48:18 +01:00
2026-05-28 07:17:21 +02:00
2026-05-28 06:50:55 +02:00
2026-05-27 19:24:04 +01:00
2026-05-27 08:19:07 +01:00
2026-05-30 21:16:36 +01:00
2026-05-30 21:16:36 +01:00
2026-05-25 21:20:41 +01:00
2026-05-25 21:20:41 +01:00
2026-05-30 21:16:36 +01:00
2026-05-30 21:16:36 +01:00
2026-05-30 21:16:36 +01:00
2026-05-28 23:01:45 -04:00
2026-05-28 23:01:45 -04:00
2026-05-30 17:48:18 +01:00
2026-05-30 17:48:18 +01:00
2026-05-30 21:59:27 +01:00
2026-05-30 11:48:41 +02:00
2026-05-26 20:51:00 +01:00
2026-05-29 03:23:57 +01:00
2026-05-30 17:48:18 +01:00
2026-05-30 11:48:41 +02:00
2026-05-30 11:48:41 +02:00
2026-05-29 09:24:08 +01:00
2026-05-30 11:07:45 +02:00
2026-05-28 18:11:14 -07:00
2026-05-27 19:24:04 +01:00
2026-05-30 00:34:28 +00:00
2026-05-30 11:07:45 +02:00
2026-05-27 19:24:04 +01:00
2026-05-30 17:48:18 +01:00
2026-05-30 11:48:41 +02:00
2026-05-30 11:48:41 +02:00
2026-05-27 23:24:55 +01:00
2026-05-27 23:24:55 +01:00
2026-05-29 23:53:28 +01:00
2026-05-30 17:48:18 +01:00
2026-05-29 09:24:08 +01:00
2026-05-28 13:20:19 +01:00
2026-05-30 17:48:18 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 17:48:18 +01:00
2026-05-29 18:35:37 -04:00
2026-05-30 17:48:18 +01:00
2026-05-27 19:24:04 +01:00
2026-05-25 00:55:30 +02:00
2026-05-26 01:11:47 +01:00
2026-05-30 17:48:18 +01:00
2026-05-30 18:46:11 +01:00
2026-05-26 20:51:00 +01:00
2026-05-30 18:46:11 +01:00
2026-05-30 21:56:38 +01:00
2026-05-30 21:56:38 +01:00
2026-05-29 06:10:42 +01:00
2026-05-30 23:26:29 +01:00
2026-05-26 22:34:37 +01:00
2026-05-29 03:23:57 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-29 03:23:57 +01:00
2026-05-25 19:12:36 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 17:48:18 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 08:19:07 +01:00
2026-05-23 15:08:58 +01:00
2026-05-27 08:19:07 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 17:48:18 +01:00
2026-05-27 08:19:07 +01:00
2026-05-29 03:23:57 +01:00
2026-05-29 03:23:57 +01:00
2026-05-29 04:15:27 +01:00
2026-05-29 03:23:57 +01:00
2026-05-30 17:48:18 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 11:48:41 +02:00
2026-05-30 17:48:18 +01:00
2026-05-25 14:28:03 +00:00
2026-05-25 14:28:03 +00:00
2026-05-25 14:28:03 +00:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 23:26:29 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 11:48:41 +02:00
2026-05-29 07:08:17 -04:00
2026-05-30 11:48:41 +02:00
2026-05-30 21:45:08 +01:00
2026-05-30 11:48:41 +02:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-29 21:34:59 +01:00
2026-05-29 14:41:30 -07:00
2026-05-30 23:14:16 +01:00
2026-05-30 23:14:16 +01:00
2026-05-29 01:22:09 +01:00
2026-05-27 19:24:04 +01:00
2026-05-26 01:11:47 +01:00
2026-05-25 21:20:41 +01:00
2026-05-27 19:24:04 +01:00
2026-05-25 21:20:41 +01:00
2026-05-30 18:06:22 +01:00
2026-05-23 13:50:08 +01:00
2026-05-30 21:19:09 +01:00
2026-05-30 20:04:52 +01:00
2026-05-25 19:04:03 +01:00
2026-05-30 11:48:41 +02:00
2026-05-27 19:24:04 +01:00
2026-05-30 17:48:18 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 11:48:41 +02:00
2026-05-30 23:26:29 +01:00
2026-05-30 11:48:41 +02:00
2026-05-30 17:48:18 +01:00
2026-05-30 17:48:18 +01:00
2026-05-29 13:24:19 +02:00
2026-05-29 13:24:19 +02:00
2026-05-29 19:29:40 -04:00
2026-05-29 19:29:40 -04:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 11:48:41 +02:00
2026-05-30 11:48:41 +02:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 23:26:29 +01:00
2026-05-24 04:47:16 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 22:43:09 +01:00
2026-05-28 13:27:20 -04:00
2026-05-28 13:27:20 -04:00
2026-05-24 04:08:15 +01:00
2026-05-25 21:20:41 +01:00
2026-05-30 14:51:59 -04:00
2026-05-30 14:51:59 -04:00
2026-05-25 21:20:41 +01:00
2026-05-29 17:35:02 +01:00
2026-05-28 22:20:49 -04:00
2026-05-23 16:43:29 +08:00
2026-05-29 05:15:22 +01:00
2026-05-29 05:15:22 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-25 21:20:41 +01:00
2026-05-29 17:35:02 +01:00
2026-05-25 18:36:55 +01:00
2026-05-27 19:24:04 +01:00
2026-05-26 22:41:52 -04:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 20:45:27 +01:00
2026-05-29 22:16:53 +01:00
2026-05-29 22:36:29 +02:00
2026-05-29 00:28:32 -04:00
2026-05-27 19:24:04 +01:00
2026-05-29 22:36:29 +02:00
2026-05-29 22:36:29 +02:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 21:42:57 +01:00
2026-05-30 21:42:57 +01:00
2026-05-30 21:19:09 +01:00
2026-05-30 11:48:41 +02:00
2026-05-30 11:48:41 +02:00
2026-05-30 11:48:41 +02:00
2026-05-30 11:48:41 +02:00
2026-05-30 11:48:41 +02:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-28 07:10:17 +01:00
2026-05-30 08:04:50 +02:00
2026-05-30 23:03:32 +01:00
2026-05-30 00:24:28 +02:00
2026-05-30 08:04:50 +02:00
2026-05-23 21:26:55 +01:00
2026-05-30 06:56:52 +01:00
2026-05-30 06:56:52 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 19:14:27 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-29 13:44:41 -04:00
2026-05-29 05:39:41 +01:00
2026-05-30 10:27:03 +02:00
2026-05-29 01:09:04 -04:00
2026-05-29 01:09:04 -04:00
2026-05-27 19:24:04 +01:00
2026-05-28 02:55:01 +02:00
2026-05-30 23:26:29 +01:00
2026-05-24 00:05:48 +01:00
2026-05-24 00:05:48 +01:00
2026-05-29 13:44:41 -04:00
2026-05-29 06:55:00 -04:00
2026-05-24 00:05:48 +01:00
2026-05-24 00:05:48 +01:00
2026-05-24 00:05:48 +01:00
2026-05-24 00:05:48 +01:00
2026-05-25 00:57:29 +01:00
2026-05-24 00:05:48 +01:00
2026-05-24 00:05:48 +01:00
2026-05-30 21:04:37 +01:00
2026-05-30 21:04:37 +01:00
2026-05-24 00:05:48 +01:00
2026-05-30 21:04:37 +01:00
2026-05-30 11:44:11 +02:00
2026-05-24 00:05:48 +01:00
2026-05-30 11:44:11 +02:00
2026-05-27 05:18:58 +01:00
2026-05-28 21:55:44 -07:00
2026-05-24 00:05:48 +01:00
2026-05-30 11:44:11 +02:00
2026-05-30 11:44:11 +02:00
2026-05-28 21:55:44 -07:00
2026-05-30 06:56:52 +01:00
2026-05-29 05:39:41 +01:00
2026-05-30 21:04:37 +01:00
2026-05-29 05:39:41 +01:00
2026-05-25 21:20:41 +01:00
2026-05-27 23:55:24 +02:00
2026-05-30 02:12:45 -04:00
2026-05-30 21:19:09 +01:00
2026-05-30 18:52:21 +01:00
2026-05-30 21:19:09 +01:00
2026-05-30 21:19:09 +01:00
2026-05-27 23:55:24 +02:00
2026-05-30 21:19:09 +01:00
2026-05-30 21:19:09 +01:00
2026-05-30 21:19:09 +01:00
2026-05-26 12:11:31 +01:00
2026-05-25 21:20:41 +01:00
2026-05-29 10:10:12 +01:00
2026-05-25 21:20:41 +01:00
2026-05-25 19:03:57 +01:00
2026-05-25 21:20:41 +01:00
2026-05-25 22:00:21 +01:00
2026-05-27 19:24:04 +01:00
2026-05-30 20:04:52 +01:00
2026-05-31 00:00:19 +01:00
2026-05-29 13:44:41 -04:00
2026-05-25 21:20:41 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-26 21:30:01 +01:00
2026-05-30 20:04:52 +01:00
2026-05-30 20:04:52 +01:00
2026-05-23 09:47:37 +01:00
2026-05-25 21:20:41 +01:00
2026-05-29 08:19:50 -04:00
2026-05-30 20:04:52 +01:00
2026-05-30 19:19:17 +01:00
2026-05-30 19:19:17 +01:00
2026-05-31 00:00:19 +01:00
2026-05-29 00:28:32 -04:00
2026-05-31 00:00:19 +01:00
2026-05-25 21:20:41 +01:00
2026-05-29 22:36:29 +02:00
2026-05-29 22:36:29 +02:00
2026-05-25 21:20:41 +01:00
2026-05-23 16:43:29 +08:00
2026-05-27 19:24:04 +01:00
2026-05-30 22:34:57 +01:00
2026-05-30 22:34:57 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 07:54:24 +02:00
2026-05-27 07:54:24 +02:00
2026-05-28 16:52:44 +02:00
2026-05-27 20:56:06 +01:00
2026-05-30 22:42:57 +01:00
2026-05-29 08:48:35 +02:00
2026-05-29 08:48:35 +02:00
2026-05-28 16:52:53 +01:00
2026-05-30 17:48:18 +01:00
2026-05-28 16:52:53 +01:00
2026-05-29 08:48:35 +02:00
2026-05-24 06:10:47 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00
2026-05-27 12:30:22 +00:00
2026-05-27 12:30:22 +00:00
2026-05-27 12:30:22 +00:00
2026-05-27 12:30:22 +00:00
2026-05-27 19:24:04 +01:00
2026-05-27 19:24:04 +01:00