continuous-delivery-scripts 3.4.0__tar.gz → 3.5.0__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.
- {continuous_delivery_scripts-3.4.0/continuous_delivery_scripts.egg-info → continuous_delivery_scripts-3.5.0}/PKG-INFO +2 -3
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/_version.py +3 -3
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/plugins/golang.py +76 -15
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/utils/git_helpers.py +8 -1
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0/continuous_delivery_scripts.egg-info}/PKG-INFO +2 -3
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts.egg-info/requires.txt +1 -2
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/setup.py +1 -3
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/LICENSE +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/MANIFEST.in +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/README.md +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/__init__.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/assert_news.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/create_news_file.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/detect_secrets.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/generate_docs.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/generate_news.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/get_config.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/get_version.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/language_specifics.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/license_files.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/plugins/BASIC.MD +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/plugins/CI.MD +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/plugins/GITHUB_ACTIONS.MD +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/plugins/GOLAND.MD +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/plugins/NOOP.MD +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/plugins/PYTHON.MD +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/plugins/__init__.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/plugins/basic.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/plugins/ci.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/plugins/docker.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/plugins/github_actions.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/plugins/noop.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/plugins/python.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/report_third_party_ip.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/spdx_report/__init__.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/spdx_report/spdx_dependency.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/spdx_report/spdx_document.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/spdx_report/spdx_file.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/spdx_report/spdx_helpers.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/spdx_report/spdx_package.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/spdx_report/spdx_project.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/spdx_report/spdx_summary.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/spdx_report/templates/third_party_IP_report.csv.jinja2 +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/spdx_report/templates/third_party_IP_report.html.jinja2 +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/spdx_report/templates/third_party_IP_report.txt.jinja2 +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/tag_and_release.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/update_secrets_registry.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/utils/__init__.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/utils/aws_helpers.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/utils/configuration.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/utils/definitions.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/utils/filesystem_helpers.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/utils/hash_helpers.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/utils/language_specifics_base.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/utils/logging.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/utils/news_file.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/utils/noop/__init__.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/utils/noop/package_helpers.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/utils/package_helpers.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/utils/python/__init__.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/utils/python/package_helpers.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/utils/python/python_helpers.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/utils/string_helpers.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/utils/third_party_licences.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts/utils/versioning.py +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts.egg-info/SOURCES.txt +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts.egg-info/dependency_links.txt +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts.egg-info/entry_points.txt +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/continuous_delivery_scripts.egg-info/top_level.txt +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/pyproject.toml +0 -0
- {continuous_delivery_scripts-3.4.0 → continuous_delivery_scripts-3.5.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: continuous-delivery-scripts
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.5.0
|
|
4
4
|
Summary: Continuous Delivery scripts to increase automation
|
|
5
5
|
Home-page: https://github.com/ARMmbed/continuous-delivery-scripts
|
|
6
6
|
Author: CMSIS team
|
|
@@ -36,9 +36,8 @@ Requires-Dist: spdx-tools==0.6.1
|
|
|
36
36
|
Requires-Dist: license-expression
|
|
37
37
|
Requires-Dist: wcmatch
|
|
38
38
|
Requires-Dist: jellyfish
|
|
39
|
-
Requires-Dist: jinja2
|
|
39
|
+
Requires-Dist: jinja2<4,>=3
|
|
40
40
|
Requires-Dist: dataclasses; python_version < "3.7"
|
|
41
|
-
Requires-Dist: markupsafe==2.0.1
|
|
42
41
|
Dynamic: author
|
|
43
42
|
Dynamic: author-email
|
|
44
43
|
Dynamic: classifier
|
|
@@ -11,8 +11,8 @@ References
|
|
|
11
11
|
This file is autogenerated, do not modify by hand.
|
|
12
12
|
"""
|
|
13
13
|
|
|
14
|
-
__version__ = "3.
|
|
15
|
-
COMMIT = "
|
|
14
|
+
__version__ = "3.5.0"
|
|
15
|
+
COMMIT = "c8bbe64d754ac6d58403d50c46679ccebc5e1ef8"
|
|
16
16
|
MAJOR = 3
|
|
17
|
-
MINOR =
|
|
17
|
+
MINOR = 5
|
|
18
18
|
PATCH = 0
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
#
|
|
5
5
|
"""Plugin for Golang projects."""
|
|
6
6
|
|
|
7
|
+
import json
|
|
7
8
|
import logging
|
|
8
9
|
import os
|
|
9
10
|
import shutil
|
|
@@ -143,24 +144,85 @@ def _call_goreleaser_check(version: str) -> None:
|
|
|
143
144
|
check_call(_generate_goreleaser_check_command_list(), cwd=ROOT_DIR, env=env)
|
|
144
145
|
|
|
145
146
|
|
|
146
|
-
def
|
|
147
|
-
"""Determines go module for tagging.
|
|
148
|
-
|
|
149
|
-
See https://golang.org/ref/mod#vcs-version.
|
|
150
|
-
and https://github.com/golang/go/wiki/Modules#should-i-have-multiple-modules-in-a-single-repository.
|
|
151
|
-
"""
|
|
152
|
-
module = ""
|
|
147
|
+
def _determine_go_module_tag_for_directory(module_directory: Path, version: str) -> Optional[str]:
|
|
153
148
|
try:
|
|
154
|
-
module =
|
|
149
|
+
module = module_directory.relative_to(ROOT_DIR)
|
|
155
150
|
except ValueError:
|
|
156
151
|
try:
|
|
157
|
-
module =
|
|
152
|
+
module = ROOT_DIR.relative_to(module_directory)
|
|
158
153
|
except ValueError as exception:
|
|
159
154
|
logger.warning(exception)
|
|
160
|
-
|
|
155
|
+
return None
|
|
156
|
+
module_as_posix = module.as_posix().rstrip("/")
|
|
157
|
+
if module_as_posix == "." or len(module_as_posix) == 0:
|
|
161
158
|
return None
|
|
162
|
-
|
|
163
|
-
|
|
159
|
+
return f"{module_as_posix}/{version}"
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def _find_go_work_files() -> List[Path]:
|
|
163
|
+
go_work_files: List[Path] = []
|
|
164
|
+
for go_work_file in [SRC_DIR.joinpath("go.work"), ROOT_DIR.joinpath("go.work")]:
|
|
165
|
+
if go_work_file.exists() and go_work_file not in go_work_files:
|
|
166
|
+
go_work_files.append(go_work_file)
|
|
167
|
+
return go_work_files
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
def _determine_go_work_module_directories_from_json(go_work_file: Path) -> List[Path]:
|
|
171
|
+
"""Determine module directories from `go work edit -json` output.
|
|
172
|
+
|
|
173
|
+
`go.work` lists all workspace modules that should be released together.
|
|
174
|
+
See https://go.dev/ref/mod#workspaces and https://pkg.go.dev/cmd/go#hdr-Edit_workspace_file.
|
|
175
|
+
"""
|
|
176
|
+
go_work_root = go_work_file.parent
|
|
177
|
+
go_work = json.loads(check_output(["go", "work", "edit", "-json"], cwd=go_work_root, encoding="utf8"))
|
|
178
|
+
module_directories: List[Path] = []
|
|
179
|
+
for use_definition in go_work.get("Use", []):
|
|
180
|
+
disk_path = use_definition.get("DiskPath") or use_definition.get("Path")
|
|
181
|
+
if not disk_path:
|
|
182
|
+
continue
|
|
183
|
+
module_directory = Path(str(disk_path))
|
|
184
|
+
module_directories.append(
|
|
185
|
+
module_directory if module_directory.is_absolute() else go_work_root.joinpath(module_directory)
|
|
186
|
+
)
|
|
187
|
+
return module_directories
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
def _determine_go_work_module_directories() -> List[Path]:
|
|
191
|
+
"""Determine module directories declared in `go.work`.
|
|
192
|
+
|
|
193
|
+
`go.work` lists all workspace modules that should be released together.
|
|
194
|
+
See https://go.dev/ref/mod#workspaces.
|
|
195
|
+
"""
|
|
196
|
+
module_directories: List[Path] = []
|
|
197
|
+
for go_work_file in _find_go_work_files():
|
|
198
|
+
module_directories.extend(_determine_go_work_module_directories_from_json(go_work_file))
|
|
199
|
+
return list(dict.fromkeys(module_directories))
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
def _determine_go_subproject_directories() -> List[Path]:
|
|
203
|
+
if not SRC_DIR.exists():
|
|
204
|
+
return []
|
|
205
|
+
return sorted((go_mod_file.parent for go_mod_file in SRC_DIR.rglob("go.mod")), key=lambda path: str(path))
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
def _determine_go_module_tag(version: str) -> List[str]:
|
|
209
|
+
"""Determine all go module tags for release.
|
|
210
|
+
|
|
211
|
+
See https://golang.org/ref/mod#vcs-version,
|
|
212
|
+
https://go.dev/ref/mod#workspaces, and
|
|
213
|
+
https://github.com/golang/go/wiki/Modules/a549b3e4b7ad6be6e7d11c37ef247bb2279c8146#faqs--multi-module-repositories.
|
|
214
|
+
"""
|
|
215
|
+
module_directories = [SRC_DIR]
|
|
216
|
+
go_work_module_directories = _determine_go_work_module_directories()
|
|
217
|
+
if go_work_module_directories:
|
|
218
|
+
module_directories.extend(go_work_module_directories)
|
|
219
|
+
else:
|
|
220
|
+
module_directories.extend(_determine_go_subproject_directories())
|
|
221
|
+
|
|
222
|
+
tags = [
|
|
223
|
+
_determine_go_module_tag_for_directory(module_directory, version) for module_directory in module_directories
|
|
224
|
+
]
|
|
225
|
+
return list(dict.fromkeys([tag for tag in tags if tag]))
|
|
164
226
|
|
|
165
227
|
|
|
166
228
|
class Go(BaseLanguage):
|
|
@@ -209,7 +271,7 @@ class Go(BaseLanguage):
|
|
|
209
271
|
r".*go\.sum$",
|
|
210
272
|
r"^\.circleci[\\/].*",
|
|
211
273
|
r"^workflows/.*",
|
|
212
|
-
r"^\.github[\\/]workflows[\\/].*",
|
|
274
|
+
(r"^\.github[\\/]workflows[\\/].*"),
|
|
213
275
|
]
|
|
214
276
|
|
|
215
277
|
def get_current_spdx_project(self) -> Optional["SpdxProject"]:
|
|
@@ -224,8 +286,7 @@ class Go(BaseLanguage):
|
|
|
224
286
|
def tag_release(self, git: GitWrapper, version: str, shortcuts: Dict[str, bool]) -> None:
|
|
225
287
|
"""Tags release commit."""
|
|
226
288
|
super().tag_release(git, version, shortcuts)
|
|
227
|
-
go_tag
|
|
228
|
-
if go_tag:
|
|
289
|
+
for go_tag in _determine_go_module_tag(self.get_version_tag(version)):
|
|
229
290
|
git.create_tag(go_tag, message=f"Golang module release: {go_tag}")
|
|
230
291
|
|
|
231
292
|
def _call_goreleaser_release(self, version: str) -> None:
|
|
@@ -196,7 +196,13 @@ class GitWrapper:
|
|
|
196
196
|
|
|
197
197
|
def fetch(self) -> None:
|
|
198
198
|
"""Fetches latest changes."""
|
|
199
|
-
|
|
199
|
+
try:
|
|
200
|
+
self.repo.git.fetch(all=True, tags=True, force=True)
|
|
201
|
+
except GitCommandError as e:
|
|
202
|
+
logger.info("failed fetching repository: %s" % e)
|
|
203
|
+
logger.info("Retrying a different way")
|
|
204
|
+
self.set_remote_url(self._git_url_ssh_to_https(self.get_remote_url()))
|
|
205
|
+
self.repo.git.fetch(all=True, tags=True, force=True)
|
|
200
206
|
|
|
201
207
|
def get_branch(self, branch_name: str) -> Any:
|
|
202
208
|
"""Gets a specific local branch.
|
|
@@ -802,6 +808,7 @@ class GitTempClone:
|
|
|
802
808
|
Tempfiles objects on Windows are holding references to open files until
|
|
803
809
|
they are collected by the garbage collector, thus preventing deletion.
|
|
804
810
|
"""
|
|
811
|
+
self._clone.repo.close()
|
|
805
812
|
self._repo.repo.close()
|
|
806
813
|
self._temporary_dir.cleanup()
|
|
807
814
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: continuous-delivery-scripts
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.5.0
|
|
4
4
|
Summary: Continuous Delivery scripts to increase automation
|
|
5
5
|
Home-page: https://github.com/ARMmbed/continuous-delivery-scripts
|
|
6
6
|
Author: CMSIS team
|
|
@@ -36,9 +36,8 @@ Requires-Dist: spdx-tools==0.6.1
|
|
|
36
36
|
Requires-Dist: license-expression
|
|
37
37
|
Requires-Dist: wcmatch
|
|
38
38
|
Requires-Dist: jellyfish
|
|
39
|
-
Requires-Dist: jinja2
|
|
39
|
+
Requires-Dist: jinja2<4,>=3
|
|
40
40
|
Requires-Dist: dataclasses; python_version < "3.7"
|
|
41
|
-
Requires-Dist: markupsafe==2.0.1
|
|
42
41
|
Dynamic: author
|
|
43
42
|
Dynamic: author-email
|
|
44
43
|
Dynamic: classifier
|
|
@@ -74,10 +74,8 @@ setup(
|
|
|
74
74
|
"license-expression",
|
|
75
75
|
"wcmatch",
|
|
76
76
|
"jellyfish",
|
|
77
|
-
"jinja2
|
|
77
|
+
"jinja2>=3,<4",
|
|
78
78
|
"dataclasses; python_version<'3.7'",
|
|
79
|
-
# FIXME fixing markupsafe to solve https://github.com/pallets/markupsafe/issues/284 until jinja is upgraded
|
|
80
|
-
"markupsafe==2.0.1",
|
|
81
79
|
],
|
|
82
80
|
license="Apache 2.0",
|
|
83
81
|
long_description_content_type="text/markdown",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|