cc-transcript 14.32.0__tar.gz → 14.32.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/PKG-INFO +1 -1
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/pyproject.toml +1 -1
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/snapshot.rs +47 -19
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/snapshot_projection.rs +161 -90
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/Cargo.lock +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/Cargo.toml +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/LICENSE +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/README.md +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/__init__.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/__init__.pyi +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/_native.pyi +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/activity.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/activity_probe.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/builders.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/codex.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/command.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/context.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/corrections.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/cost.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/decision_store.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/decisions.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/discovery.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/disktruth.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/evidence.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/extract/__init__.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/extract/correct.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/facts.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/filterspec.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/heartbeats.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/ids.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/judge/__init__.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/judge/llm.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/judge/similar.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/judge/verdicts.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/ledger.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/literals.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/mining/__init__.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/mining/candidates.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/mining/confidence.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/mining/engine.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/mining/formats.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/mining/sampling.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/mining/signals.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/mining/sourcekind.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/mining/spec.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/mining/store.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/models.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/nlp.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/notifications.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/parser.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/py.typed +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/query.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/render.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/sentiment/__init__.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/sentiment/buckets.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/sentiment/data/afinn-en-165.tsv +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/sentiment/data/domain_overrides.tsv +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/sentiment/data/en-ewt.udpipe +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/sentiment/engine.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/sentiment/lexicon.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/sentiment/scorespec.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/snapshot_schema/config.schema.json +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/snapshot_schema/context.schema.json +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/snapshot_schema/request.schema.json +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/snapshot_schema/response.schema.json +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/snapshot_schema/tool_registry.schema.json +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/snapshots.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/synthetic.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/tools.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/watch.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/cli/Cargo.toml +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/cli/src/commands/blame.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/cli/src/commands/corpus.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/cli/src/commands/corrections.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/cli/src/commands/digest.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/cli/src/commands/facts.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/cli/src/commands/grep.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/cli/src/commands/list.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/cli/src/commands/mod.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/cli/src/commands/scratchpad.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/cli/src/commands/show.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/cli/src/commands/slice.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/cli/src/commands/stats.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/cli/src/commands/watch.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/cli/src/lib.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/cli/src/main.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/cli/src/output.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/cli/src/target.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/cli/src/timearg.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/Cargo.toml +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/benches/parse.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/benches/render.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/benches/toolcall.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/activity.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/actor.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/blame.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/buckets.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/codex/discovery.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/codex/lower.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/codex/mod.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/codex/parse.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/codex/probe.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/codex/protocol.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/codex/types.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/command.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/context.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/corrections.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/cost.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/discovery.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/facts.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/feedback.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/filter.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/gateway.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/ids.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/judge.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/lib.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/literals/command.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/literals/corrections.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/literals/feedback.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/literals/mining.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/literals/mod.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/literals/protocol.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/notifications.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/parse.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/protocol.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/pystr.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/query.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/render.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/rng.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/scan.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/scan_grep.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/scan_regressions.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/schema.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/snapshot_activity.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/snapshot_codec.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/snapshot_codex_append.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/snapshot_labels.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/snapshot_memory.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/snapshot_owned.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/snapshot_prepared.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/snapshot_prepared_disk.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/snapshot_prepared_service.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/snapshot_regressions.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/snapshot_root_warm.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/snapshot_text.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/sqlite.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/toolcall.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/types.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/value.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/watch.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/Cargo.toml +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/build.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/data/command_prefix_pins.tsv +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/actor_bridge.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/bin/stub_gen.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/codex.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/command.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/context.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/corrections.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/discovery.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/feedback.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/judge.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/lexicon.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/lib.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/mining.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/nlp.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/python.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/render.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/score.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/snapshot_decode.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/snapshots.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/sqlite.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/toolcall.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/views/attachment.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/views/blocks.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/views/command.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/views/convert.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/views/dunder.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/views/events.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/views/meta.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/views/mod.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/views/print.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/views/store.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/views/system.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/views/toolcall.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/views/toolresult.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/views/transcript.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/py/src/watch.rs +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "cc-transcript"
|
|
3
|
-
version = "14.32.
|
|
3
|
+
version = "14.32.1" # informational — releases stamp the version from the git tag
|
|
4
4
|
description = "Grep every Claude Code session you've ever run."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "PolyForm-Noncommercial-1.0.0"
|
|
@@ -2488,9 +2488,8 @@ impl NativeStore {
|
|
|
2488
2488
|
.projections
|
|
2489
2489
|
.values()
|
|
2490
2490
|
.map(|cursor| {
|
|
2491
|
-
crate::snapshot_memory::value_charge(&cursor.request)
|
|
2492
|
-
|
|
2493
|
-
.opaque_dom_accounted_bytes
|
|
2491
|
+
let charge = crate::snapshot_memory::value_charge(&cursor.request);
|
|
2492
|
+
charge.owned_capacity_bytes + charge.opaque_dom_accounted_bytes
|
|
2494
2493
|
})
|
|
2495
2494
|
.sum();
|
|
2496
2495
|
let graph_bytes: usize = state
|
|
@@ -2669,24 +2668,25 @@ impl NativeStore {
|
|
|
2669
2668
|
let cap = self.memory_cap(context)?;
|
|
2670
2669
|
if number(&Self::gauges(state), "retained_total_accounted_bytes")?
|
|
2671
2670
|
.saturating_add(additional)
|
|
2672
|
-
|
|
2671
|
+
<= cap
|
|
2673
2672
|
{
|
|
2674
|
-
|
|
2675
|
-
.lock()
|
|
2676
|
-
.expect("classified snapshots")
|
|
2677
|
-
.retain(|_, snapshot| Arc::strong_count(snapshot) > 1);
|
|
2678
|
-
let leased: HashSet<_> = state
|
|
2679
|
-
.leases
|
|
2680
|
-
.values()
|
|
2681
|
-
.map(|lease| lease.snapshot.id.clone())
|
|
2682
|
-
.collect();
|
|
2683
|
-
state.latest.retain(|_, snapshot| {
|
|
2684
|
-
leased.contains(&snapshot.id) || Arc::strong_count(snapshot) > 1
|
|
2685
|
-
});
|
|
2686
|
-
state
|
|
2687
|
-
.carried_classifications
|
|
2688
|
-
.retain(|_, carried| Arc::strong_count(carried) > 1);
|
|
2673
|
+
return Ok(());
|
|
2689
2674
|
}
|
|
2675
|
+
self.classified
|
|
2676
|
+
.lock()
|
|
2677
|
+
.expect("classified snapshots")
|
|
2678
|
+
.retain(|_, snapshot| Arc::strong_count(snapshot) > 1);
|
|
2679
|
+
let leased: HashSet<_> = state
|
|
2680
|
+
.leases
|
|
2681
|
+
.values()
|
|
2682
|
+
.map(|lease| lease.snapshot.id.clone())
|
|
2683
|
+
.collect();
|
|
2684
|
+
state
|
|
2685
|
+
.latest
|
|
2686
|
+
.retain(|_, snapshot| leased.contains(&snapshot.id) || Arc::strong_count(snapshot) > 1);
|
|
2687
|
+
state
|
|
2688
|
+
.carried_classifications
|
|
2689
|
+
.retain(|_, carried| Arc::strong_count(carried) > 1);
|
|
2690
2690
|
if number(&Self::gauges(state), "retained_total_accounted_bytes")?
|
|
2691
2691
|
.saturating_add(additional)
|
|
2692
2692
|
> cap
|
|
@@ -7068,6 +7068,34 @@ mod tests {
|
|
|
7068
7068
|
);
|
|
7069
7069
|
}
|
|
7070
7070
|
|
|
7071
|
+
#[test]
|
|
7072
|
+
fn projection_reservations_preserve_exact_admission_caps_and_release_capacity() {
|
|
7073
|
+
for background in [false, true] {
|
|
7074
|
+
let store = store();
|
|
7075
|
+
let mut owner = context("a");
|
|
7076
|
+
if background {
|
|
7077
|
+
owner.insert("work_class", json!("background"));
|
|
7078
|
+
}
|
|
7079
|
+
let baseline = store.retained_accounted_bytes();
|
|
7080
|
+
let cap = if background {
|
|
7081
|
+
32 * 1024 * 1024 - 4096
|
|
7082
|
+
} else {
|
|
7083
|
+
32 * 1024 * 1024
|
|
7084
|
+
};
|
|
7085
|
+
let reservation = store.reserve_projection(&owner, cap - baseline).unwrap();
|
|
7086
|
+
assert_eq!(store.retained_accounted_bytes(), cap);
|
|
7087
|
+
let refused = store.reserve_projection(&owner, 1);
|
|
7088
|
+
assert!(matches!(refused, Err(error) if error.status == Status::RetainedLimit));
|
|
7089
|
+
assert_eq!(store.retained_accounted_bytes(), cap);
|
|
7090
|
+
drop(reservation);
|
|
7091
|
+
assert_eq!(store.retained_accounted_bytes(), baseline);
|
|
7092
|
+
let reused = store.reserve_projection(&owner, cap - baseline).unwrap();
|
|
7093
|
+
assert_eq!(store.retained_accounted_bytes(), cap);
|
|
7094
|
+
drop(reused);
|
|
7095
|
+
assert_eq!(store.retained_accounted_bytes(), baseline);
|
|
7096
|
+
}
|
|
7097
|
+
}
|
|
7098
|
+
|
|
7071
7099
|
#[test]
|
|
7072
7100
|
fn escaped_borrowed_entries_remain_accounted_after_release() {
|
|
7073
7101
|
let source = Source::new(&format!("{}\n", user("a")));
|
|
@@ -1336,77 +1336,58 @@ fn workflow_query(
|
|
|
1336
1336
|
scalar(json!(matched), work)
|
|
1337
1337
|
}
|
|
1338
1338
|
|
|
1339
|
-
fn
|
|
1340
|
-
|
|
1341
|
-
range: &Range<usize>,
|
|
1342
|
-
produce: impl FnOnce(&mut Work) -> Result<T, SnapshotError>,
|
|
1343
|
-
) -> Result<T, SnapshotError> {
|
|
1339
|
+
fn render_window(work: &Work, range: &Range<usize>) -> Result<Range<usize>, SnapshotError> {
|
|
1340
|
+
let limit = work.limits.max_output_bytes;
|
|
1344
1341
|
let mut input = OutputCounter {
|
|
1345
|
-
remaining:
|
|
1346
|
-
.limits
|
|
1347
|
-
.max_output_bytes
|
|
1348
|
-
.checked_sub(64)
|
|
1349
|
-
.ok_or_else(output_limit)?
|
|
1350
|
-
/ 16,
|
|
1342
|
+
remaining: limit.checked_sub(64).ok_or_else(output_limit)? / 16,
|
|
1351
1343
|
};
|
|
1352
|
-
let
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
.
|
|
1361
|
-
.
|
|
1362
|
-
.
|
|
1363
|
-
|
|
1344
|
+
let activity = &work.snapshot.activity;
|
|
1345
|
+
let mut start = range.end;
|
|
1346
|
+
let mut turn = 0;
|
|
1347
|
+
let mut bounds = 0..0;
|
|
1348
|
+
let mut pending = HashSet::new();
|
|
1349
|
+
for index in range.clone().rev() {
|
|
1350
|
+
work.cancel.check(work.limits.deadline_unix_ms)?;
|
|
1351
|
+
if !bounds.contains(&index) {
|
|
1352
|
+
turn = activity.turn_of_event(index).expect("view turn");
|
|
1353
|
+
bounds = activity.turn_bounds(turn).expect("view turn");
|
|
1354
|
+
pending.clear();
|
|
1355
|
+
}
|
|
1356
|
+
let entry = work.snapshot.entry(index);
|
|
1357
|
+
pending.extend(entry.blocks().iter().filter_map(|block| match block {
|
|
1358
|
+
ContentBlock::ToolResult(result) => Some(result.tool_use_id.as_str()),
|
|
1359
|
+
_ => None,
|
|
1360
|
+
}));
|
|
1361
|
+
let fits = snapshot_codec::write_json(&mut input, entry, limit).is_ok()
|
|
1362
|
+
&& entry.blocks().iter().all(|block| match block {
|
|
1363
|
+
ContentBlock::ToolUse(tool) if pending.contains(tool.id.as_str()) => {
|
|
1364
|
+
snapshot_codec::write_json(&mut input, tool.name.as_str(), limit).is_ok()
|
|
1365
|
+
}
|
|
1366
|
+
_ => true,
|
|
1367
|
+
})
|
|
1368
|
+
&& (index != bounds.start
|
|
1369
|
+
|| snapshot_codec::write_json(
|
|
1370
|
+
&mut input,
|
|
1371
|
+
activity.prompt(turn).expect("view turn"),
|
|
1372
|
+
limit,
|
|
1373
|
+
)
|
|
1374
|
+
.is_ok());
|
|
1375
|
+
if !fits {
|
|
1376
|
+
break;
|
|
1377
|
+
}
|
|
1378
|
+
start = index;
|
|
1379
|
+
}
|
|
1380
|
+
let window = start..range.end;
|
|
1381
|
+
if !window.is_empty() {
|
|
1382
|
+
let first = activity.turn_of_event(window.start).expect("view turn");
|
|
1383
|
+
let last = activity.turn_of_event(window.end - 1).expect("view turn");
|
|
1384
|
+
let mut clones = limit;
|
|
1364
1385
|
for index in first..=last {
|
|
1365
|
-
let copied =
|
|
1366
|
-
.snapshot
|
|
1367
|
-
.activity
|
|
1368
|
-
.projected_bytes(index)
|
|
1369
|
-
.expect("view turn");
|
|
1386
|
+
let copied = activity.projected_bytes(index).expect("view turn");
|
|
1370
1387
|
clones = clones.checked_sub(copied).ok_or_else(output_limit)?;
|
|
1371
|
-
let bounds = work
|
|
1372
|
-
.snapshot
|
|
1373
|
-
.activity
|
|
1374
|
-
.turn_bounds(index)
|
|
1375
|
-
.expect("view turn");
|
|
1376
|
-
work.charge_range(bounds.clone())?;
|
|
1377
|
-
let mut names = std::collections::HashMap::new();
|
|
1378
|
-
for position in bounds {
|
|
1379
|
-
let entry = work.snapshot.entry(position);
|
|
1380
|
-
snapshot_codec::write_json(&mut input, entry, work.limits.max_output_bytes)
|
|
1381
|
-
.map_err(|_| output_limit())?;
|
|
1382
|
-
for block in entry.blocks() {
|
|
1383
|
-
match block {
|
|
1384
|
-
ContentBlock::ToolUse(tool) => {
|
|
1385
|
-
names.insert(tool.id.as_str(), tool.name.as_str());
|
|
1386
|
-
}
|
|
1387
|
-
ContentBlock::ToolResult(result) => {
|
|
1388
|
-
if let Some(name) = names.get(result.tool_use_id.as_str()) {
|
|
1389
|
-
snapshot_codec::write_json(
|
|
1390
|
-
&mut input,
|
|
1391
|
-
name,
|
|
1392
|
-
work.limits.max_output_bytes,
|
|
1393
|
-
)
|
|
1394
|
-
.map_err(|_| output_limit())?;
|
|
1395
|
-
}
|
|
1396
|
-
}
|
|
1397
|
-
_ => {}
|
|
1398
|
-
}
|
|
1399
|
-
}
|
|
1400
|
-
}
|
|
1401
|
-
snapshot_codec::write_json(
|
|
1402
|
-
&mut input,
|
|
1403
|
-
work.snapshot.activity.prompt(index).expect("view turn"),
|
|
1404
|
-
work.limits.max_output_bytes,
|
|
1405
|
-
)
|
|
1406
|
-
.map_err(|_| output_limit())?;
|
|
1407
1388
|
}
|
|
1408
1389
|
}
|
|
1409
|
-
|
|
1390
|
+
Ok(window)
|
|
1410
1391
|
}
|
|
1411
1392
|
|
|
1412
1393
|
fn render_query(
|
|
@@ -1418,24 +1399,30 @@ fn render_query(
|
|
|
1418
1399
|
let tool_results = field(query, "tool_results")?
|
|
1419
1400
|
.as_bool()
|
|
1420
1401
|
.ok_or_else(|| invalid("tool_results must be boolean"))?;
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1402
|
+
let window = render_window(work, &range)?;
|
|
1403
|
+
let lift = lift_range(work, &window, None)?;
|
|
1404
|
+
let session = view(&lift, &window, work.snapshot);
|
|
1405
|
+
let mut parts: Vec<_> = session
|
|
1406
|
+
.turn_views()
|
|
1407
|
+
.map(|(_, prompt, events, uses)| {
|
|
1408
|
+
render::render_turn_parts(
|
|
1409
|
+
prompt,
|
|
1410
|
+
events,
|
|
1411
|
+
&uses.iter().map(|use_| &use_.call).collect::<Vec<_>>(),
|
|
1412
|
+
&budget,
|
|
1413
|
+
tool_results,
|
|
1414
|
+
)
|
|
1415
|
+
})
|
|
1416
|
+
.filter(|text| !text.is_empty())
|
|
1417
|
+
.collect();
|
|
1418
|
+
let omitted = window.start - range.start;
|
|
1419
|
+
if omitted != 0 {
|
|
1420
|
+
parts.insert(
|
|
1421
|
+
0,
|
|
1422
|
+
format!("[{omitted} earlier events omitted: over the render budget]"),
|
|
1423
|
+
);
|
|
1424
|
+
}
|
|
1425
|
+
scalar(json!(parts.join("\n\n")), work)
|
|
1439
1426
|
}
|
|
1440
1427
|
|
|
1441
1428
|
#[derive(serde::Serialize)]
|
|
@@ -2785,19 +2772,103 @@ mod tests {
|
|
|
2785
2772
|
let mut cap = limits();
|
|
2786
2773
|
cap.max_output_bytes = 128;
|
|
2787
2774
|
let cancel = Cancellation::default();
|
|
2788
|
-
let
|
|
2789
|
-
|
|
2790
|
-
visits.set(visits.get() + 1);
|
|
2791
|
-
Ok(())
|
|
2792
|
-
});
|
|
2793
|
-
assert!(matches!(produced,Err(error) if error.status==Status::OutputLimit));
|
|
2794
|
-
assert_eq!(visits.get(), 0);
|
|
2775
|
+
let work = Work::new(&snap, &cap, &cancel);
|
|
2776
|
+
assert_eq!(render_window(&work, &(0..1)).unwrap(), 1..1);
|
|
2795
2777
|
let req = request(json!({"kind":"user_text"}), json!([]));
|
|
2796
2778
|
assert!(
|
|
2797
2779
|
matches!(project(&snap,&req,&cap,&cancel,0),Err(error) if error.status==Status::OutputLimit)
|
|
2798
2780
|
);
|
|
2799
2781
|
}
|
|
2800
2782
|
|
|
2783
|
+
fn render_request(selectors: Value) -> Value {
|
|
2784
|
+
request(
|
|
2785
|
+
json!({"kind":"render","budget":{"turn_chars":100,"tool_chars":100},"tool_results":false}),
|
|
2786
|
+
selectors,
|
|
2787
|
+
)
|
|
2788
|
+
}
|
|
2789
|
+
|
|
2790
|
+
fn long_turn(calls: usize, input_bytes: usize) -> Vec<Value> {
|
|
2791
|
+
std::iter::once(user("u", "start the long run"))
|
|
2792
|
+
.chain((0..calls).flat_map(|call| {
|
|
2793
|
+
let id = format!("bash-{call}");
|
|
2794
|
+
[
|
|
2795
|
+
tool(
|
|
2796
|
+
&format!("call-{call}"),
|
|
2797
|
+
&id,
|
|
2798
|
+
"Bash",
|
|
2799
|
+
json!({"command":format!("echo {call} {}", "x".repeat(input_bytes))}),
|
|
2800
|
+
),
|
|
2801
|
+
tool_result(&format!("result-{call}"), &id, format!("done {call}")),
|
|
2802
|
+
]
|
|
2803
|
+
}))
|
|
2804
|
+
.collect()
|
|
2805
|
+
}
|
|
2806
|
+
|
|
2807
|
+
#[test]
|
|
2808
|
+
fn render_inside_one_long_turn_charges_only_the_window() {
|
|
2809
|
+
let snap = snapshot(&long_turn(400, 2048));
|
|
2810
|
+
let count = snap.event_count;
|
|
2811
|
+
let cap = long_turn_limits();
|
|
2812
|
+
let mut whole_turn = OutputCounter {
|
|
2813
|
+
remaining: (cap.max_output_bytes - 64) / 16,
|
|
2814
|
+
};
|
|
2815
|
+
assert!((0..count).any(|index| {
|
|
2816
|
+
snapshot_codec::write_json(&mut whole_turn, snap.entry(index), cap.max_output_bytes)
|
|
2817
|
+
.is_err()
|
|
2818
|
+
}));
|
|
2819
|
+
let cancel = Cancellation::default();
|
|
2820
|
+
let request =
|
|
2821
|
+
render_request(json!([{"kind":"event_range","start":count - 6,"stop":count}]));
|
|
2822
|
+
let result = project(&snap, &request, &cap, &cancel, 0).unwrap();
|
|
2823
|
+
assert!(result.complete);
|
|
2824
|
+
let text = result.data["value"].as_str().unwrap();
|
|
2825
|
+
assert!(!text.contains("omitted"));
|
|
2826
|
+
assert!(text.contains("echo 397") && text.contains("echo 399"));
|
|
2827
|
+
assert!(!text.contains("echo 396"));
|
|
2828
|
+
}
|
|
2829
|
+
|
|
2830
|
+
fn long_turn_limits() -> WorkLimits {
|
|
2831
|
+
WorkLimits {
|
|
2832
|
+
max_read_bytes: 64 * 1024 * 1024,
|
|
2833
|
+
max_events: 10_000,
|
|
2834
|
+
max_output_bytes: 2 * 1024 * 1024,
|
|
2835
|
+
..limits()
|
|
2836
|
+
}
|
|
2837
|
+
}
|
|
2838
|
+
|
|
2839
|
+
#[test]
|
|
2840
|
+
fn over_budget_render_keeps_the_newest_events_and_names_the_omission() {
|
|
2841
|
+
let snap = snapshot(&long_turn(400, 2048));
|
|
2842
|
+
let count = snap.event_count;
|
|
2843
|
+
let cap = long_turn_limits();
|
|
2844
|
+
let cancel = Cancellation::default();
|
|
2845
|
+
let work = Work::new(&snap, &cap, &cancel);
|
|
2846
|
+
let window = render_window(&work, &(0..count)).unwrap();
|
|
2847
|
+
assert_eq!(window.end, count);
|
|
2848
|
+
assert!(window.start > 1 && window.len() > 6);
|
|
2849
|
+
let result = project(&snap, &render_request(json!([])), &cap, &cancel, 0).unwrap();
|
|
2850
|
+
assert!(result.complete);
|
|
2851
|
+
let text = result.data["value"].as_str().unwrap();
|
|
2852
|
+
let marker = format!(
|
|
2853
|
+
"[{} earlier events omitted: over the render budget]\n\n",
|
|
2854
|
+
window.start
|
|
2855
|
+
);
|
|
2856
|
+
assert!(text.starts_with(&marker));
|
|
2857
|
+
assert!(text.contains("echo 399"));
|
|
2858
|
+
assert!(!text.contains("start the long run"));
|
|
2859
|
+
let single = snapshot(&[user("u", &"y".repeat(32768))]);
|
|
2860
|
+
let tiny = WorkLimits {
|
|
2861
|
+
max_output_bytes: 1024,
|
|
2862
|
+
..limits()
|
|
2863
|
+
};
|
|
2864
|
+
let result = project(&single, &render_request(json!([])), &tiny, &cancel, 0).unwrap();
|
|
2865
|
+
assert!(result.complete);
|
|
2866
|
+
assert_eq!(
|
|
2867
|
+
result.data["value"].as_str(),
|
|
2868
|
+
Some("[1 earlier events omitted: over the render budget]")
|
|
2869
|
+
);
|
|
2870
|
+
}
|
|
2871
|
+
|
|
2801
2872
|
#[test]
|
|
2802
2873
|
fn text_preflight_counts_escaping_and_keeps_unicode_prefixes() {
|
|
2803
2874
|
let parts = ["\n\t\u{0}", "\"\\😀"];
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/sentiment/data/afinn-en-165.tsv
RENAMED
|
File without changes
|
{cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/sentiment/data/domain_overrides.tsv
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/snapshot_schema/config.schema.json
RENAMED
|
File without changes
|
{cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/snapshot_schema/context.schema.json
RENAMED
|
File without changes
|
{cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/snapshot_schema/request.schema.json
RENAMED
|
File without changes
|
{cc_transcript-14.32.0 → cc_transcript-14.32.1}/cc_transcript/snapshot_schema/response.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/literals/corrections.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/snapshot_codex_append.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/snapshot_prepared_disk.rs
RENAMED
|
File without changes
|
{cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/snapshot_prepared_service.rs
RENAMED
|
File without changes
|
{cc_transcript-14.32.0 → cc_transcript-14.32.1}/rust/crates/core/src/snapshot_regressions.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|