dnd5e-engine 0.3.0__tar.gz → 0.3.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.
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/PKG-INFO +2 -2
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/pyproject.toml +1 -1
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/__init__.py +3 -1
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/lib_loader.py +9 -0
- dnd5e_engine-0.3.1/tests/test_lib_loader_configure.py +20 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_public_api_surface.py +1 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/.gitignore +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/CHANGELOG.md +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/LICENSE +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/Makefile +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/NOTICE +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/README.md +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/scripts/_smoke_grid_combat.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/scripts/smoke_clean_install.sh +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/activities/__init__.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/activities/apply.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/activities/attack.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/activities/build_context.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/activities/cast.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/activities/check.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/activities/context.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/activities/damage.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/activities/dice.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/activities/effects.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/activities/formula.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/activities/heal.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/activities/mastery.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/activities/monster_actions.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/activities/passive_stats.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/activities/resolver.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/activities/save.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/activities/save_primitive.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/activities/scale.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/build_party.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/build_spec.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/check.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/death_saves.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/dispatch.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/event_dicts.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/events.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/orchestrator.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/outcome.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/py.typed +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/rest.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/results.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/rules/__init__.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/rules/_class_meta.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/rules/_parsing.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/rules/combat.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/rules/combat_data.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/rules/combat_helpers.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/rules/conditions.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/rules/dice.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/rules/effects.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/rules/equipment.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/rules/gambits.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/rules/resolution.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/rules/skills.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/rules/spells.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/spatial.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/specs.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/testing.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/types/__init__.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/types/combat.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/types/conditions.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/types/dice.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/types/effects.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/types/intent.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/src/dnd5e_engine/views.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/__init__.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/activities/__init__.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/activities/test_build_context.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/activities/test_cast_level_override.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/activities/test_monster_actions.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/e2e/__init__.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/e2e/conftest.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/e2e/harness.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/e2e/test_c00_harness_sanity.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/e2e/test_c01_dataset_fixes.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/e2e/test_c02_small_mechanics.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/e2e/test_c03_effect_modes.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/e2e/test_c04_caster_plumbing.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/e2e/test_c05_spatial.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/e2e/test_c06_reactions.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/e2e/test_c07_sneak_and_repertoire.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/e2e/test_c08_passive_projection.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/e2e/test_c09_rest.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/e2e/test_c10_monster_behavior.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/e2e/test_c11_item_charges.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_active_effect_resistance_fold.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_active_effect_schema.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_apply_changes_to_check.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_apply_modifiers.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_build_context_abilities.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_build_party.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_build_party_passives.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_combat_bucket_keys.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_combat_flag_advantage.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_concentration_drop_effect_name.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_concentration_repeat_save_identity.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_cover_bonus_sidecar.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_coverage_backfill_death_saves.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_coverage_backfill_seam_errors.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_duration_tick_at_turn_end.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_effects_builder_internals.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_enchantment_sidecar_projection.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_end_combat_snapshot.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_expire_clears_active_conditions.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_feature_save_dc_no_spell_override.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_get_actor_active_effects.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_grid_topology.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_iter11_fixes.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_iter13_fixes.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_iter5_fixes.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_lib_loader.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_live_combat_view.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_monster_dash.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_monster_flee_retreat.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_orchestrator_gating_typed.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_orchestrator_grid_combat.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_orchestrator_item_charges.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_orchestrator_monster_typed.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_orchestrator_move_mark_typed.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_orchestrator_pc_resolution_typed.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_party_member_reach_ft.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_passive_stats.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_phase6_public_surface.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_rage_second_wind_e2e.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_reaction_queue.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_resolve_check.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_resolve_check_flag_advantage.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_resolve_check_specific_buckets.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_rest.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_rules_smoke.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_scale_resolver.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_smoke.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_sneak_attack_resolver.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_start_combat_active_effects.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_start_combat_seeds_lifecycle.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_types_smoke.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_use_feature_intent.py +0 -0
- {dnd5e_engine-0.3.0 → dnd5e_engine-0.3.1}/tests/test_weapon_damage_bonus_sidecar.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "dnd5e-engine"
|
|
7
|
-
version = "0.3.
|
|
7
|
+
version = "0.3.1"
|
|
8
8
|
description = "Pure-Python D&D 5e SRD rules engine — combat, checks, effects. Host-agnostic, zero I/O."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.12"
|
|
@@ -13,7 +13,7 @@ Deferred for later phases:
|
|
|
13
13
|
|
|
14
14
|
from __future__ import annotations
|
|
15
15
|
|
|
16
|
-
__version__ = "0.
|
|
16
|
+
__version__ = "0.3.1"
|
|
17
17
|
|
|
18
18
|
from dnd5e_engine.build_party import build_party_member
|
|
19
19
|
from dnd5e_engine.build_spec import (
|
|
@@ -24,6 +24,7 @@ from dnd5e_engine.build_spec import (
|
|
|
24
24
|
)
|
|
25
25
|
from dnd5e_engine.check import CheckKind, CheckResult, CheckSpec, resolve_check
|
|
26
26
|
from dnd5e_engine.events import CombatEvent, IntentType
|
|
27
|
+
from dnd5e_engine.lib_loader import configure_lib_loader
|
|
27
28
|
from dnd5e_engine.orchestrator import (
|
|
28
29
|
CombatHandle,
|
|
29
30
|
LiveCombatView,
|
|
@@ -101,6 +102,7 @@ __all__ = [
|
|
|
101
102
|
"advance_monster_turn",
|
|
102
103
|
"build_party_member",
|
|
103
104
|
"cell_id",
|
|
105
|
+
"configure_lib_loader",
|
|
104
106
|
"end_combat",
|
|
105
107
|
"get_actor_active_effects",
|
|
106
108
|
"get_live",
|
|
@@ -25,7 +25,16 @@ def set_lib_loader_for_tests(loader: AssetLoader | None) -> None:
|
|
|
25
25
|
_LIB_LOADER = loader
|
|
26
26
|
|
|
27
27
|
|
|
28
|
+
def configure_lib_loader(loader: AssetLoader | None) -> None:
|
|
29
|
+
"""Public host seam: install a custom AssetLoader (e.g. a homebrew
|
|
30
|
+
overlay). ``None`` reverts to the lazy bundled default. Hosts must
|
|
31
|
+
call this before start_combat; swapping mid-combat is unsupported."""
|
|
32
|
+
global _LIB_LOADER
|
|
33
|
+
_LIB_LOADER = loader
|
|
34
|
+
|
|
35
|
+
|
|
28
36
|
__all__ = [
|
|
37
|
+
"configure_lib_loader",
|
|
29
38
|
"get_lib_loader",
|
|
30
39
|
"set_lib_loader_for_tests",
|
|
31
40
|
]
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"""configure_lib_loader — public host seam for AssetLoader injection."""
|
|
2
|
+
|
|
3
|
+
from dnd5e_srd_data.loader import BundledAssetLoader, MemoryAssetLoader
|
|
4
|
+
|
|
5
|
+
import dnd5e_engine
|
|
6
|
+
from dnd5e_engine.lib_loader import get_lib_loader
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def test_configure_lib_loader_is_public() -> None:
|
|
10
|
+
assert "configure_lib_loader" in dnd5e_engine.__all__
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def test_configure_installs_and_none_reverts() -> None:
|
|
14
|
+
custom = MemoryAssetLoader()
|
|
15
|
+
try:
|
|
16
|
+
dnd5e_engine.configure_lib_loader(custom)
|
|
17
|
+
assert get_lib_loader() is custom
|
|
18
|
+
finally:
|
|
19
|
+
dnd5e_engine.configure_lib_loader(None)
|
|
20
|
+
assert isinstance(get_lib_loader(), BundledAssetLoader)
|
|
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
|
|
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
|