clarifai 11.8.0__tar.gz → 11.8.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.
- {clarifai-11.8.0/clarifai.egg-info → clarifai-11.8.1}/PKG-INFO +1 -1
- clarifai-11.8.1/clarifai/__init__.py +1 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/models/model_runner.py +21 -24
- {clarifai-11.8.0 → clarifai-11.8.1/clarifai.egg-info}/PKG-INFO +1 -1
- clarifai-11.8.0/clarifai/__init__.py +0 -1
- {clarifai-11.8.0 → clarifai-11.8.1}/LICENSE +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/MANIFEST.in +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/README.md +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/cli/README.md +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/cli/__init__.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/cli/__main__.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/cli/base.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/cli/compute_cluster.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/cli/deployment.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/cli/model.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/cli/nodepool.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/cli/pipeline.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/cli/pipeline_step.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/cli/templates/__init__.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/cli/templates/model_templates.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/cli/templates/pipeline_step_templates.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/cli/templates/pipeline_templates.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/cli.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/__init__.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/app.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/auth/__init__.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/auth/helper.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/auth/register.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/auth/stub.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/base.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/compute_cluster.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/dataset.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/deployment.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/input.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/lister.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/model.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/model_client.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/module.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/nodepool.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/pipeline.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/pipeline_step.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/runner.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/search.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/user.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/client/workflow.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/constants/base.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/constants/dataset.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/constants/input.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/constants/model.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/constants/rag.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/constants/search.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/constants/workflow.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/datasets/__init__.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/datasets/export/__init__.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/datasets/export/inputs_annotations.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/datasets/upload/__init__.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/datasets/upload/base.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/datasets/upload/features.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/datasets/upload/image.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/datasets/upload/loaders/README.md +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/datasets/upload/loaders/__init__.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/datasets/upload/loaders/coco_captions.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/datasets/upload/loaders/coco_detection.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/datasets/upload/loaders/imagenet_classification.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/datasets/upload/loaders/xview_detection.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/datasets/upload/multimodal.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/datasets/upload/text.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/datasets/upload/utils.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/errors.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/models/__init__.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/models/api.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/modules/README.md +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/modules/__init__.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/modules/css.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/modules/pages.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/modules/style.css +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/rag/__init__.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/rag/rag.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/rag/utils.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/__init__.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/dockerfile_template/Dockerfile.template +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/models/__init__.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/models/dummy_openai_model.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/models/mcp_class.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/models/model_builder.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/models/model_class.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/models/model_run_locally.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/models/model_servicer.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/models/openai_class.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/models/visual_classifier_class.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/models/visual_detector_class.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/pipeline_steps/__init__.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/pipeline_steps/pipeline_step_builder.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/pipelines/__init__.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/pipelines/pipeline_builder.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/server.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/utils/__init__.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/utils/code_script.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/utils/const.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/utils/data_types/__init__.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/utils/data_types/data_types.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/utils/data_utils.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/utils/loader.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/utils/method_signatures.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/utils/model_utils.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/utils/openai_convertor.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/utils/pipeline_validation.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/utils/serializers.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/utils/url_fetcher.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/schema/search.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/urls/helper.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/utils/__init__.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/utils/cli.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/utils/config.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/utils/constants.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/utils/evaluation/__init__.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/utils/evaluation/helpers.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/utils/evaluation/main.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/utils/evaluation/testset_annotation_parser.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/utils/logging.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/utils/misc.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/utils/model_train.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/utils/protobuf.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/utils/secrets.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/versions.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/workflows/__init__.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/workflows/export.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/workflows/utils.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai/workflows/validate.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai.egg-info/SOURCES.txt +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai.egg-info/dependency_links.txt +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai.egg-info/entry_points.txt +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai.egg-info/requires.txt +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/clarifai.egg-info/top_level.txt +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/pyproject.toml +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/requirements.txt +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/setup.cfg +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/setup.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/tests/test_app.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/tests/test_async_stub.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/tests/test_auth.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/tests/test_data_upload.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/tests/test_eval.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/tests/test_list_models.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/tests/test_misc.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/tests/test_model_predict.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/tests/test_model_train.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/tests/test_modules.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/tests/test_pipeline_client.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/tests/test_rag.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/tests/test_search.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/tests/test_secrets.py +0 -0
- {clarifai-11.8.0 → clarifai-11.8.1}/tests/test_stub.py +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "11.8.1"
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import time
|
2
|
-
from typing import Iterator, Optional
|
2
|
+
from typing import Iterator, Optional, Union
|
3
3
|
|
4
4
|
from clarifai_grpc.grpc.api import service_pb2
|
5
5
|
from clarifai_grpc.grpc.api.status import status_code_pb2, status_pb2
|
6
6
|
from clarifai_protocol import BaseRunner
|
7
|
-
from clarifai_protocol.utils.health import HealthProbeRequestHandler
|
7
|
+
from clarifai_protocol.utils.health import HealthProbeRequestHandler, start_health_server_thread
|
8
8
|
|
9
9
|
from clarifai.client.auth.helper import ClarifaiAuthHelper
|
10
10
|
from clarifai.utils.constants import STATUS_FAIL, STATUS_MIXED, STATUS_OK, STATUS_UNKNOWN
|
@@ -15,7 +15,7 @@ from ..utils.url_fetcher import ensure_urls_downloaded
|
|
15
15
|
from .model_class import ModelClass
|
16
16
|
|
17
17
|
|
18
|
-
class ModelRunner(BaseRunner
|
18
|
+
class ModelRunner(BaseRunner):
|
19
19
|
"""
|
20
20
|
This is a subclass of the runner class which will handle only the work items relevant to models.
|
21
21
|
"""
|
@@ -32,6 +32,7 @@ class ModelRunner(BaseRunner, HealthProbeRequestHandler):
|
|
32
32
|
pat: Optional[str] = None,
|
33
33
|
token: Optional[str] = None,
|
34
34
|
num_parallel_polls: int = 4,
|
35
|
+
health_check_port: Union[int, None] = 8080,
|
35
36
|
**kwargs,
|
36
37
|
) -> None:
|
37
38
|
super().__init__(
|
@@ -70,10 +71,27 @@ class ModelRunner(BaseRunner, HealthProbeRequestHandler):
|
|
70
71
|
# If auth helper creation fails, proceed without authentication
|
71
72
|
self._auth_helper = None
|
72
73
|
|
74
|
+
# if the model has a handle_liveness_probe method, call it to determine liveness
|
75
|
+
# otherwise rely on self.is_alive from the protocol
|
76
|
+
if hasattr(self.model, 'handle_liveness_probe'):
|
77
|
+
HealthProbeRequestHandler.handle_liveness_probe = self.model.handle_liveness_probe
|
78
|
+
|
79
|
+
# if the model has a handle_readiness_probe method, call it to determine readiness
|
80
|
+
# otherwise rely on self.is_ready from the protocol
|
81
|
+
if hasattr(self.model, 'handle_readiness_probe'):
|
82
|
+
HealthProbeRequestHandler.handle_readiness_probe = self.model.handle_readiness_probe
|
83
|
+
|
84
|
+
# if the model has a handle_startup_probe method, call it to determine startup
|
85
|
+
# otherwise rely on self.is_startup from the protocol
|
86
|
+
if hasattr(self.model, 'handle_startup_probe'):
|
87
|
+
HealthProbeRequestHandler.handle_startup_probe = self.model.handle_startup_probe
|
88
|
+
|
73
89
|
# After model load successfully set the health probe to ready and startup
|
74
90
|
HealthProbeRequestHandler.is_ready = True
|
75
91
|
HealthProbeRequestHandler.is_startup = True
|
76
92
|
|
93
|
+
start_health_server_thread(port=health_check_port, address='')
|
94
|
+
|
77
95
|
def get_runner_item_output_for_status(
|
78
96
|
self, status: status_pb2.Status
|
79
97
|
) -> service_pb2.RunnerItemOutput:
|
@@ -301,27 +319,6 @@ class ModelRunner(BaseRunner, HealthProbeRequestHandler):
|
|
301
319
|
"""Set the model for this runner."""
|
302
320
|
self.model = model
|
303
321
|
|
304
|
-
def handle_liveness_probe(self):
|
305
|
-
# if the model has a handle_liveness_probe method, call it to determine liveness
|
306
|
-
# otherwise rely on HealthProbeRequestHandler.is_alive from the protocol
|
307
|
-
if hasattr(self.model, 'handle_liveness_probe'):
|
308
|
-
HealthProbeRequestHandler.is_alive = self.model.handle_liveness_probe()
|
309
|
-
return super().handle_liveness_probe()
|
310
|
-
|
311
|
-
def handle_readiness_probe(self):
|
312
|
-
# if the model has a handle_readiness_probe method, call it to determine readiness
|
313
|
-
# otherwise rely on HealthProbeRequestHandler.is_ready from the protocol
|
314
|
-
if hasattr(self.model, 'handle_readiness_probe'):
|
315
|
-
HealthProbeRequestHandler.is_ready = self.model.handle_readiness_probe()
|
316
|
-
return super().handle_readiness_probe()
|
317
|
-
|
318
|
-
def handle_startup_probe(self):
|
319
|
-
# if the model has a handle_startup_probe method, call it to determine startup
|
320
|
-
# otherwise rely on HealthProbeRequestHandler.is_startup from the protocol
|
321
|
-
if hasattr(self.model, 'handle_startup_probe'):
|
322
|
-
HealthProbeRequestHandler.is_startup = self.model.handle_startup_probe()
|
323
|
-
return super().handle_startup_probe()
|
324
|
-
|
325
322
|
|
326
323
|
def pmo_iterator(runner_item_iterator, auth_helper=None):
|
327
324
|
for runner_item in runner_item_iterator:
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "11.8.0"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{clarifai-11.8.0 → clarifai-11.8.1}/clarifai/datasets/upload/loaders/imagenet_classification.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
|
{clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/dockerfile_template/Dockerfile.template
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
|
{clarifai-11.8.0 → clarifai-11.8.1}/clarifai/runners/pipeline_steps/pipeline_step_builder.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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|