boltz-vsynthes 1.0.12__tar.gz → 1.0.14__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.
- {boltz_vsynthes-1.0.12/src/boltz_vsynthes.egg-info → boltz_vsynthes-1.0.14}/PKG-INFO +1 -1
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/pyproject.toml +1 -1
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/parse/schema.py +29 -4
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14/src/boltz_vsynthes.egg-info}/PKG-INFO +1 -1
- boltz_vsynthes-1.0.14/src/boltz_vsynthes.egg-info/dependency_links.txt +1 -0
- boltz_vsynthes-1.0.12/src/boltz/data/parse/__init__.py +0 -21
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/LICENSE +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/README.md +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/setup.cfg +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/__init__.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/__init__.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/const.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/crop/__init__.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/crop/affinity.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/crop/boltz.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/crop/cropper.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/feature/__init__.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/feature/featurizer.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/feature/featurizerv2.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/feature/symmetry.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/filter/__init__.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/filter/dynamic/__init__.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/filter/dynamic/date.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/filter/dynamic/filter.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/filter/dynamic/max_residues.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/filter/dynamic/resolution.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/filter/dynamic/size.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/filter/dynamic/subset.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/filter/static/__init__.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/filter/static/filter.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/filter/static/ligand.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/filter/static/polymer.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/module/__init__.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/module/inference.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/module/inferencev2.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/module/training.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/module/trainingv2.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/mol.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/msa/__init__.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/msa/mmseqs2.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/pad.py +0 -0
- /boltz_vsynthes-1.0.12/src/boltz_vsynthes.egg-info/dependency_links.txt → /boltz_vsynthes-1.0.14/src/boltz/data/parse/__init__.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/parse/a3m.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/parse/csv.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/parse/fasta.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/parse/mmcif.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/parse/mmcif_with_constraints.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/parse/pdb.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/parse/pdb_download.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/parse/sdf.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/parse/yaml.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/sample/__init__.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/sample/cluster.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/sample/distillation.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/sample/random.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/sample/sampler.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/tokenize/__init__.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/tokenize/boltz.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/tokenize/boltz2.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/tokenize/tokenizer.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/types.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/write/__init__.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/write/mmcif.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/write/pdb.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/write/utils.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/write/writer.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/main.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/__init__.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/layers/__init__.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/layers/attention.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/layers/attentionv2.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/layers/confidence_utils.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/layers/dropout.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/layers/initialize.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/layers/outer_product_mean.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/layers/pair_averaging.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/layers/pairformer.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/layers/relative.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/layers/transition.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/layers/triangular_attention/__init__.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/layers/triangular_attention/attention.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/layers/triangular_attention/primitives.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/layers/triangular_attention/utils.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/layers/triangular_mult.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/loss/__init__.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/loss/bfactor.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/loss/confidence.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/loss/confidencev2.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/loss/diffusion.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/loss/diffusionv2.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/loss/distogram.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/loss/distogramv2.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/loss/validation.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/models/__init__.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/models/boltz1.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/models/boltz2.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/modules/__init__.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/modules/affinity.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/modules/confidence.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/modules/confidence_utils.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/modules/confidencev2.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/modules/diffusion.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/modules/diffusion_conditioning.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/modules/diffusionv2.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/modules/encoders.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/modules/encodersv2.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/modules/transformers.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/modules/transformersv2.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/modules/trunk.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/modules/trunkv2.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/modules/utils.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/optim/__init__.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/optim/ema.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/optim/scheduler.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/potentials/__init__.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/potentials/potentials.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/potentials/schedules.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz_vsynthes.egg-info/SOURCES.txt +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz_vsynthes.egg-info/entry_points.txt +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz_vsynthes.egg-info/requires.txt +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz_vsynthes.egg-info/top_level.txt +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/tests/test_kernels.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/tests/test_regression.py +0 -0
- {boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/tests/test_utils.py +0 -0
@@ -1015,14 +1015,39 @@ def parse_boltz_schema( # noqa: C901, PLR0915, PLR0912
|
|
1015
1015
|
|
1016
1016
|
# Get sequence
|
1017
1017
|
if entity_type in {"protein", "dna", "rna"}:
|
1018
|
-
|
1018
|
+
if "sequence" in item[entity_type]:
|
1019
|
+
seq = str(item[entity_type]["sequence"])
|
1020
|
+
elif "pdb" in item[entity_type]:
|
1021
|
+
# Handle PDB file
|
1022
|
+
pdb_path = Path(item[entity_type]["pdb"])
|
1023
|
+
if len(pdb_path.stem) == 4 and pdb_path.stem.isalnum():
|
1024
|
+
# This is a PDB ID
|
1025
|
+
from boltz.data.parse.pdb_download import parse_pdb_id
|
1026
|
+
target = parse_pdb_id(pdb_path.stem, ccd, mol_dir, pdb_path.parent, boltz2)
|
1027
|
+
else:
|
1028
|
+
# This is a PDB file
|
1029
|
+
from boltz.data.parse.pdb import parse_pdb
|
1030
|
+
target = parse_pdb(pdb_path, ccd, mol_dir, boltz2)
|
1031
|
+
# Get sequence from the first chain
|
1032
|
+
seq = target.sequences[0]
|
1033
|
+
else:
|
1034
|
+
msg = f"Protein must have either 'sequence' or 'pdb' field: {item}"
|
1035
|
+
raise ValueError(msg)
|
1019
1036
|
elif entity_type == "ligand":
|
1020
|
-
assert "smiles" in item[entity_type] or "ccd" in item[entity_type]
|
1021
|
-
assert "smiles" not in item[entity_type] or "ccd" not in item[entity_type]
|
1022
1037
|
if "smiles" in item[entity_type]:
|
1023
1038
|
seq = str(item[entity_type]["smiles"])
|
1024
|
-
|
1039
|
+
elif "sdf" in item[entity_type]:
|
1040
|
+
# Handle SDF file
|
1041
|
+
sdf_path = Path(item[entity_type]["sdf"])
|
1042
|
+
from boltz.data.parse.sdf import parse_sdf
|
1043
|
+
target = parse_sdf(sdf_path, ccd, mol_dir, boltz2)
|
1044
|
+
# Get sequence from the first ligand
|
1045
|
+
seq = target.sequences[0]
|
1046
|
+
elif "ccd" in item[entity_type]:
|
1025
1047
|
seq = str(item[entity_type]["ccd"])
|
1048
|
+
else:
|
1049
|
+
msg = f"Ligand must have 'smiles', 'sdf', or 'ccd' field: {item}"
|
1050
|
+
raise ValueError(msg)
|
1026
1051
|
|
1027
1052
|
# Group items by entity
|
1028
1053
|
items_to_group.setdefault((entity_type, seq), []).append(item)
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -1,21 +0,0 @@
|
|
1
|
-
from boltz.data.parse.pdb import parse_pdb
|
2
|
-
from boltz.data.parse.sdf import parse_sdf
|
3
|
-
from boltz.data.parse.pdb_download import parse_pdb_id
|
4
|
-
from boltz.data.parse.yaml import parse_yaml
|
5
|
-
from boltz.data.parse.fasta import parse_fasta
|
6
|
-
from boltz.data.parse.a3m import parse_a3m
|
7
|
-
from boltz.data.parse.csv import parse_csv
|
8
|
-
from boltz.data.parse.mmcif import parse_mmcif
|
9
|
-
from boltz.data.parse.mmcif_with_constraints import parse_mmcif_with_constraints
|
10
|
-
|
11
|
-
__all__ = [
|
12
|
-
"parse_pdb",
|
13
|
-
"parse_sdf",
|
14
|
-
"parse_pdb_id",
|
15
|
-
"parse_yaml",
|
16
|
-
"parse_fasta",
|
17
|
-
"parse_a3m",
|
18
|
-
"parse_csv",
|
19
|
-
"parse_mmcif",
|
20
|
-
"parse_mmcif_with_constraints",
|
21
|
-
]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/filter/dynamic/max_residues.py
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
|
{boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/data/parse/mmcif_with_constraints.py
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
|
{boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/layers/outer_product_mean.py
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
|
{boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/layers/triangular_attention/utils.py
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
|
{boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz/model/modules/diffusion_conditioning.py
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
|
{boltz_vsynthes-1.0.12 → boltz_vsynthes-1.0.14}/src/boltz_vsynthes.egg-info/entry_points.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|