memleaf 0.2.50__tar.gz → 0.2.51__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.
- {memleaf-0.2.50 → memleaf-0.2.51}/CHANGELOG.md +6 -0
- {memleaf-0.2.50/src/memleaf.egg-info → memleaf-0.2.51}/PKG-INFO +2 -2
- {memleaf-0.2.50 → memleaf-0.2.51}/README.en.md +1 -1
- {memleaf-0.2.50 → memleaf-0.2.51}/README.md +1 -1
- {memleaf-0.2.50 → memleaf-0.2.51}/pyproject.toml +1 -1
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/__init__.py +1 -1
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/hermes_provider/plugin.yaml +1 -1
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/single_pass_plan.py +7 -1
- {memleaf-0.2.50 → memleaf-0.2.51/src/memleaf.egg-info}/PKG-INFO +2 -2
- {memleaf-0.2.50 → memleaf-0.2.51}/LICENSE +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/MANIFEST.in +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/docs/capture-budget-design.md +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/docs/config-migrations.md +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/docs/core-refactor.md +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/docs/evidence-retention.md +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/docs/extraction-latency.md +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/docs/gate-evidence-boundary.md +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/docs/general-processing.md +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/docs/hermes-mcp-runtime.md +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/docs/processing-quality-acceptance.md +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/docs/v0.2.26-processing-status.md +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/examples/README.md +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/examples/basic_usage.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/examples/mcp_stdio.ndjson +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/install.ps1 +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/install.sh +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/setup.cfg +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/__main__.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/adapters/__init__.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/adapters/antigravity.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/adapters/base.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/adapters/codex.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/adapters/hermes.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/admission.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/batch_review.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/budget.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/capture.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/cli.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/compaction.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/config.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/create_coordinator.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/credentials.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/evidence_budget.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/evidence_policy.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/evidence_structure.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/evidence_syntax.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/extraction_budget.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/extraction_capability.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/extraction_work_state.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/frontmatter.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/hermes_provider/README.md +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/hermes_provider/__init__.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/hermes_provider/_mcp_client.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/hermes_provider/_provider.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/hermes_provider/_shared.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/hermes_provider/evidence_budget.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/hermes_runtime.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/host_events.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/host_runtime.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/inbox.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/index.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/inspection.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/installer.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/llm/__init__.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/llm/base.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/llm/claude_compatible.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/llm/gemini.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/llm/openai_compatible.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/llm/router.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/llm/thinking.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/locking.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/mcp_server.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/memory_commit.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/memory_planner.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/memory_writer.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/model_capabilities.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/model_discovery.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/model_execution.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/models.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/native_index.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/native_registration.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/parallel_model.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/planning_context.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/process_common.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/process_jobs.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/process_journal.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/process_owner.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/processing.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/prompts.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/provenance.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/recording_policy.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/redaction.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/retention.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/retrieval.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/retrieval_gate.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/scope_maintenance.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/scope_state.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/service.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/single_pass_memory_planner.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/source_policy.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/state_layout.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/subprocess_flags.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/summary_batch.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/target_reconciliation.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/turn_audit.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/turn_plan.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/update_coordinator.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/update_review.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/validation.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf/vault.py +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf.egg-info/SOURCES.txt +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf.egg-info/dependency_links.txt +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf.egg-info/entry_points.txt +0 -0
- {memleaf-0.2.50 → memleaf-0.2.51}/src/memleaf.egg-info/top_level.txt +0 -0
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to memleaf are documented here.
|
|
4
4
|
|
|
5
|
+
## 0.2.51 — 2026-09-13
|
|
6
|
+
|
|
7
|
+
- Publish the scope vocabulary in the B3 single-pass contract. The compact contract described `scopes` only as `nonempty string[]` and never named `project:<name>`, so a planner handed an empty `scope_registry` had exactly one value it could be sure was legal. A first message that plainly establishes a project -- "最近在弄个记账的小玩意儿,就扔家里那台 N100 上跑" -- was filed under `global`, producing the internally inconsistent `type=project` beside `scopes=["global"]`. The legacy summarize contract always carried this paragraph; B3 lost it, the same way it had lost the todo-field and date rules repaired in 0.2.48 and 0.2.50.
|
|
8
|
+
- State the rule as an ownership decision rather than a permission. The first wording ("use a project scope only when the evidence establishes that project") was read as being about *topics*, and the model kept choosing `global`. The shipped wording says that a candidate concerning one distinct project the user is working on -- a `type=project` memory, or the work, decisions, state or deadlines belonging to that project -- is scoped to that project as `project:<name>`, named as the evidence names it, and that `global` is for a fact no single project owns: a standing personal preference, a machine-wide or tool-wide rule, or an environment fact. Nothing had to be built for this: new scope names are already accepted unregistered, `project:记账` is a legal key, and the commit path registers newly observed scopes on write.
|
|
9
|
+
- Verification for this release used the real model and the real prompt builder. 102 tests pass with no model call, pinning the vocabulary, the directive phrasing and the `see SCOPES` reference from the compact contract. Against the live route, eight sentences were sent with an EMPTY memory library so the model had to CREATE and only the chosen scope was under test: three project-shaped sentences produced `project:记账`, `project:爬虫` and `project:NAS`, three global-shaped sentences produced `global`, a bare product mention ("我看了下 FastAPI 的文档") stayed `global` rather than claiming ownership, and someone else's project produced no memory at all. Two full passes agreed on all eight cases. Whether a longer or noisier turn keeps this discrimination is not measured, and the 23 memories already written as `global` are not re-scoped by this release.
|
|
10
|
+
|
|
5
11
|
## 0.2.50 — 2026-09-13
|
|
6
12
|
|
|
7
13
|
- Remove the six-item cap on the related-memory catalog. It contradicted the retrieval design outright. Retrieval injects the scope list and resolves the scope the planner selects; a Vault whose memories all carry one scope -- `global`, which is the common personal case and the only scope in an empty registry -- correctly resolves that scope to the whole library, and six rows then hid most of it. Measured on a real Vault of 18 memories, every one `global`: retrieval returned 19 rows, the cap kept 6, discarded 13, and the discarded rows marked the lookup unprovable, so every turn died with `incomplete B3 lookup cannot authorize a terminal decision`. Size, not count, is what the prompt budget is about, and the character ceiling already expresses it.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: memleaf
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.51
|
|
4
4
|
Summary: A local-first Markdown memory core for AI agents
|
|
5
5
|
Author: memleaf contributors
|
|
6
6
|
License-Expression: MIT
|
|
@@ -23,7 +23,7 @@ Dynamic: license-file
|
|
|
23
23
|
|
|
24
24
|
[English](README.en.md) · [PyPI](https://pypi.org/project/memleaf/) · [GitHub](https://github.com/miffyblueboo/memleaf)
|
|
25
25
|
|
|
26
|
-
> **版本:0.2.
|
|
26
|
+
> **版本:0.2.51。**
|
|
27
27
|
> 记忆只从用户与 Agent 的可见对话提炼。Agent 已在回复中整理的事实、项目进展和明确待办可作为来源;邮件、附件、网页和终端等工具原文不进入记忆提炼。模型负责保留原话中的不确定性,现有记忆仅用于比较、去重和更新。Markdown 仍是唯一事实源。
|
|
28
28
|
> **当前版本支持 Hermes 和 Codex。** Antigravity(反重力)不检测、不安装、不配置。
|
|
29
29
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
[中文](README.md) · [PyPI](https://pypi.org/project/memleaf/) · [GitHub](https://github.com/miffyblueboo/memleaf)
|
|
6
6
|
|
|
7
|
-
> **Version: 0.2.
|
|
7
|
+
> **Version: 0.2.51.**
|
|
8
8
|
> Automatic extraction now uses only the current turn's visible user input and final assistant reply. Raw tool output, attachments, web/file/terminal payloads and legacy tool-evidence bodies are not new source evidence; existing or retrieved memory remains comparison context rather than source authority. Background processing is persisted as a local job and can be checked through the read-only `process_status` MCP tool; failed work remains retryable and fail closed. The release also tightens source/date grounding, target reconciliation, duplicate/no-op handling and semantic review before writes. Markdown remains the sole source of truth with no SQLite runtime dependency. Acceptance covers deterministic regression suites and synthetic inputs; it does not claim real-mail or customer-business acceptance.
|
|
9
9
|
> **The current release supports Hermes and Codex.** Antigravity is not detected, installed, or configured.
|
|
10
10
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
[English](README.en.md) · [PyPI](https://pypi.org/project/memleaf/) · [GitHub](https://github.com/miffyblueboo/memleaf)
|
|
6
6
|
|
|
7
|
-
> **版本:0.2.
|
|
7
|
+
> **版本:0.2.51。**
|
|
8
8
|
> 记忆只从用户与 Agent 的可见对话提炼。Agent 已在回复中整理的事实、项目进展和明确待办可作为来源;邮件、附件、网页和终端等工具原文不进入记忆提炼。模型负责保留原话中的不确定性,现有记忆仅用于比较、去重和更新。Markdown 仍是唯一事实源。
|
|
9
9
|
> **当前版本支持 Hermes 和 Codex。** Antigravity(反重力)不检测、不安装、不配置。
|
|
10
10
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Local-first Markdown memory core for AI agents."""
|
|
2
2
|
|
|
3
|
-
__version__ = "0.2.
|
|
3
|
+
__version__ = "0.2.51"
|
|
4
4
|
|
|
5
5
|
from .config import DEFAULT_CONFIG, default_config, load_config, save_config
|
|
6
6
|
from .frontmatter import FrontmatterError, dump_frontmatter, dump_yaml, load_yaml, parse_frontmatter
|
|
@@ -104,7 +104,7 @@ def _enum_text(values: Iterable[str]) -> str:
|
|
|
104
104
|
B3_COMPACT_CONTRACT = f"""B3 STRICT OUTPUT CONTRACT
|
|
105
105
|
Root exactly: {{protocol_version,items,no_memory}}; protocol_version={PROTOCOL_VERSION}. No extra fields at any level.
|
|
106
106
|
Decision exactly one of: {_enum_text(_DECISIONS)}. candidate_id: nonempty string, case-insensitively unique.
|
|
107
|
-
CREATE exactly requires candidate_id,decision,evidence,type,scopes,memory; optional scope_source. type={_enum_text(MEMORY_TYPES)}; scopes=nonempty string[]. memory requires title+body.
|
|
107
|
+
CREATE exactly requires candidate_id,decision,evidence,type,scopes,memory; optional scope_source. type={_enum_text(MEMORY_TYPES)}; scopes=nonempty string[]; see SCOPES. memory requires title+body.
|
|
108
108
|
UPDATE exactly requires candidate_id,decision,evidence,target_memory_id,memory; optional scopes and scope_source; scope_source requires scopes. memory requires body; title optional.
|
|
109
109
|
NO_CHANGE exactly requires candidate_id,decision,evidence,target_memory_id.
|
|
110
110
|
DEFERRED exactly requires candidate_id,decision,evidence,reason; reason={_enum_text(_DEFER_REASONS)}.
|
|
@@ -125,6 +125,12 @@ Only current_evidence may establish new facts or changes. local_memory_catalog a
|
|
|
125
125
|
TASK
|
|
126
126
|
Extract every independently useful long-term memory. Keep independently retrievable/updateable topics separate and preserve entity, condition, polarity, uncertainty, ownership, state and meaning-critical numbers/codes. CREATE only when no supplied local memory represents the durable information; UPDATE only when current evidence proves a change to one supplied local memory; NO_CHANGE only when it adds no semantic change; DEFERRED for a durable candidate that cannot safely reach a terminal decision. Project ownership and platform/system names are separate judgments. Do not turn every negation into no_memory and do not use NO_CHANGE to hide ambiguity.
|
|
127
127
|
|
|
128
|
+
SCOPES
|
|
129
|
+
Legal values: global | domain:<name> | portfolio:<name> | project:<name> | unscoped. scopes is a nonempty array; at most one project:<name> per memory; unscoped must be the only value, and Core then records insufficient_context.
|
|
130
|
+
When a candidate concerns one distinct project the user is working on -- a type=project memory, or the work, decisions, state or deadlines that belong to that project -- scope it to that project as project:<name>, using the name the evidence itself uses. The project does not need to be registered first; scope_registry only lists what already exists.
|
|
131
|
+
Ground the name in this candidate's own cited evidence, or in a project scope explicitly supplied for this turn. A product, platform, system, vendor, notification source, comparison or implementation context is not ownership by name alone.
|
|
132
|
+
Use global only for a fact that no single project owns: a standing personal preference, a machine-wide or tool-wide rule, or an environment fact. Never invent, translate or borrow a project name.
|
|
133
|
+
|
|
128
134
|
DATES
|
|
129
135
|
An evidence unit may carry an ISO-8601 UTC timestamp. Use it ONLY to resolve a relative, partial or yearless date that the unit's own text expresses; never borrow another unit's timestamp and never guess a missing year. The timestamp is an anchor, not content: never write its own date into a memory, and add no date the evidence text does not state. A date literal in a memory must appear in that memory's cited evidence, either verbatim or as the same month and day. Write due_date as YYYY-MM-DD. A todo declares status, and due_date only when its own evidence establishes a deadline: otherwise omit due_date, or set it to null when the deadline itself is still unresolved. Any memory carrying a date that no admitted evidence grounds is rejected and costs the whole turn, so defer instead of approximating.
|
|
130
136
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: memleaf
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.51
|
|
4
4
|
Summary: A local-first Markdown memory core for AI agents
|
|
5
5
|
Author: memleaf contributors
|
|
6
6
|
License-Expression: MIT
|
|
@@ -23,7 +23,7 @@ Dynamic: license-file
|
|
|
23
23
|
|
|
24
24
|
[English](README.en.md) · [PyPI](https://pypi.org/project/memleaf/) · [GitHub](https://github.com/miffyblueboo/memleaf)
|
|
25
25
|
|
|
26
|
-
> **版本:0.2.
|
|
26
|
+
> **版本:0.2.51。**
|
|
27
27
|
> 记忆只从用户与 Agent 的可见对话提炼。Agent 已在回复中整理的事实、项目进展和明确待办可作为来源;邮件、附件、网页和终端等工具原文不进入记忆提炼。模型负责保留原话中的不确定性,现有记忆仅用于比较、去重和更新。Markdown 仍是唯一事实源。
|
|
28
28
|
> **当前版本支持 Hermes 和 Codex。** Antigravity(反重力)不检测、不安装、不配置。
|
|
29
29
|
|
|
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
|
|
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
|