congrads 1.0.1__tar.gz → 1.0.3__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.
- {congrads-1.0.1 → congrads-1.0.3}/.gitlab-ci.yml +1 -1
- {congrads-1.0.1 → congrads-1.0.3}/.readthedocs.yaml +10 -6
- {congrads-1.0.1 → congrads-1.0.3}/PKG-INFO +3 -3
- {congrads-1.0.1 → congrads-1.0.3}/README.md +2 -2
- {congrads-1.0.1 → congrads-1.0.3}/congrads.egg-info/PKG-INFO +3 -3
- {congrads-1.0.1 → congrads-1.0.3}/congrads.egg-info/SOURCES.txt +2 -3
- congrads-1.0.3/docs/requirements.in +2 -0
- congrads-1.0.3/docs/requirements.txt +57 -0
- {congrads-1.0.1 → congrads-1.0.3}/docs/start.rst +1 -1
- congrads-1.0.1/DIAGRAM.md +0 -135
- congrads-1.0.1/README_DEV.md +0 -9
- congrads-1.0.1/congrads/requirements.txt +0 -6
- {congrads-1.0.1 → congrads-1.0.3}/.gitignore +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/.pylintrc +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/.vscode/extensions.json +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/.vscode/settings.json +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/LICENSE +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/congrads/__init__.py +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/congrads/checkpoints.py +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/congrads/constraints.py +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/congrads/core.py +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/congrads/datasets.py +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/congrads/descriptor.py +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/congrads/metrics.py +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/congrads/networks.py +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/congrads/transformations.py +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/congrads/utils.py +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/congrads.egg-info/dependency_links.txt +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/congrads.egg-info/requires.txt +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/congrads.egg-info/top_level.txt +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/docs/Makefile +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/docs/_static/VanBaelen2023.bib +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/docs/_static/congrads_export.png +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/docs/_static/congrads_export.svg +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/docs/_static/congrads_favicon.png +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/docs/_static/congrads_favicon.svg +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/docs/_static/convergence_illustration.gif +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/docs/api.rst +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/docs/concepts.rst +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/docs/conf.py +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/docs/index.rst +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/docs/make.bat +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/examples/BiasCorrection.py +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/examples/FamilyIncome.py +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/examples/NoisySines.py +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/notebooks/BiasCorrection.ipynb +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/notebooks/FamilyIncome.ipynb +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/pyproject.toml +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/setup.cfg +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/tests/congrads/test_utils.py +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/tests/examples/test_BiasCorrection.py +0 -0
- {congrads-1.0.1 → congrads-1.0.3}/tests/examples/test_FamilyIncome.py +0 -0
|
@@ -91,7 +91,7 @@ sync:
|
|
|
91
91
|
- git clone git@github.com:ML-KULeuven/congrads.git ~/congrads-github/
|
|
92
92
|
|
|
93
93
|
# 5. Install rsync and copy files from GitLab repository to GitHub repo, including hidden files
|
|
94
|
-
- rsync -av --exclude='.git' --exclude='.gitlab-ci.yml' ./ ~/congrads-github/
|
|
94
|
+
- rsync -av --delete --exclude='.git' --exclude='.gitlab-ci.yml' --exclude='dist' --exclude='public' ./ ~/congrads-github/
|
|
95
95
|
|
|
96
96
|
# 6. Stage, commit and tag the files
|
|
97
97
|
- cd ~/congrads-github/
|
|
@@ -4,20 +4,24 @@
|
|
|
4
4
|
# Required
|
|
5
5
|
version: 2
|
|
6
6
|
|
|
7
|
+
formats: all
|
|
8
|
+
|
|
7
9
|
# Set the OS, Python version, and other tools you might need
|
|
8
10
|
build:
|
|
9
11
|
os: ubuntu-24.04
|
|
10
12
|
tools:
|
|
11
|
-
python:
|
|
13
|
+
python: '3.13'
|
|
12
14
|
|
|
13
15
|
# Build documentation in the "docs/" directory with Sphinx
|
|
14
16
|
sphinx:
|
|
15
|
-
|
|
17
|
+
configuration: docs/conf.py
|
|
18
|
+
fail_on_warning: true
|
|
16
19
|
|
|
17
20
|
# Optionally, but recommended,
|
|
18
21
|
# declare the Python requirements required to build your documentation
|
|
19
22
|
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
python:
|
|
24
|
+
install:
|
|
25
|
+
- requirements: docs/requirements.txt
|
|
26
|
+
- method: pip
|
|
27
|
+
path: .
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: congrads
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
4
4
|
Summary: A toolbox for using Constraint Guided Gradient Descent when training neural networks.
|
|
5
5
|
Author-email: Wout Rombouts <wout.rombouts@kuleuven.be>, Quinten Van Baelen <quinten.vanbaelen@kuleuven.be>, Peter Karsmakers <peter.karsmakers@kuleuven.be>
|
|
6
6
|
License: Copyright 2024 DTAI - KU Leuven
|
|
@@ -41,7 +41,7 @@ Requires-Dist: tensorboard>=2.18.0
|
|
|
41
41
|
Requires-Dist: tqdm>=4.66.5
|
|
42
42
|
|
|
43
43
|
<div align="center">
|
|
44
|
-
<img src="docs/_static/congrads_export.png" height="200">
|
|
44
|
+
<img src="https://github.com/ML-KULeuven/congrads/blob/main/docs/_static/congrads_export.png?raw=true" height="200">
|
|
45
45
|
<p>
|
|
46
46
|
<b>Incorporate constraints into neural network training for more reliable and robust models.</b>
|
|
47
47
|
</p>
|
|
@@ -98,7 +98,7 @@ Please read the documentation at https://congrads.readthedocs.io/en/latest/ to g
|
|
|
98
98
|
### 3. **Basic Usage**
|
|
99
99
|
|
|
100
100
|
Below, a basic example can be found that illustrates how to work with the Congrads toolbox.
|
|
101
|
-
For additional examples, refer to the [examples](https://github.com/ML-KULeuven/congrads/examples) and [notebooks](https://github.com/ML-KULeuven/congrads/notebooks) folders in the repository.
|
|
101
|
+
For additional examples, refer to the [examples](https://github.com/ML-KULeuven/congrads/tree/main/examples) and [notebooks](https://github.com/ML-KULeuven/congrads/tree/main/notebooks) folders in the repository.
|
|
102
102
|
|
|
103
103
|
#### 1. First, select the device to run your code on with.
|
|
104
104
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
<img src="docs/_static/congrads_export.png" height="200">
|
|
2
|
+
<img src="https://github.com/ML-KULeuven/congrads/blob/main/docs/_static/congrads_export.png?raw=true" height="200">
|
|
3
3
|
<p>
|
|
4
4
|
<b>Incorporate constraints into neural network training for more reliable and robust models.</b>
|
|
5
5
|
</p>
|
|
@@ -56,7 +56,7 @@ Please read the documentation at https://congrads.readthedocs.io/en/latest/ to g
|
|
|
56
56
|
### 3. **Basic Usage**
|
|
57
57
|
|
|
58
58
|
Below, a basic example can be found that illustrates how to work with the Congrads toolbox.
|
|
59
|
-
For additional examples, refer to the [examples](https://github.com/ML-KULeuven/congrads/examples) and [notebooks](https://github.com/ML-KULeuven/congrads/notebooks) folders in the repository.
|
|
59
|
+
For additional examples, refer to the [examples](https://github.com/ML-KULeuven/congrads/tree/main/examples) and [notebooks](https://github.com/ML-KULeuven/congrads/tree/main/notebooks) folders in the repository.
|
|
60
60
|
|
|
61
61
|
#### 1. First, select the device to run your code on with.
|
|
62
62
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: congrads
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
4
4
|
Summary: A toolbox for using Constraint Guided Gradient Descent when training neural networks.
|
|
5
5
|
Author-email: Wout Rombouts <wout.rombouts@kuleuven.be>, Quinten Van Baelen <quinten.vanbaelen@kuleuven.be>, Peter Karsmakers <peter.karsmakers@kuleuven.be>
|
|
6
6
|
License: Copyright 2024 DTAI - KU Leuven
|
|
@@ -41,7 +41,7 @@ Requires-Dist: tensorboard>=2.18.0
|
|
|
41
41
|
Requires-Dist: tqdm>=4.66.5
|
|
42
42
|
|
|
43
43
|
<div align="center">
|
|
44
|
-
<img src="docs/_static/congrads_export.png" height="200">
|
|
44
|
+
<img src="https://github.com/ML-KULeuven/congrads/blob/main/docs/_static/congrads_export.png?raw=true" height="200">
|
|
45
45
|
<p>
|
|
46
46
|
<b>Incorporate constraints into neural network training for more reliable and robust models.</b>
|
|
47
47
|
</p>
|
|
@@ -98,7 +98,7 @@ Please read the documentation at https://congrads.readthedocs.io/en/latest/ to g
|
|
|
98
98
|
### 3. **Basic Usage**
|
|
99
99
|
|
|
100
100
|
Below, a basic example can be found that illustrates how to work with the Congrads toolbox.
|
|
101
|
-
For additional examples, refer to the [examples](https://github.com/ML-KULeuven/congrads/examples) and [notebooks](https://github.com/ML-KULeuven/congrads/notebooks) folders in the repository.
|
|
101
|
+
For additional examples, refer to the [examples](https://github.com/ML-KULeuven/congrads/tree/main/examples) and [notebooks](https://github.com/ML-KULeuven/congrads/tree/main/notebooks) folders in the repository.
|
|
102
102
|
|
|
103
103
|
#### 1. First, select the device to run your code on with.
|
|
104
104
|
|
|
@@ -2,10 +2,8 @@
|
|
|
2
2
|
.gitlab-ci.yml
|
|
3
3
|
.pylintrc
|
|
4
4
|
.readthedocs.yaml
|
|
5
|
-
DIAGRAM.md
|
|
6
5
|
LICENSE
|
|
7
6
|
README.md
|
|
8
|
-
README_DEV.md
|
|
9
7
|
pyproject.toml
|
|
10
8
|
.vscode/extensions.json
|
|
11
9
|
.vscode/settings.json
|
|
@@ -17,7 +15,6 @@ congrads/datasets.py
|
|
|
17
15
|
congrads/descriptor.py
|
|
18
16
|
congrads/metrics.py
|
|
19
17
|
congrads/networks.py
|
|
20
|
-
congrads/requirements.txt
|
|
21
18
|
congrads/transformations.py
|
|
22
19
|
congrads/utils.py
|
|
23
20
|
congrads.egg-info/PKG-INFO
|
|
@@ -31,6 +28,8 @@ docs/concepts.rst
|
|
|
31
28
|
docs/conf.py
|
|
32
29
|
docs/index.rst
|
|
33
30
|
docs/make.bat
|
|
31
|
+
docs/requirements.in
|
|
32
|
+
docs/requirements.txt
|
|
34
33
|
docs/start.rst
|
|
35
34
|
docs/_static/VanBaelen2023.bib
|
|
36
35
|
docs/_static/congrads_export.png
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#
|
|
2
|
+
# This file is autogenerated by pip-compile with Python 3.11
|
|
3
|
+
# by the following command:
|
|
4
|
+
#
|
|
5
|
+
# pip-compile requirements.in
|
|
6
|
+
#
|
|
7
|
+
alabaster==1.0.0
|
|
8
|
+
# via sphinx
|
|
9
|
+
babel==2.17.0
|
|
10
|
+
# via sphinx
|
|
11
|
+
certifi==2025.1.31
|
|
12
|
+
# via requests
|
|
13
|
+
charset-normalizer==3.4.1
|
|
14
|
+
# via requests
|
|
15
|
+
docutils==0.21.2
|
|
16
|
+
# via
|
|
17
|
+
# sphinx
|
|
18
|
+
# sphinx-rtd-theme
|
|
19
|
+
idna==3.10
|
|
20
|
+
# via requests
|
|
21
|
+
imagesize==1.4.1
|
|
22
|
+
# via sphinx
|
|
23
|
+
jinja2==3.1.5
|
|
24
|
+
# via sphinx
|
|
25
|
+
markupsafe==3.0.2
|
|
26
|
+
# via jinja2
|
|
27
|
+
packaging==24.2
|
|
28
|
+
# via sphinx
|
|
29
|
+
pygments==2.19.1
|
|
30
|
+
# via sphinx
|
|
31
|
+
requests==2.32.3
|
|
32
|
+
# via sphinx
|
|
33
|
+
snowballstemmer==2.2.0
|
|
34
|
+
# via sphinx
|
|
35
|
+
sphinx==8.1.3
|
|
36
|
+
# via
|
|
37
|
+
# -r requirements.in
|
|
38
|
+
# sphinx-rtd-theme
|
|
39
|
+
# sphinxcontrib-jquery
|
|
40
|
+
sphinx-rtd-theme==3.0.2
|
|
41
|
+
# via -r requirements.in
|
|
42
|
+
sphinxcontrib-applehelp==2.0.0
|
|
43
|
+
# via sphinx
|
|
44
|
+
sphinxcontrib-devhelp==2.0.0
|
|
45
|
+
# via sphinx
|
|
46
|
+
sphinxcontrib-htmlhelp==2.1.0
|
|
47
|
+
# via sphinx
|
|
48
|
+
sphinxcontrib-jquery==4.1
|
|
49
|
+
# via sphinx-rtd-theme
|
|
50
|
+
sphinxcontrib-jsmath==1.0.1
|
|
51
|
+
# via sphinx
|
|
52
|
+
sphinxcontrib-qthelp==2.0.0
|
|
53
|
+
# via sphinx
|
|
54
|
+
sphinxcontrib-serializinghtml==2.0.0
|
|
55
|
+
# via sphinx
|
|
56
|
+
urllib3==2.3.0
|
|
57
|
+
# via requests
|
|
@@ -123,4 +123,4 @@ Example
|
|
|
123
123
|
|
|
124
124
|
core.fit(max_epochs=50)
|
|
125
125
|
|
|
126
|
-
For more examples, refer to the GitHub repository's `example folder <https://github.com/ML-KULeuven/congrads/examples>`_ or the `notebooks folder <https://github.com/ML-KULeuven/congrads/notebooks>`_ for more examples.
|
|
126
|
+
For more examples, refer to the GitHub repository's `example folder <https://github.com/ML-KULeuven/congrads/tree/main/examples>`_ or the `notebooks folder <https://github.com/ML-KULeuven/congrads/tree/main/notebooks>`_ for more examples.
|
congrads-1.0.1/DIAGRAM.md
DELETED
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
```mermaid
|
|
2
|
-
|
|
3
|
-
classDiagram
|
|
4
|
-
|
|
5
|
-
Constraint <|-- ScalarConstraint
|
|
6
|
-
|
|
7
|
-
class Constraint {
|
|
8
|
-
name
|
|
9
|
-
get_reference()
|
|
10
|
-
check_constraint()
|
|
11
|
-
calculate_direction()
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
class ScalarConstraint {
|
|
15
|
-
name
|
|
16
|
-
reference
|
|
17
|
-
comparator
|
|
18
|
-
scalar
|
|
19
|
-
get_reference()
|
|
20
|
-
check_constraint()
|
|
21
|
-
calculate_direction()
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
LightningModule <|-- CGGDModule
|
|
26
|
-
|
|
27
|
-
class CGGDModule {
|
|
28
|
-
on_train_start()
|
|
29
|
-
training_step()
|
|
30
|
-
validation_step()
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
Module <|-- BCNetwork
|
|
35
|
-
|
|
36
|
-
class Module {
|
|
37
|
-
forward()
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
class BCNetwork {
|
|
41
|
-
n_inputs
|
|
42
|
-
n_outputs
|
|
43
|
-
n_hidden_layers
|
|
44
|
-
hidden_dim
|
|
45
|
-
forward()
|
|
46
|
-
static linear()
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
CGGDModule <|-- BCModel
|
|
51
|
-
|
|
52
|
-
class LightningModule {
|
|
53
|
-
forward()
|
|
54
|
-
training_step()
|
|
55
|
-
validation_step()
|
|
56
|
-
configure_optimizers()
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
class BCModel {
|
|
60
|
-
network
|
|
61
|
-
constraints
|
|
62
|
-
lr
|
|
63
|
-
loss_function
|
|
64
|
-
forward()
|
|
65
|
-
training_step()
|
|
66
|
-
validation_step()
|
|
67
|
-
configure_optimizers()
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
LightningDataModule <|-- BCDataModule
|
|
72
|
-
|
|
73
|
-
class LightningDataModule{
|
|
74
|
-
prepare_data()
|
|
75
|
-
setup()
|
|
76
|
-
train_dataloader()
|
|
77
|
-
val_dataloader()
|
|
78
|
-
test_dataloader()
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
class BCDataModule{
|
|
82
|
-
dataset_directory
|
|
83
|
-
batch_size
|
|
84
|
-
train_size
|
|
85
|
-
val_size
|
|
86
|
-
shuflle_train
|
|
87
|
-
shuffle_val
|
|
88
|
-
shuffle_test
|
|
89
|
-
num_workers
|
|
90
|
-
pin_memory
|
|
91
|
-
prepare_data()
|
|
92
|
-
setup()
|
|
93
|
-
train_dataloader()
|
|
94
|
-
val_dataloader()
|
|
95
|
-
test_dataloader()
|
|
96
|
-
static transform()
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
Dataset <|-- BCDataset
|
|
101
|
-
|
|
102
|
-
class Dataset {
|
|
103
|
-
__len__()
|
|
104
|
-
__getitem__()
|
|
105
|
-
}
|
|
106
|
-
class BCDataset{
|
|
107
|
-
root
|
|
108
|
-
download
|
|
109
|
-
transform
|
|
110
|
-
__len__()
|
|
111
|
-
__getitem__()
|
|
112
|
-
download()
|
|
113
|
-
check_exists()
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
Constraint "many" --o "1" BCModel : has
|
|
117
|
-
BCNetwork "1" --o "1" BCModel : has
|
|
118
|
-
BCDataset "1" --o "1" BCDataModule : has
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
note "RED: low-level Pytorch interfaces\nORANGE: Pytorch Lightning interfaces\nGREEN: Dataset-specific interfaces\nBLUE: CGGD custom interfaces"
|
|
122
|
-
|
|
123
|
-
style Module fill:#ea5656
|
|
124
|
-
style Dataset fill:#ea5656
|
|
125
|
-
style LightningDataModule fill:#ea7d56
|
|
126
|
-
style LightningModule fill:#ea7d56
|
|
127
|
-
style BCModel fill:#57b356
|
|
128
|
-
style BCNetwork fill:#57b356
|
|
129
|
-
style BCDataset fill:#57b356
|
|
130
|
-
style BCDataModule fill:#57b356
|
|
131
|
-
style CGGDModule fill:#568bb3
|
|
132
|
-
style Constraint fill:#568bb3
|
|
133
|
-
style ScalarConstraint fill:#568bb3
|
|
134
|
-
|
|
135
|
-
```
|
congrads-1.0.1/README_DEV.md
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
# Releasing new version
|
|
2
|
-
|
|
3
|
-
To release a new version into the world make sure the following points are followed:
|
|
4
|
-
|
|
5
|
-
1. Update the package version, both in [pyproject.toml](pyproject.toml) and in the package itself [congrads/__init__.py](congrads/__init__.py)
|
|
6
|
-
2. Regenerate the distribution archives with ```python3 -m build```
|
|
7
|
-
3. Publish the code to PyPi with ```python3 -m twine upload --repository pypi dist/*```
|
|
8
|
-
|
|
9
|
-
For more information, refer to [this guide](https://packaging.python.org/en/latest/tutorials/packaging-projects/).
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|