cycode 1.8.3.dev1__tar.gz → 1.9.1.dev1__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.
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/PKG-INFO +1 -1
- cycode-1.9.1.dev1/cycode/__init__.py +1 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/auth/auth_command.py +2 -6
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/exceptions/handle_report_sbom_errors.py +1 -3
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/exceptions/handle_scan_errors.py +1 -3
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/printers/console_printer.py +7 -2
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/printers/printer_base.py +16 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/pyproject.toml +1 -1
- cycode-1.8.3.dev1/cycode/__init__.py +0 -1
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/README.md +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/auth/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/auth/auth_manager.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/configure/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/configure/configure_command.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/ignore/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/ignore/ignore_command.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/main_cli.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/report/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/report/report_command.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/report/sbom/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/report/sbom/common.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/report/sbom/path/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/report/sbom/path/path_command.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/report/sbom/repository_url/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/report/sbom/repository_url/repository_url_command.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/report/sbom/sbom_command.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/report/sbom/sbom_report_file.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/scan/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/scan/code_scanner.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/scan/commit_history/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/scan/commit_history/commit_history_command.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/scan/path/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/scan/path/path_command.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/scan/pre_commit/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/scan/pre_commit/pre_commit_command.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/scan/pre_receive/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/scan/pre_receive/pre_receive_command.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/scan/repository/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/scan/repository/repository_command.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/scan/scan_ci/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/scan/scan_ci/ci_integrations.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/scan/scan_ci/scan_ci_command.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/scan/scan_command.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/version/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/version/version_command.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/config.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/config.yaml +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/consts.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/exceptions/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/exceptions/custom_exceptions.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/files_collector/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/files_collector/excluder.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/files_collector/iac/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/files_collector/iac/tf_content_generator.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/files_collector/models/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/files_collector/models/in_memory_zip.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/files_collector/path_documents.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/files_collector/repository_documents.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/files_collector/sca/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/files_collector/sca/maven/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/files_collector/sca/maven/base_restore_maven_dependencies.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/files_collector/sca/maven/restore_gradle_dependencies.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/files_collector/sca/maven/restore_maven_dependencies.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/files_collector/sca/sca_code_scanner.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/files_collector/zip_documents.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/main.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/models.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/printers/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/printers/json_printer.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/printers/tables/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/printers/tables/sca_table_printer.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/printers/tables/table.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/printers/tables/table_models.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/printers/tables/table_printer.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/printers/tables/table_printer_base.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/printers/text_printer.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/user_settings/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/user_settings/base_file_manager.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/user_settings/config_file_manager.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/user_settings/configuration_manager.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/user_settings/credentials_manager.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/user_settings/jwt_creator.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/utils/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/utils/enum_utils.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/utils/get_api_client.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/utils/path_utils.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/utils/progress_bar.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/utils/scan_batch.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/utils/scan_utils.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/utils/shell_executor.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/utils/string_utils.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/utils/task_timer.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/utils/yaml_utils.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cyclient/__init__.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cyclient/auth_client.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cyclient/client_creator.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cyclient/config.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cyclient/config.yaml +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cyclient/config_dev.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cyclient/cycode_client.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cyclient/cycode_client_base.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cyclient/cycode_dev_based_client.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cyclient/cycode_token_based_client.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cyclient/models.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cyclient/report_client.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cyclient/scan_client.py +0 -0
- {cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cyclient/scan_config_base.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '1.9.1.dev1' # DON'T TOUCH. Placeholder. Will be filled automatically on poetry build from Git Tag
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import traceback
|
|
2
|
-
|
|
3
1
|
import click
|
|
4
2
|
|
|
5
3
|
from cycode.cli.commands.auth.auth_manager import AuthManager
|
|
@@ -54,16 +52,14 @@ def authorization_check(context: click.Context) -> None:
|
|
|
54
52
|
printer.print_result(passed_auth_check_res)
|
|
55
53
|
return
|
|
56
54
|
except (NetworkError, HttpUnauthorizedError):
|
|
57
|
-
|
|
58
|
-
click.secho(f'Error: {traceback.format_exc()}', fg='red')
|
|
55
|
+
ConsolePrinter(context).print_exception()
|
|
59
56
|
|
|
60
57
|
printer.print_result(failed_auth_check_res)
|
|
61
58
|
return
|
|
62
59
|
|
|
63
60
|
|
|
64
61
|
def _handle_exception(context: click.Context, e: Exception) -> None:
|
|
65
|
-
|
|
66
|
-
click.secho(f'Error: {traceback.format_exc()}', fg='red')
|
|
62
|
+
ConsolePrinter(context).print_exception()
|
|
67
63
|
|
|
68
64
|
errors: CliErrors = {
|
|
69
65
|
AuthProcessError: CliError(
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import traceback
|
|
2
1
|
from typing import Optional
|
|
3
2
|
|
|
4
3
|
import click
|
|
@@ -9,8 +8,7 @@ from cycode.cli.printers import ConsolePrinter
|
|
|
9
8
|
|
|
10
9
|
|
|
11
10
|
def handle_report_exception(context: click.Context, err: Exception) -> Optional[CliError]:
|
|
12
|
-
|
|
13
|
-
click.secho(f'Error: {traceback.format_exc()}', fg='red')
|
|
11
|
+
ConsolePrinter(context).print_exception()
|
|
14
12
|
|
|
15
13
|
errors: CliErrors = {
|
|
16
14
|
custom_exceptions.NetworkError: CliError(
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import traceback
|
|
2
1
|
from typing import Optional
|
|
3
2
|
|
|
4
3
|
import click
|
|
@@ -14,8 +13,7 @@ def handle_scan_exception(
|
|
|
14
13
|
) -> Optional[CliError]:
|
|
15
14
|
context.obj['did_fail'] = True
|
|
16
15
|
|
|
17
|
-
|
|
18
|
-
click.secho(f'Error: {traceback.format_exc()}', fg='red')
|
|
16
|
+
ConsolePrinter(context).print_exception()
|
|
19
17
|
|
|
20
18
|
errors: CliErrors = {
|
|
21
19
|
custom_exceptions.NetworkError: CliError(
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import TYPE_CHECKING, ClassVar, Dict, List, Optional
|
|
1
|
+
from typing import TYPE_CHECKING, ClassVar, Dict, List, Optional, Type
|
|
2
2
|
|
|
3
3
|
import click
|
|
4
4
|
|
|
@@ -15,7 +15,7 @@ if TYPE_CHECKING:
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class ConsolePrinter:
|
|
18
|
-
_AVAILABLE_PRINTERS: ClassVar[Dict[str, 'PrinterBase']] = {
|
|
18
|
+
_AVAILABLE_PRINTERS: ClassVar[Dict[str, Type['PrinterBase']]] = {
|
|
19
19
|
'text': TextPrinter,
|
|
20
20
|
'json': JsonPrinter,
|
|
21
21
|
'table': TablePrinter,
|
|
@@ -53,3 +53,8 @@ class ConsolePrinter:
|
|
|
53
53
|
|
|
54
54
|
def print_error(self, error: CliError) -> None:
|
|
55
55
|
self._printer_class(self.context).print_error(error)
|
|
56
|
+
|
|
57
|
+
def print_exception(self, e: Optional[BaseException] = None, force_print: bool = False) -> None:
|
|
58
|
+
"""Print traceback message in stderr if verbose mode is set."""
|
|
59
|
+
if force_print or self.context.obj.get('verbose', False):
|
|
60
|
+
self._printer_class(self.context).print_exception(e)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import traceback
|
|
1
2
|
from abc import ABC, abstractmethod
|
|
2
3
|
from typing import TYPE_CHECKING, Dict, List, Optional
|
|
3
4
|
|
|
@@ -30,3 +31,18 @@ class PrinterBase(ABC):
|
|
|
30
31
|
@abstractmethod
|
|
31
32
|
def print_error(self, error: CliError) -> None:
|
|
32
33
|
pass
|
|
34
|
+
|
|
35
|
+
def print_exception(self, e: Optional[BaseException] = None) -> None:
|
|
36
|
+
"""We are printing it in stderr so, we don't care about supporting JSON and TABLE outputs.
|
|
37
|
+
|
|
38
|
+
Note:
|
|
39
|
+
Called only when the verbose flag is set.
|
|
40
|
+
"""
|
|
41
|
+
if e is None:
|
|
42
|
+
# gets the most recent exception caught by an except clause
|
|
43
|
+
message = f'Error: {traceback.format_exc()}'
|
|
44
|
+
else:
|
|
45
|
+
traceback_message = ''.join(traceback.format_exception(e))
|
|
46
|
+
message = f'Error: {traceback_message}'
|
|
47
|
+
|
|
48
|
+
click.secho(message, err=True, fg=self.RED_COLOR_NAME)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "cycode"
|
|
3
|
-
version = "1.
|
|
3
|
+
version = "1.9.1.dev1" # DON'T TOUCH. Placeholder. Will be filled automatically on poetry build from Git Tag
|
|
4
4
|
description = "Boost security in your dev lifecycle via SAST, SCA, Secrets & IaC scanning."
|
|
5
5
|
keywords=["secret-scan", "cycode", "devops", "token", "secret", "security", "cycode", "code"]
|
|
6
6
|
authors = ["Cycode <support@cycode.com>"]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '1.8.3.dev1' # DON'T TOUCH. Placeholder. Will be filled automatically on poetry build from Git Tag
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/report/sbom/path/path_command.py
RENAMED
|
File without changes
|
{cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/report/sbom/repository_url/__init__.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
|
{cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/scan/pre_commit/pre_commit_command.py
RENAMED
|
File without changes
|
|
File without changes
|
{cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/scan/pre_receive/pre_receive_command.py
RENAMED
|
File without changes
|
|
File without changes
|
{cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/commands/scan/repository/repository_command.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
|
{cycode-1.8.3.dev1 → cycode-1.9.1.dev1}/cycode/cli/files_collector/iac/tf_content_generator.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|