mite 2.4.6__tar.gz → 2.4.7__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.
- {mite-2.4.6 → mite-2.4.7}/PKG-INFO +3 -1
- mite-2.4.7/mite/s3datapools.py +107 -0
- {mite-2.4.6 → mite-2.4.7}/mite.egg-info/PKG-INFO +3 -1
- {mite-2.4.6 → mite-2.4.7}/mite.egg-info/SOURCES.txt +1 -0
- {mite-2.4.6 → mite-2.4.7}/mite.egg-info/requires.txt +3 -0
- {mite-2.4.6 → mite-2.4.7}/setup.cfg +2 -0
- {mite-2.4.6 → mite-2.4.7}/.dockerignore +0 -0
- {mite-2.4.6 → mite-2.4.7}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {mite-2.4.6 → mite-2.4.7}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {mite-2.4.6 → mite-2.4.7}/.github/pull_request_template.md +0 -0
- {mite-2.4.6 → mite-2.4.7}/.gitignore +0 -0
- {mite-2.4.6 → mite-2.4.7}/.isort.cfg +0 -0
- {mite-2.4.6 → mite-2.4.7}/.pre-commit-config.yaml +0 -0
- {mite-2.4.6 → mite-2.4.7}/.travis.yml +0 -0
- {mite-2.4.6 → mite-2.4.7}/CODE_OF_CONDUCT.md +0 -0
- {mite-2.4.6 → mite-2.4.7}/CONTRIBUTING.md +0 -0
- {mite-2.4.6 → mite-2.4.7}/DEV.md +0 -0
- {mite-2.4.6 → mite-2.4.7}/Dockerfile +0 -0
- {mite-2.4.6 → mite-2.4.7}/Dockerfile.perftest +0 -0
- {mite-2.4.6 → mite-2.4.7}/LICENSE +0 -0
- {mite-2.4.6 → mite-2.4.7}/MANIFEST.in +0 -0
- {mite-2.4.6 → mite-2.4.7}/README.md +0 -0
- {mite-2.4.6 → mite-2.4.7}/cd-scripts/cdBuild-1.sh +0 -0
- {mite-2.4.6 → mite-2.4.7}/cd-scripts/cdRelease.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/cd-scripts/cdTagRelease.sh +0 -0
- {mite-2.4.6 → mite-2.4.7}/cd-scripts/runTests.sh +0 -0
- {mite-2.4.6 → mite-2.4.7}/cd.yml +0 -0
- {mite-2.4.6 → mite-2.4.7}/dev-requirements.txt +0 -0
- {mite-2.4.6 → mite-2.4.7}/docker_compose.yml +0 -0
- {mite-2.4.6 → mite-2.4.7}/docker_compose_monitoring.yml +0 -0
- {mite-2.4.6 → mite-2.4.7}/docs/Makefile +0 -0
- {mite-2.4.6 → mite-2.4.7}/docs/components.rst +0 -0
- {mite-2.4.6 → mite-2.4.7}/docs/conf.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/docs/config.rst +0 -0
- {mite-2.4.6 → mite-2.4.7}/docs/design-deployment.rst +0 -0
- {mite-2.4.6 → mite-2.4.7}/docs/index.rst +0 -0
- {mite-2.4.6 → mite-2.4.7}/docs/journeys.rst +0 -0
- {mite-2.4.6 → mite-2.4.7}/docs/notes.txt +0 -0
- {mite-2.4.6 → mite-2.4.7}/docs/prometheus.rst +0 -0
- {mite-2.4.6 → mite-2.4.7}/docs/stats.rst +0 -0
- {mite-2.4.6 → mite-2.4.7}/docs/volume-model.rst +0 -0
- {mite-2.4.6 → mite-2.4.7}/grafana/Dockerfile +0 -0
- {mite-2.4.6 → mite-2.4.7}/grafana/config.ini +0 -0
- {mite-2.4.6 → mite-2.4.7}/grafana/provisioning/dashboards/dashboards.yml +0 -0
- {mite-2.4.6 → mite-2.4.7}/grafana/provisioning/dashboards/grafana_dashboard_template.json +0 -0
- {mite-2.4.6 → mite-2.4.7}/grafana/provisioning/dashboards/mite_docker.json +0 -0
- {mite-2.4.6 → mite-2.4.7}/grafana/provisioning/datasources/datasources.yml +0 -0
- {mite-2.4.6 → mite-2.4.7}/local/Makefile +0 -0
- {mite-2.4.6 → mite-2.4.7}/local/README.md +0 -0
- {mite-2.4.6 → mite-2.4.7}/local/demo.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/local/run_mite.sh +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/__init__.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/__main__.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/cli/__init__.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/cli/cat.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/cli/collector.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/cli/common.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/cli/duplicator.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/cli/receiver.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/cli/stats.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/cli/test.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/collector.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/config.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/context.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/controller.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/datapools.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/example.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/exceptions.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/har_to_mite.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/logoutput.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/nanomsg.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/recorder.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/runner.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/scenario.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/stats.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/test.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/utils.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/volume_model.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/web/__init__.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/web/prometheus.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite/zmq.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite.egg-info/dependency_links.txt +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite.egg-info/entry_points.txt +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite.egg-info/top_level.txt +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_amqp/__init__.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_browser/__init__.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_finagle/README.md +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_finagle/__init__.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_finagle/mux.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_finagle/stats.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_finagle/tests/__init__.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_finagle/tests/conftest.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_finagle/tests/foo_service/Foo-remote +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_finagle/tests/foo_service/Foo.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_finagle/tests/foo_service/__init__.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_finagle/tests/foo_service/constants.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_finagle/tests/foo_service/ttypes.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_finagle/tests/foo_service.thrift +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_finagle/tests/test_integration.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_finagle/tests/test_mux.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_finagle/tests/test_thrift.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_finagle/thrift.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_http/__init__.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_http/stats.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_kafka/__init__.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_kafka/mite_kafka_example.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_kafka/stats.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_selenium/__init__.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_selenium/stats.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/mite_websocket/__init__.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/prometheus/Dockerfile +0 -0
- {mite-2.4.6 → mite-2.4.7}/prometheus/prometheus_config_docker.yml +0 -0
- {mite-2.4.6 → mite-2.4.7}/prometheus/prometheus_config_template.yml +0 -0
- {mite-2.4.6 → mite-2.4.7}/pyproject.toml +0 -0
- {mite-2.4.6 → mite-2.4.7}/requirements.txt +0 -0
- {mite-2.4.6 → mite-2.4.7}/setup.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/legacy.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/mocks/mock_collector.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/mocks/mock_context.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/mocks/mock_direct_receiver.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/mocks/mock_direct_runner_transport.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/mocks/mock_recorder_msg_http.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/mocks/mock_selenium.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/mocks/mock_sender.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/perf/.gitignore +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/perf/http_server.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/perf/http_server_aiohttp.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/perf/mite_perftest.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/perf/perftest.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/perf/run-perftest.sh +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/perf/test-requirements.txt +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test.har +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_collector.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_config.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_context.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_controller.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_datapools.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_har_to_mite.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_logging.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_mite_amqp.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_mite_browser.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_mite_http.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_mite_kafka.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_mite_utils.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_mite_websockets.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_prometheus_mite.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_recorder.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_runner.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_runner_tracker.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_scenario.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_stats.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_volume_model.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_webdriver.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test/test_work_tracker.py +0 -0
- {mite-2.4.6 → mite-2.4.7}/test-requirements.txt +0 -0
- {mite-2.4.6 → mite-2.4.7}/test.har +0 -0
- {mite-2.4.6 → mite-2.4.7}/tox.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: mite
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.7
|
|
4
4
|
Summary: A Python Performance Testing Framework
|
|
5
5
|
Home-page: https://github.com/sky-uk/mite/
|
|
6
6
|
Classifier: License :: OSI Approved :: MIT License
|
|
@@ -29,6 +29,8 @@ Provides-Extra: kafka
|
|
|
29
29
|
Requires-Dist: aiokafka; extra == "kafka"
|
|
30
30
|
Provides-Extra: finagle
|
|
31
31
|
Requires-Dist: thrift; extra == "finagle"
|
|
32
|
+
Provides-Extra: s3datapools
|
|
33
|
+
Requires-Dist: boto3; extra == "s3datapools"
|
|
32
34
|
Provides-Extra: selenium
|
|
33
35
|
Requires-Dist: selenium; extra == "selenium"
|
|
34
36
|
Provides-Extra: selenium-wire
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from collections import deque
|
|
3
|
+
|
|
4
|
+
import boto3
|
|
5
|
+
|
|
6
|
+
from mite.datapools import DataPoolExhausted, DataPoolItem
|
|
7
|
+
|
|
8
|
+
logger = logging.getLogger(__name__)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class S3IterableDataPool:
|
|
12
|
+
def __init__(
|
|
13
|
+
self,
|
|
14
|
+
bucket_name,
|
|
15
|
+
prefix="",
|
|
16
|
+
access_key_id=None,
|
|
17
|
+
secret_access_key=None,
|
|
18
|
+
preload_minimum=None,
|
|
19
|
+
):
|
|
20
|
+
self.s3_client = boto3.client(
|
|
21
|
+
"s3",
|
|
22
|
+
aws_access_key_id=access_key_id,
|
|
23
|
+
aws_secret_access_key=secret_access_key,
|
|
24
|
+
)
|
|
25
|
+
self.bucket_name = bucket_name
|
|
26
|
+
self.prefix = prefix
|
|
27
|
+
self.list_obj_kwargs = {"Bucket": self.bucket_name, "Prefix": self.prefix}
|
|
28
|
+
self._data = []
|
|
29
|
+
self.item_index = 0
|
|
30
|
+
self.populating = False
|
|
31
|
+
self.exhausted = False
|
|
32
|
+
|
|
33
|
+
if preload_minimum:
|
|
34
|
+
while len(self._data) < preload_minimum and not self.exhausted:
|
|
35
|
+
self.populate()
|
|
36
|
+
else:
|
|
37
|
+
while not self.exhausted:
|
|
38
|
+
self.populate()
|
|
39
|
+
|
|
40
|
+
def populate(self):
|
|
41
|
+
response = self.s3_client.list_objects_v2(**self.list_obj_kwargs)
|
|
42
|
+
|
|
43
|
+
for obj in response["Contents"]:
|
|
44
|
+
self._data.append((self.item_index, obj["Key"]))
|
|
45
|
+
self.item_index += 1
|
|
46
|
+
|
|
47
|
+
if response.get("IsTruncated"):
|
|
48
|
+
self.list_obj_kwargs.update(
|
|
49
|
+
{"ContinuationToken": response["NextContinuationToken"]}
|
|
50
|
+
)
|
|
51
|
+
else:
|
|
52
|
+
self.exhausted = True
|
|
53
|
+
|
|
54
|
+
async def checkout(self, config):
|
|
55
|
+
if not self.exhausted and not self.populating:
|
|
56
|
+
self.populating = True
|
|
57
|
+
self.populate()
|
|
58
|
+
self.populating = False
|
|
59
|
+
|
|
60
|
+
try:
|
|
61
|
+
item_id, file_key = self._data.pop(0)
|
|
62
|
+
file_obj = self.s3_client.get_object(Bucket=self.bucket_name, Key=file_key)
|
|
63
|
+
file_content = file_obj["Body"].read().decode("utf-8")
|
|
64
|
+
data = (file_key, file_content)
|
|
65
|
+
|
|
66
|
+
except IndexError as e:
|
|
67
|
+
raise DataPoolExhausted() from e
|
|
68
|
+
return DataPoolItem(item_id, data)
|
|
69
|
+
|
|
70
|
+
async def checkin(self, item_id):
|
|
71
|
+
pass
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class S3RecyclableIterableDataPool(S3IterableDataPool):
|
|
75
|
+
def __init__(self, *args, **kwargs):
|
|
76
|
+
super().__init__(*args, **kwargs)
|
|
77
|
+
|
|
78
|
+
self._available = deque(range(len(self._data)))
|
|
79
|
+
|
|
80
|
+
async def checkout(self, config):
|
|
81
|
+
if not self.exhausted and not self.populating:
|
|
82
|
+
self.populating = True
|
|
83
|
+
starting_id = self.item_index
|
|
84
|
+
self.populate()
|
|
85
|
+
self._available.extend(range(starting_id, self.item_index))
|
|
86
|
+
self.populating = False
|
|
87
|
+
|
|
88
|
+
if self._available:
|
|
89
|
+
item_id = self._available.popleft()
|
|
90
|
+
|
|
91
|
+
file_key = self._data[item_id][1]
|
|
92
|
+
file_obj = self.s3_client.get_object(Bucket=self.bucket_name, Key=file_key)
|
|
93
|
+
file_content = file_obj["Body"].read().decode("utf-8")
|
|
94
|
+
data = (file_key, file_content)
|
|
95
|
+
|
|
96
|
+
return DataPoolItem(item_id, data)
|
|
97
|
+
else:
|
|
98
|
+
raise Exception("Recyclable iterable datapool was emptied!")
|
|
99
|
+
|
|
100
|
+
async def checkin(self, item_id):
|
|
101
|
+
if self._available is None:
|
|
102
|
+
logger.error(
|
|
103
|
+
f"{repr(self)}: checkin called for {item_id} before the datapool "
|
|
104
|
+
"was initialized! Maybe a stale runner is hanging around"
|
|
105
|
+
)
|
|
106
|
+
return
|
|
107
|
+
self._available.append(item_id)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: mite
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.7
|
|
4
4
|
Summary: A Python Performance Testing Framework
|
|
5
5
|
Home-page: https://github.com/sky-uk/mite/
|
|
6
6
|
Classifier: License :: OSI Approved :: MIT License
|
|
@@ -29,6 +29,8 @@ Provides-Extra: kafka
|
|
|
29
29
|
Requires-Dist: aiokafka; extra == "kafka"
|
|
30
30
|
Provides-Extra: finagle
|
|
31
31
|
Requires-Dist: thrift; extra == "finagle"
|
|
32
|
+
Provides-Extra: s3datapools
|
|
33
|
+
Requires-Dist: boto3; extra == "s3datapools"
|
|
32
34
|
Provides-Extra: selenium
|
|
33
35
|
Requires-Dist: selenium; extra == "selenium"
|
|
34
36
|
Provides-Extra: selenium-wire
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mite-2.4.6 → mite-2.4.7}/DEV.md
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
|
{mite-2.4.6 → mite-2.4.7}/cd.yml
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|