Tu Naichao
ae82f426bf
fix(summarization): stop fraction triggers from crashing the agent build ( #4901 )
...
* fix(summarization): resolve fraction triggers from declared context_window, degrade instead of crashing the agent build
A fraction trigger/keep clause requires profile["max_input_tokens"], which any
third-party OpenAI-compatible model lacks, so SummarizationMiddleware
construction raised ValueError out of create_summarization_middleware and failed
the whole agent build (#3103 ).
- factory: translate a declared model context_window into the langchain
profile (metadata-only, never reaches the provider payload); explicit
caller/override profiles win
- summarization factory: drop unusable fraction trigger clauses (absolute
clauses survive), fall a fraction keep back to the messages default, and
disable compaction with an actionable warning only when no usable trigger
clause remains — the agent build never dies from summarization config
- docs: config.example.yaml, ModelConfig.context_window, summarization.md
* refactor(summarization): share the default keep constant with the fraction fallback
The fraction-keep degradation fallback hardcoded ("messages", 20),
duplicating SummarizationConfig.keep's default_factory literal. Move the
value to a shared DEFAULT_KEEP constant so the two cannot drift apart.
* fix(summarization): keep trigger-null + fraction-keep constructing after degradation
A trigger of None with a fraction keep hit the all-clauses-dropped branch
(has_usable_trigger=False) and disabled compaction, and the accompanying
warning claimed configured triggers were all fraction-based when none were
configured. Only report nothing-usable when trigger clauses actually
existed; trigger:null keeps constructing the never-firing middleware with
the degraded keep, matching its behavior outside the degradation path.
* fix(summarization): address review — keep manual compaction, validate ContextSize, pin wiring
Review follow-ups on #4901 :
- When every configured trigger is a dropped fraction clause, keep
constructing the never-firing middleware (trigger=None) instead of
returning None: manual /compact runs with force=True and never consults
trigger clauses, so it must keep working for a profile-less model
rather than reporting 'compaction is disabled'. The warning now says
auto-compaction will not fire while manual compaction remains.
- ContextSize gains a config-load validator: fraction values must be in
(0,1] (a percent-style 80 instead of 0.8 previously produced a threshold
the context could never reach — a silently inert trigger), absolute
values must be positive.
- New un-monkeypatched integration test pins the shipped wiring
(context_window declared -> real factory attaches profile -> fraction
clause survives -> middleware constructs), which the stubbed
middleware-side tests and kwarg-capturing factory-side tests each
stopped short of.
- Docs (summarization.md + config.example.yaml) clarify that the fraction
resolves against the summary/anchor model's context_window
(summarization.model_name when set, else the run model), including the
mismatch caveat for a larger-window summary model.
* fix(summarization): reject non-finite ContextSize values at config load
YAML .nan / .inf pass pydantic's float parsing, and nan <= 0 is False,
so the positivity check alone let them through as dead thresholds
(count >= nan is always False) — the same silent-inert-trigger class the
range validator was added to close. Guard with math.isfinite first,
consistent with the existing non-finite guards on mem0 timeout_seconds
and poll_after_seconds.
* fix(summarization): merge context_window into inferred profile, require whole message counts
- construct the model first, then merge max_input_tokens into the
provider-inferred langchain profile: passing profile= to the
constructor replaced the whole inferred metadata (tool_calling,
structured_output, io capabilities, output limits) with the single
key. An explicitly configured profile is still never clobbered.
- reject non-integral ContextSize values for type=messages at config
load: langchain slices the message list with them, so a float index
raised TypeError mid-compaction.
---------
Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
2026-09-03 17:05:09 +08:00
..
2026-09-02 21:05:23 +08:00
2026-07-22 14:02:56 +08:00
2026-07-19 18:26:26 +08:00
2026-07-29 22:33:45 +08:00
2026-05-12 23:18:54 +08:00
2026-07-26 14:43:08 +08:00
2026-04-26 15:09:25 +08:00
2026-06-01 15:50:39 +08:00
2026-09-01 16:49:39 +08:00
2026-07-21 11:46:33 +08:00
2026-06-21 20:56:42 +08:00
2026-06-08 12:35:03 +08:00
2026-09-01 16:13:41 +08:00
2026-07-22 14:47:08 +08:00
2026-08-30 10:30:34 +08:00
2026-07-17 15:11:15 +08:00
2026-08-24 11:04:23 +08:00
2026-08-24 08:52:01 +08:00
2026-08-24 11:04:23 +08:00
2026-09-02 12:34:09 +08:00
2026-08-08 20:36:13 +08:00
2026-08-24 11:04:23 +08:00
2026-08-31 14:35:08 +08:00
2026-08-31 14:35:08 +08:00
2026-07-27 07:47:39 +08:00
2026-09-02 21:05:23 +08:00
2026-06-23 10:39:40 +08:00
2026-07-30 13:51:17 +08:00
2026-09-01 22:01:21 +08:00
2026-09-02 21:05:23 +08:00
2026-05-29 23:05:59 +08:00
2026-05-16 09:24:40 +08:00
2026-04-26 11:08:11 +08:00
2026-08-13 23:55:30 +08:00
2026-08-13 23:55:30 +08:00
2026-09-03 08:17:26 +08:00
2026-07-23 22:51:35 +08:00
2026-08-23 09:57:12 +08:00
2026-07-17 14:49:51 +08:00
2026-07-17 14:49:51 +08:00
2026-08-27 14:59:31 +08:00
2026-07-23 22:51:35 +08:00
2026-07-23 22:51:35 +08:00
2026-08-22 16:53:32 +08:00
2026-06-24 13:57:12 +08:00
2026-08-25 07:49:38 +08:00
2026-09-01 22:36:31 +08:00
2026-08-23 09:57:12 +08:00
2026-09-03 08:17:26 +08:00
2026-08-29 14:36:38 +08:00
2026-08-29 14:36:38 +08:00
2026-08-29 14:36:38 +08:00
2026-08-29 14:36:38 +08:00
2026-08-29 14:36:38 +08:00
2026-08-29 14:36:38 +08:00
2026-08-29 14:36:38 +08:00
2026-08-29 14:36:38 +08:00
2026-08-29 14:36:38 +08:00
2026-07-27 11:47:49 +08:00
2026-09-03 08:17:26 +08:00
2026-09-02 09:23:04 +08:00
2026-07-26 08:00:48 +08:00
2026-08-30 21:25:05 +08:00
2026-09-03 08:04:21 +08:00
2026-08-01 22:19:59 +08:00
2026-07-28 07:56:04 +08:00
2026-08-14 12:35:24 +08:00
2026-08-05 08:29:22 +08:00
2026-08-31 23:18:34 +08:00
2026-08-02 22:25:02 +08:00
2026-08-02 22:25:02 +08:00
2026-07-14 07:37:59 +08:00
2026-06-16 23:04:39 +08:00
2026-06-18 10:15:31 +08:00
2026-07-12 08:54:03 +08:00
2026-07-25 21:55:31 +08:00
2026-08-14 23:29:04 +08:00
2026-07-17 14:49:51 +08:00
2026-06-18 10:45:33 +08:00
2026-08-29 08:01:38 +08:00
2026-08-11 21:56:20 +08:00
2026-08-02 22:25:02 +08:00
2026-08-02 22:25:02 +08:00
2026-08-02 22:25:02 +08:00
2026-08-02 22:25:02 +08:00
2026-07-28 22:12:27 +08:00
2026-08-23 09:57:12 +08:00
2026-07-26 10:44:50 +08:00
2026-07-28 23:21:23 +08:00
2026-07-12 08:15:32 +08:00
2026-08-11 21:04:55 +08:00
2026-08-13 23:55:30 +08:00
2026-08-24 07:37:35 +08:00
2026-08-24 07:37:35 +08:00
2026-03-30 07:41:18 +08:00
2026-04-25 19:40:06 +08:00
2026-04-07 18:21:22 +08:00
2026-07-22 14:02:56 +08:00
2026-09-01 16:49:39 +08:00
2026-09-02 11:54:40 +08:00
2026-07-29 22:16:48 +08:00
2026-05-04 09:56:16 +08:00
2026-09-02 21:05:23 +08:00
2026-05-02 15:04:11 +08:00
2026-08-30 15:37:38 +08:00
2026-08-24 21:48:37 +08:00
2026-06-10 21:36:25 +08:00
2026-08-23 15:08:39 +08:00
2026-08-23 15:43:37 +08:00
2026-07-29 22:24:04 +08:00
2026-08-23 09:57:12 +08:00
2026-07-26 07:39:39 +08:00
2026-04-26 11:05:47 +08:00
2026-07-05 09:54:55 +08:00
2026-03-29 15:31:18 +08:00
2026-08-25 07:49:38 +08:00
2026-05-07 16:15:15 +08:00
2026-08-13 23:55:30 +08:00
2026-08-03 08:28:15 +08:00
2026-08-12 09:25:05 +08:00
2026-08-08 21:07:55 +08:00
2026-08-30 21:25:05 +08:00
2026-08-17 08:20:42 +08:00
2026-07-13 17:57:34 +08:00
2026-06-02 22:43:22 +08:00
2026-06-05 15:21:41 +08:00
2026-07-12 00:17:11 +08:00
2026-07-04 23:09:29 +08:00
2026-06-02 22:43:22 +08:00
2026-07-01 22:49:17 +08:00
2026-09-01 16:13:41 +08:00
2026-07-22 08:33:29 +08:00
2026-07-28 23:21:23 +08:00
2026-08-13 23:55:30 +08:00
2026-07-22 13:55:40 +08:00
2026-07-29 22:33:45 +08:00
2026-08-05 08:29:22 +08:00
2026-07-29 22:33:45 +08:00
2026-08-13 23:55:30 +08:00
2026-08-23 10:45:30 +08:00
2026-06-12 15:24:58 +08:00
2026-08-27 17:56:56 +08:00
2026-08-24 21:48:37 +08:00
2026-08-18 23:14:17 +08:00
2026-08-28 10:30:30 +08:00
2026-07-26 07:39:39 +08:00
2026-08-16 11:53:21 +08:00
2026-08-11 21:52:12 +08:00
2026-09-02 09:23:04 +08:00
2026-04-26 11:09:56 +08:00
2026-09-02 21:05:23 +08:00
2026-04-08 17:13:39 +08:00
2026-08-23 09:57:12 +08:00
2026-08-04 22:33:26 +08:00
2026-08-23 09:57:12 +08:00
2026-09-01 16:49:39 +08:00
2026-08-11 16:33:22 +08:00
2026-08-23 09:57:12 +08:00
2026-08-13 23:55:30 +08:00
2026-08-04 22:33:26 +08:00
2026-08-04 22:33:26 +08:00
2026-08-23 09:57:12 +08:00
2026-08-14 23:30:03 +08:00
2026-08-04 22:33:26 +08:00
2026-08-04 22:33:26 +08:00
2026-08-13 23:55:30 +08:00
2026-08-29 23:50:45 +08:00
2026-08-11 16:33:22 +08:00
2026-08-11 16:33:22 +08:00
2026-08-11 16:33:22 +08:00
2026-09-01 10:56:43 +08:00
2026-08-12 09:25:05 +08:00
2026-08-23 15:08:39 +08:00
2026-07-05 09:54:55 +08:00
2026-08-25 07:49:38 +08:00
2026-07-14 10:43:13 +08:00
2026-08-23 10:45:30 +08:00
2026-07-02 08:24:15 +08:00
2026-07-04 21:31:01 +08:00
2026-07-19 22:12:30 +08:00
2026-07-14 11:57:48 +08:00
2026-07-31 21:57:22 +08:00
2026-07-22 08:33:29 +08:00
2026-07-29 00:09:02 +08:00
2026-08-13 23:55:30 +08:00
2026-09-01 22:04:17 +08:00
2026-08-15 14:26:38 +08:00
2026-08-13 23:55:30 +08:00
2026-08-13 23:55:30 +08:00
2026-08-14 23:50:40 +08:00
2026-08-13 23:55:30 +08:00
2026-09-02 21:05:23 +08:00
2026-08-19 22:06:16 +08:00
2026-07-04 22:56:24 +08:00
2026-07-04 22:56:24 +08:00
2026-07-04 22:56:24 +08:00
2026-08-14 12:35:24 +08:00
2026-07-04 22:56:24 +08:00
2026-07-14 22:56:50 +08:00
2026-07-04 22:56:24 +08:00
2026-09-02 21:05:23 +08:00
2026-07-16 09:12:29 +08:00
2026-07-23 14:32:49 +08:00
2026-07-15 22:30:34 +08:00
2026-09-01 10:56:43 +08:00
2026-06-21 15:55:10 +08:00
2026-08-23 09:57:12 +08:00
2026-03-14 22:55:52 +08:00
2026-08-23 15:46:10 +08:00
2026-08-23 15:08:39 +08:00
2026-07-27 22:46:51 +08:00
2026-08-17 08:22:11 +08:00
2026-07-27 14:05:31 +08:00
2026-07-10 11:08:30 +08:00
2026-07-27 23:07:40 +08:00
2026-03-26 14:20:18 +08:00
2026-06-28 16:10:44 +08:00
2026-07-08 17:10:27 +08:00
2026-08-30 11:39:25 +08:00
2026-07-04 13:54:04 +08:00
2026-06-17 15:29:22 +08:00
2026-08-17 08:16:14 +08:00
2026-09-02 14:19:37 +08:00
2026-08-23 15:00:37 +08:00
2026-08-15 21:20:34 +08:00
2026-08-15 21:20:34 +08:00
2026-08-16 23:54:06 +08:00
2026-08-15 21:20:34 +08:00
2026-07-28 22:54:44 +08:00
2026-09-01 15:37:19 +08:00
2026-08-31 14:35:08 +08:00
2026-08-25 07:49:38 +08:00
2026-07-28 23:21:23 +08:00
2026-07-23 08:22:15 +08:00
2026-08-12 08:47:42 +08:00
2026-04-11 16:52:10 +08:00
2026-07-20 23:33:09 +08:00
2026-09-01 16:13:41 +08:00
2026-08-30 15:06:55 +08:00
2026-09-01 10:56:43 +08:00
2026-08-31 14:35:08 +08:00
2026-07-13 00:01:22 +08:00
2026-07-04 13:54:04 +08:00
2026-07-03 08:01:46 +08:00
2026-04-30 22:27:14 +08:00
2026-05-07 16:15:15 +08:00
2026-09-02 10:25:37 +08:00
2026-07-26 14:43:08 +08:00
2026-08-29 14:54:02 +08:00
2026-08-24 11:04:23 +08:00
2026-08-24 11:04:23 +08:00
2026-07-19 22:12:30 +08:00
2026-08-31 15:07:30 +08:00
2026-09-01 23:24:49 +08:00
2026-09-01 23:24:49 +08:00
2026-04-25 09:18:13 +08:00
2026-08-20 08:57:10 +08:00
2026-08-31 15:07:30 +08:00
2026-08-31 15:07:30 +08:00
2026-07-10 07:54:36 +08:00
2026-07-09 16:26:31 +08:00
2026-07-09 16:26:31 +08:00
2026-07-28 22:59:14 +08:00
2026-08-30 11:36:26 +08:00
2026-08-05 08:56:18 +08:00
2026-08-01 22:33:11 +08:00
2026-08-15 14:26:38 +08:00
2026-08-15 14:26:38 +08:00
2026-08-27 10:42:42 +08:00
2026-08-15 14:26:38 +08:00
2026-08-22 16:53:32 +08:00
2026-08-15 14:26:38 +08:00
2026-08-23 15:30:21 +08:00
2026-08-28 10:37:01 +08:00
2026-08-15 14:26:38 +08:00
2026-08-15 14:26:38 +08:00
2026-08-24 06:57:55 +08:00
2026-08-15 14:26:38 +08:00
2026-07-14 09:49:43 +08:00
2026-09-01 23:24:49 +08:00
2026-09-01 15:26:33 +08:00
2026-09-03 08:00:25 +08:00
2026-08-01 08:39:28 +08:00
2026-08-17 08:20:42 +08:00
2026-09-03 08:00:25 +08:00
2026-07-26 21:16:36 +08:00
2026-07-22 07:46:03 +08:00
2026-09-01 16:49:39 +08:00
2026-07-15 11:21:04 +08:00
2026-07-26 21:16:36 +08:00
2026-09-03 08:00:25 +08:00
2026-07-27 23:17:18 +08:00
2026-07-31 18:06:45 +08:00
2026-08-01 08:39:28 +08:00
2026-07-15 11:21:04 +08:00
2026-08-17 08:20:42 +08:00
2026-07-22 07:46:03 +08:00
2026-07-22 07:46:03 +08:00
2026-07-22 07:46:03 +08:00
2026-08-25 08:29:18 +08:00
2026-08-17 08:20:42 +08:00
2026-07-15 11:21:04 +08:00
2026-09-01 16:49:39 +08:00
2026-09-01 15:26:33 +08:00
2026-07-26 21:16:36 +08:00
2026-08-17 08:20:42 +08:00
2026-08-29 16:56:56 +08:00
2026-08-23 09:57:12 +08:00
2026-09-03 08:17:26 +08:00
2026-09-03 08:17:26 +08:00
2026-07-27 23:07:40 +08:00
2026-09-03 08:17:26 +08:00
2026-08-29 23:50:45 +08:00
2026-09-03 08:17:26 +08:00
2026-07-04 13:54:04 +08:00
2026-07-17 14:23:44 +08:00
2026-07-31 21:57:22 +08:00
2026-09-03 17:05:09 +08:00
2026-07-26 14:43:08 +08:00
2026-07-26 14:43:08 +08:00
2026-08-01 22:34:11 +08:00
2026-07-31 17:55:24 +08:00
2026-07-27 23:07:40 +08:00
2026-08-14 23:50:40 +08:00
2026-07-28 21:45:20 +08:00
2026-06-22 18:55:20 +08:00
2026-08-01 22:19:59 +08:00
2026-08-31 15:22:45 +08:00
2026-06-21 15:47:53 +08:00
2026-09-01 15:51:37 +08:00
2026-09-02 09:23:04 +08:00
2026-08-11 13:56:02 +08:00
2026-08-07 11:22:00 +08:00
2026-07-11 16:05:30 +08:00
2026-09-01 15:51:37 +08:00
2026-07-04 21:44:22 +08:00
2026-05-28 18:24:32 +08:00
2026-06-08 22:04:38 +08:00
2026-03-26 15:07:05 +08:00
2026-06-09 18:01:43 +08:00
2026-07-26 08:09:17 +08:00
2026-06-24 13:57:12 +08:00
2026-09-03 08:17:26 +08:00
2026-06-24 13:57:12 +08:00
2026-09-03 08:17:26 +08:00
2026-06-24 13:57:12 +08:00
2026-07-30 13:51:17 +08:00
2026-09-03 08:17:26 +08:00
2026-07-30 13:51:17 +08:00
2026-08-23 09:57:12 +08:00
2026-07-30 13:51:17 +08:00
2026-05-21 16:22:09 +08:00
2026-08-29 23:50:45 +08:00
2026-07-30 13:51:17 +08:00
2026-08-14 11:07:23 +08:00
2026-07-30 13:51:17 +08:00
2026-08-05 07:43:54 +08:00
2026-08-05 07:43:54 +08:00
2026-07-20 07:24:34 +08:00
2026-04-10 20:40:30 +08:00
2026-08-31 14:35:08 +08:00
2026-08-31 14:35:08 +08:00
2026-08-31 14:35:08 +08:00
2026-08-25 16:57:55 +08:00
2026-08-25 16:57:55 +08:00
2026-07-21 09:23:14 +08:00
2026-07-06 20:57:41 +08:00
2026-07-30 07:53:10 +08:00
2026-08-13 21:20:49 +08:00
2026-03-14 22:55:52 +08:00
2026-08-29 16:56:56 +08:00
2026-03-14 22:55:52 +08:00
2026-09-01 16:49:39 +08:00
2026-08-31 14:35:08 +08:00
2026-06-08 17:32:41 +08:00
2026-06-09 21:58:31 +08:00
2026-08-31 23:17:39 +08:00
2026-07-11 15:58:07 +08:00
2026-08-27 14:59:31 +08:00
2026-08-25 08:22:57 +08:00
2026-06-24 17:47:04 +08:00
2026-07-02 07:43:09 +08:00
2026-04-26 15:09:25 +08:00
2026-09-01 22:04:17 +08:00
2026-07-23 21:33:57 +08:00
2026-07-28 21:31:23 +08:00
2026-09-01 22:04:17 +08:00
2026-08-22 16:53:32 +08:00
2026-09-01 16:49:39 +08:00
2026-05-21 14:48:28 +08:00
2026-08-22 16:53:32 +08:00
2026-07-27 22:27:16 +08:00
2026-08-05 08:56:18 +08:00
2026-07-27 11:32:10 +08:00
2026-08-22 16:53:32 +08:00
2026-09-02 21:05:23 +08:00
2026-08-01 19:42:44 +08:00
2026-06-24 10:24:36 +08:00
2026-07-22 08:33:29 +08:00
2026-07-19 22:12:30 +08:00
2026-07-23 22:56:12 +08:00
2026-07-23 22:56:12 +08:00
2026-05-22 21:20:28 +08:00
2026-08-01 21:44:34 +08:00
2026-08-30 15:29:51 +08:00
2026-08-30 10:30:34 +08:00
2026-09-02 21:05:23 +08:00
2026-06-03 22:02:27 +08:00
2026-09-02 21:05:23 +08:00
2026-04-09 17:21:23 +08:00
2026-08-30 10:30:34 +08:00
2026-08-24 15:27:33 +08:00
2026-09-01 10:56:43 +08:00
2026-06-25 08:06:17 +08:00
2026-07-28 07:49:13 +08:00
2026-09-02 21:35:33 +08:00
2026-07-04 13:54:04 +08:00
2026-06-12 10:20:38 +08:00
2026-07-04 21:51:57 +08:00
2026-08-24 15:38:32 +08:00
2026-07-04 21:51:57 +08:00
2026-08-24 15:38:32 +08:00
2026-08-24 15:38:32 +08:00
2026-08-24 15:38:32 +08:00
2026-08-24 15:38:32 +08:00
2026-08-27 14:59:31 +08:00
2026-07-04 21:51:57 +08:00
2026-07-31 17:27:51 +08:00
2026-08-24 15:38:32 +08:00
2026-08-24 07:09:08 +08:00
2026-08-30 21:25:05 +08:00
2026-08-24 21:27:43 +08:00
2026-06-19 11:23:07 +08:00
2026-03-26 14:20:18 +08:00
2026-07-21 08:15:33 +08:00
2026-08-28 10:30:30 +08:00
2026-08-28 10:44:30 +08:00
2026-06-27 23:30:54 +08:00
2026-07-07 23:09:06 +08:00
2026-07-23 08:03:21 +08:00
2026-05-12 23:18:54 +08:00
2026-07-23 08:03:21 +08:00
2026-08-28 22:24:10 +08:00
2026-06-19 21:57:03 +08:00
2026-07-04 23:09:29 +08:00
2026-07-04 11:27:19 +08:00
2026-07-04 11:27:19 +08:00
2026-09-02 17:05:36 +08:00
2026-07-04 23:09:29 +08:00
2026-07-31 17:55:24 +08:00
2026-07-13 10:40:22 +08:00
2026-05-28 15:48:32 +08:00
2026-07-17 14:39:35 +08:00
2026-08-31 14:35:08 +08:00
2026-09-02 19:05:50 +08:00
2026-07-24 21:25:53 +08:00
2026-09-02 16:54:23 +08:00
2026-07-11 15:58:07 +08:00
2026-08-25 19:46:04 +08:00
2026-08-28 08:58:59 +08:00
2026-03-25 16:28:33 +08:00
2026-07-16 14:12:02 +08:00
2026-09-02 11:54:40 +08:00
2026-07-19 22:36:15 +08:00
2026-08-28 08:58:59 +08:00
2026-08-28 08:58:59 +08:00
2026-07-17 23:22:16 +08:00
2026-08-31 15:22:45 +08:00
2026-09-02 00:33:21 +08:00
2026-08-03 17:17:01 +08:00
2026-06-18 10:09:46 +08:00
2026-07-08 21:58:33 +08:00
2026-09-01 15:26:33 +08:00
2026-07-28 22:59:14 +08:00
2026-03-30 16:02:23 +08:00
2026-09-01 15:51:37 +08:00
2026-07-31 17:25:07 +08:00
2026-07-22 09:20:54 +08:00
2026-08-30 10:46:01 +08:00
2026-09-01 15:51:37 +08:00
2026-08-25 07:49:38 +08:00
2026-08-25 07:49:38 +08:00
2026-08-25 07:49:38 +08:00
2026-08-25 07:49:38 +08:00
2026-08-30 10:43:58 +08:00
2026-06-14 10:30:45 +08:00
2026-06-08 23:17:22 +08:00
2026-07-14 08:14:21 +08:00
2026-09-02 11:54:40 +08:00
2026-09-02 21:05:23 +08:00
2026-08-25 07:49:38 +08:00
2026-08-24 11:04:23 +08:00
2026-08-30 11:39:25 +08:00
2026-07-30 07:21:55 +08:00
2026-08-25 07:49:38 +08:00
2026-05-02 06:37:49 +08:00
2026-09-01 16:13:41 +08:00
2026-07-11 15:41:57 +08:00
2026-07-13 19:26:07 +08:00
2026-06-19 21:42:42 +08:00
2026-08-24 11:04:23 +08:00
2026-07-28 19:35:21 +08:00
2026-09-03 17:05:09 +08:00
2026-07-07 19:55:33 +08:00
2026-07-27 11:47:49 +08:00
2026-07-27 11:47:49 +08:00
2026-08-01 19:42:44 +08:00
2026-08-23 09:57:12 +08:00
2026-09-02 10:25:37 +08:00
2026-05-21 21:18:10 +08:00
2026-08-30 21:25:05 +08:00
2026-08-23 10:27:19 +08:00
2026-08-27 18:12:05 +08:00
2026-09-02 09:23:04 +08:00
2026-07-11 15:53:14 +08:00
2026-07-28 22:59:14 +08:00
2026-08-30 14:30:16 +08:00
2026-08-01 19:42:44 +08:00
2026-07-27 22:46:51 +08:00
2026-08-11 22:00:57 +08:00
2026-08-25 08:29:18 +08:00
2026-09-01 15:26:33 +08:00
2026-07-29 12:47:30 +08:00
2026-07-27 22:46:51 +08:00
2026-06-02 22:43:22 +08:00
2026-07-22 08:33:29 +08:00
2026-07-31 21:57:22 +08:00
2026-07-28 23:21:23 +08:00
2026-09-01 22:04:17 +08:00
2026-08-31 14:35:08 +08:00
2026-07-15 11:21:04 +08:00
2026-03-14 22:55:52 +08:00
2026-09-02 14:40:12 +08:00
2026-08-11 11:41:31 +08:00
2026-07-08 22:26:06 +08:00
2026-07-04 23:14:46 +08:00
2026-05-10 22:00:57 +08:00
2026-08-12 09:25:05 +08:00
2026-07-28 23:21:23 +08:00
2026-09-01 14:15:26 +08:00
2026-08-22 16:53:32 +08:00
2026-08-31 14:35:08 +08:00
2026-07-04 11:27:19 +08:00
2026-08-23 09:57:12 +08:00
2026-09-01 16:13:41 +08:00
2026-07-06 20:57:41 +08:00
2026-08-29 16:56:56 +08:00
2026-08-29 16:56:56 +08:00
2026-08-30 15:37:38 +08:00
2026-09-01 09:49:32 +08:00
2026-07-14 09:49:43 +08:00
2026-08-23 09:57:12 +08:00
2026-09-01 16:49:39 +08:00
2026-09-01 16:49:39 +08:00
2026-09-01 16:49:39 +08:00
2026-07-14 08:58:06 +08:00
2026-07-14 08:58:06 +08:00
2026-07-03 08:01:46 +08:00
2026-08-25 20:15:08 +08:00
2026-08-04 08:33:10 +08:00
2026-08-13 23:55:30 +08:00
2026-07-22 07:53:50 +08:00
2026-06-25 20:10:49 +08:00
2026-06-25 20:10:49 +08:00
2026-06-25 20:10:49 +08:00
2026-06-25 20:10:49 +08:00
2026-06-25 20:10:49 +08:00
2026-06-25 20:10:49 +08:00
2026-06-25 20:10:49 +08:00
2026-06-25 20:10:49 +08:00
2026-07-15 22:27:00 +08:00
2026-06-25 20:10:49 +08:00
2026-08-05 08:15:28 +08:00
2026-07-20 23:56:37 +08:00
2026-05-12 23:18:54 +08:00
2026-08-24 11:04:23 +08:00
2026-07-26 21:16:36 +08:00
2026-07-26 21:16:36 +08:00
2026-08-28 09:16:51 +08:00
2026-07-28 22:59:14 +08:00
2026-09-02 21:05:23 +08:00
2026-07-28 22:59:14 +08:00
2026-09-03 08:17:26 +08:00
2026-08-24 21:27:43 +08:00
2026-07-11 09:18:12 +08:00
2026-07-14 10:43:13 +08:00
2026-05-02 15:16:16 +08:00
2026-08-13 23:55:30 +08:00
2026-08-23 15:43:37 +08:00
2026-08-27 09:12:37 +08:00
2026-07-24 13:12:43 +08:00
2026-07-28 19:56:40 +08:00
2026-07-27 07:13:06 +08:00
2026-07-06 07:21:12 +08:00
2026-07-20 23:05:47 +08:00
2026-08-30 21:25:05 +08:00
2026-07-18 17:53:30 +08:00
2026-07-12 07:52:45 +08:00
2026-09-01 16:49:39 +08:00
2026-09-01 22:04:17 +08:00
2026-07-12 11:51:31 +08:00
2026-09-01 16:49:39 +08:00
2026-08-20 08:57:10 +08:00
2026-06-07 17:47:11 +08:00