##// END OF EJS Templates
Removed old Variable impl...
jeandet -
r69:cc26524fb5d1
parent child
Show More
@@ -78,29 +78,16 FILE (GLOB_RECURSE core_SRCS
78 ./include/Common/containers.h
78 ./include/Common/containers.h
79 ./include/Common/debug.h
79 ./include/Common/debug.h
80 ./include/Common/cpp_utils.h
80 ./include/Common/cpp_utils.h
81 ./include/Common/variant_with_base.h
82 ./include/Plugin/IPlugin.h
81 ./include/Plugin/IPlugin.h
83 ./include/Data/ArrayDataIterator.h
84 ./include/Data/VectorSeries.h
85 ./include/Data/VectorTimeSerie.h
82 ./include/Data/VectorTimeSerie.h
86 ./include/Data/DateTimeRange.h
83 ./include/Data/DateTimeRange.h
87 ./include/Data/DateTimeRangeHelper.h
84 ./include/Data/DateTimeRangeHelper.h
88 ./include/Data/ScalarSeries.h
89 ./include/Data/ScalarTimeSerie.h
85 ./include/Data/ScalarTimeSerie.h
90 ./include/Data/DataSeriesMergeHelper.h
91 ./include/Data/DataSeries.h
92 ./include/Data/DataSeriesType.h
86 ./include/Data/DataSeriesType.h
93 ./include/Data/SqpIterator.h
87 ./include/Data/SqpIterator.h
94 ./include/Data/ArrayData.h
95 ./include/Data/DataSeriesIterator.h
96 ./include/Data/DataSeriesUtils.h
97 ./include/Data/SpectrogramSeries.h
98 ./include/Data/SpectrogramTimeSerie.h
88 ./include/Data/SpectrogramTimeSerie.h
99 ./include/Data/Unit.h
100 ./include/Data/DataProviderParameters.h
89 ./include/Data/DataProviderParameters.h
101 ./include/Data/OptionalAxis.h
102 ./include/Data/IDataProvider.h
90 ./include/Data/IDataProvider.h
103 ./include/Data/IDataSeries.h
104 ./include/Network/NetworkController.h
91 ./include/Network/NetworkController.h
105 ./include/Network/Downloader.h
92 ./include/Network/Downloader.h
106 ./include/Version.h
93 ./include/Version.h
@@ -108,12 +95,7 FILE (GLOB_RECURSE core_SRCS
108 ./include/Visualization/VisualizationController.h
95 ./include/Visualization/VisualizationController.h
109 ./include/PluginManager/PluginManager.h
96 ./include/PluginManager/PluginManager.h
110 ./include/Variable/VariableModel2.h
97 ./include/Variable/VariableModel2.h
111 ./include/Variable/VariableCacheStrategy.h
112 ./include/Variable/VariableSynchronizationGroup2.h
98 ./include/Variable/VariableSynchronizationGroup2.h
113 ./include/Variable/ProportionalCacheStrategy.h
114 ./include/Variable/SingleThresholdCacheStrategy.h
115 ./include/Variable/VariableCacheStrategyFactory.h
116 ./include/Variable/Variable.h
117 ./include/Variable/Variable2.h
99 ./include/Variable/Variable2.h
118 ./include/Variable/VariableController2.h
100 ./include/Variable/VariableController2.h
119 ./include/Variable/private/VCTransaction.h
101 ./include/Variable/private/VCTransaction.h
@@ -129,15 +111,6 FILE (GLOB_RECURSE core_SRCS
129 ./src/Common/MimeTypesDef.cpp
111 ./src/Common/MimeTypesDef.cpp
130 ./src/Common/StringUtils.cpp
112 ./src/Common/StringUtils.cpp
131 ./src/Common/SignalWaiter.cpp
113 ./src/Common/SignalWaiter.cpp
132 ./src/Data/ScalarSeries.cpp
133 ./src/Data/ScalarTimeSerie.cpp
134 ./src/Data/DataSeriesIterator.cpp
135 ./src/Data/OptionalAxis.cpp
136 ./src/Data/ArrayDataIterator.cpp
137 ./src/Data/SpectrogramSeries.cpp
138 ./src/Data/DataSeriesUtils.cpp
139 ./src/Data/VectorSeries.cpp
140 ./src/Data/VectorTimeSerie.cpp
141 ./src/Network/NetworkController.cpp
114 ./src/Network/NetworkController.cpp
142 ./src/Network/Downloader.cpp
115 ./src/Network/Downloader.cpp
143 ./src/Visualization/VisualizationController.cpp
116 ./src/Visualization/VisualizationController.cpp
@@ -6,7 +6,6
6 #include <Common/MetaTypes.h>
6 #include <Common/MetaTypes.h>
7 #include <Common/deprecate.h>
7 #include <Common/deprecate.h>
8 #include <Common/spimpl.h>
8 #include <Common/spimpl.h>
9 #include <Common/variant_with_base.h>
10 #include <Data/DataSeriesType.h>
9 #include <Data/DataSeriesType.h>
11 #include <Data/DateTimeRange.h>
10 #include <Data/DateTimeRange.h>
12 #include <Data/ScalarTimeSerie.h>
11 #include <Data/ScalarTimeSerie.h>
@@ -13,7 +13,6
13 #include <QQueue>
13 #include <QQueue>
14 #include <QRunnable>
14 #include <QRunnable>
15 #include <QThreadPool>
15 #include <QThreadPool>
16 #include <Variable/VariableCacheStrategyFactory.h>
17 #include <Variable/private/VCTransaction.h>
16 #include <Variable/private/VCTransaction.h>
18
17
19 class VariableController2::VariableController2Private
18 class VariableController2::VariableController2Private
@@ -136,7 +135,6 class VariableController2::VariableController2Private
136 std::vector<QUuid> _variablesToRemove;
135 std::vector<QUuid> _variablesToRemove;
137 QThreadPool* _ThreadPool;
136 QThreadPool* _ThreadPool;
138 VCTransactionsQueues _transactions;
137 VCTransactionsQueues _transactions;
139 std::unique_ptr<VariableCacheStrategy> _cacheStrategy;
140
138
141 void _transactionComplete(QUuid group,
139 void _transactionComplete(QUuid group,
142 std::shared_ptr<VCTransaction> transaction)
140 std::shared_ptr<VCTransaction> transaction)
@@ -270,8 +268,6 class VariableController2::VariableController2Private
270
268
271 public:
269 public:
272 VariableController2Private(QObject* parent = Q_NULLPTR)
270 VariableController2Private(QObject* parent = Q_NULLPTR)
273 : _cacheStrategy(VariableCacheStrategyFactory::createCacheStrategy(
274 CacheStrategy::SingleThreshold))
275 {
271 {
276 Q_UNUSED(parent);
272 Q_UNUSED(parent);
277 this->_ThreadPool = new QThreadPool();
273 this->_ThreadPool = new QThreadPool();
@@ -2,7 +2,6
2 #include <Common/MimeTypesDef.h>
2 #include <Common/MimeTypesDef.h>
3 #include <Common/StringUtils.h>
3 #include <Common/StringUtils.h>
4 #include <Common/containers.h>
4 #include <Common/containers.h>
5 #include <Data/IDataSeries.h>
6 #include <DataSource/DataSourceController.h>
5 #include <DataSource/DataSourceController.h>
7 #include <QMimeData>
6 #include <QMimeData>
8 #include <QSize>
7 #include <QSize>
@@ -1,48 +1,43
1 #include <Visualization/VisualizationController.h>
2
3 #include <Variable/Variable.h>
4
5 #include <QMutex>
6 #include <QThread>
7
8 #include <QDir>
1 #include <QDir>
2 #include <QMutex>
9 #include <QStandardPaths>
3 #include <QStandardPaths>
4 #include <QThread>
5 #include <Visualization/VisualizationController.h>
10
6
11 Q_LOGGING_CATEGORY(LOG_VisualizationController, "VisualizationController")
7 Q_LOGGING_CATEGORY(LOG_VisualizationController, "VisualizationController")
12
8
13 class VisualizationController::VisualizationControllerPrivate {
9 class VisualizationController::VisualizationControllerPrivate
10 {
14 public:
11 public:
15 QMutex m_WorkingMutex;
12 QMutex m_WorkingMutex;
16 };
13 };
17
14
18 VisualizationController::VisualizationController(QObject *parent)
15 VisualizationController::VisualizationController(QObject* parent)
19 : impl{spimpl::make_unique_impl<VisualizationControllerPrivate>()}
16 : impl{spimpl::make_unique_impl<VisualizationControllerPrivate>()}
20 {
17 {
21 qCDebug(LOG_VisualizationController()) << tr("VisualizationController construction")
18 qCDebug(LOG_VisualizationController())
22 << QThread::currentThread();
19 << tr("VisualizationController construction") << QThread::currentThread();
23 }
20 }
24
21
25 VisualizationController::~VisualizationController()
22 VisualizationController::~VisualizationController()
26 {
23 {
27 qCDebug(LOG_VisualizationController()) << tr("VisualizationController destruction")
24 qCDebug(LOG_VisualizationController())
28 << QThread::currentThread();
25 << tr("VisualizationController destruction") << QThread::currentThread();
29 this->waitForFinish();
26 this->waitForFinish();
30 }
27 }
31
28
32 void VisualizationController::initialize()
29 void VisualizationController::initialize()
33 {
30 {
34 qCDebug(LOG_VisualizationController()) << tr("VisualizationController init")
31 qCDebug(LOG_VisualizationController())
35 << QThread::currentThread();
32 << tr("VisualizationController init") << QThread::currentThread();
36 impl->m_WorkingMutex.lock();
33 impl->m_WorkingMutex.lock();
37 qCDebug(LOG_VisualizationController()) << tr("VisualizationController init END");
34 qCDebug(LOG_VisualizationController())
35 << tr("VisualizationController init END");
38 }
36 }
39
37
40 void VisualizationController::finalize()
38 void VisualizationController::finalize() { impl->m_WorkingMutex.unlock(); }
41 {
42 impl->m_WorkingMutex.unlock();
43 }
44
39
45 void VisualizationController::waitForFinish()
40 void VisualizationController::waitForFinish()
46 {
41 {
47 QMutexLocker locker{&impl->m_WorkingMutex};
42 QMutexLocker locker{&impl->m_WorkingMutex};
48 }
43 }
@@ -4,11 +4,6
4
4
5 #include <Data/DataSeriesType.h>
5 #include <Data/DataSeriesType.h>
6 #include <Data/IDataProvider.h>
6 #include <Data/IDataProvider.h>
7 #include <Data/OptionalAxis.h>
8 #include <Data/ScalarSeries.h>
9 #include <Data/SpectrogramSeries.h>
10 #include <Data/Unit.h>
11 #include <Data/VectorSeries.h>
12 #include <Network/Downloader.h>
7 #include <Network/Downloader.h>
13 #include <Time/TimeController.h>
8 #include <Time/TimeController.h>
14 #include <Variable/Variable2.h>
9 #include <Variable/Variable2.h>
@@ -94,13 +89,6 PYBIND11_MODULE(pysciqlopcore, m)
94 .value("NONE", DataSeriesType::NONE)
89 .value("NONE", DataSeriesType::NONE)
95 .export_values();
90 .export_values();
96
91
97 py::class_<Unit>(m, "Unit")
98 .def_readwrite("name", &Unit::m_Name)
99 .def_readwrite("time_unit", &Unit::m_TimeUnit)
100 .def(py::self == py::self)
101 .def(py::self != py::self)
102 .def("__repr__", __repr__<Unit>);
103
104 py::class_<Response>(m, "Response")
92 py::class_<Response>(m, "Response")
105 .def("status_code", &Response::status_code);
93 .def("status_code", &Response::status_code);
106
94
@@ -109,106 +97,8 PYBIND11_MODULE(pysciqlopcore, m)
109 .def_static("getAsync", Downloader::getAsync)
97 .def_static("getAsync", Downloader::getAsync)
110 .def_static("downloadFinished", Downloader::downloadFinished);
98 .def_static("downloadFinished", Downloader::downloadFinished);
111
99
112 py::class_<ArrayDataIteratorValue>(m, "ArrayDataIteratorValue")
113 .def_property_readonly("value", &ArrayDataIteratorValue::first);
114
115 py::class_<OptionalAxis>(m, "OptionalAxis")
116 .def("__len__", &OptionalAxis::size)
117 .def_property_readonly("size", &OptionalAxis::size)
118 .def("__getitem__",
119 [](OptionalAxis& ax, int key) {
120 return (*(ax.begin() + key)).first();
121 },
122 py::is_operator())
123 .def("__iter__",
124 [](OptionalAxis& ax) {
125 return py::make_iterator(ax.begin(), ax.end());
126 },
127 py::keep_alive<0, 1>());
128
129 py::class_<DataSeriesIteratorValue>(m, "DataSeriesIteratorValue")
130 .def_property_readonly("x", &DataSeriesIteratorValue::x)
131 .def_property_readonly("y", &DataSeriesIteratorValue::y)
132 .def("value",
133 py::overload_cast<>(&DataSeriesIteratorValue::value, py::const_))
134 .def("value",
135 py::overload_cast<int>(&DataSeriesIteratorValue::value, py::const_))
136 .def("values", &DataSeriesIteratorValue::values);
137
138 py::class_<IDataSeries, std::shared_ptr<IDataSeries>>(m, "IDataSeries")
139 .def("nbPoints", &IDataSeries::nbPoints)
140 .def_property_readonly("xAxisUnit", &IDataSeries::xAxisUnit)
141 .def_property_readonly("yAxisUnit", &IDataSeries::yAxisUnit)
142 .def_property_readonly("valuesUnit", &IDataSeries::valuesUnit)
143 .def("__getitem__",
144 [](IDataSeries& serie, int key) { return *(serie.begin() + key); },
145 py::is_operator())
146 .def("__len__", &IDataSeries::nbPoints)
147 .def("__iter__",
148 [](IDataSeries& serie) {
149 return py::make_iterator(serie.begin(), serie.end());
150 },
151 py::keep_alive<0, 1>())
152 .def("__repr__", __repr__<IDataSeries>);
153
154 py::class_<ArrayData<1>, std::shared_ptr<ArrayData<1>>>(m, "ArrayData1d")
155 .def("cdata", [](ArrayData<1>& array) { return array.cdata(); });
156
157 py::class_<ScalarSeries, std::shared_ptr<ScalarSeries>, IDataSeries>(
158 m, "ScalarSeries")
159 .def("nbPoints", &ScalarSeries::nbPoints);
160
161 py::class_<VectorSeries, std::shared_ptr<VectorSeries>, IDataSeries>(
162 m, "VectorSeries")
163 .def("nbPoints", &VectorSeries::nbPoints);
164
165 py::class_<DataSeries<2>, std::shared_ptr<DataSeries<2>>, IDataSeries>(
166 m, "DataSeries2d")
167 .def_property_readonly(
168 "xAxis", py::overload_cast<>(&DataSeries<2>::xAxisData, py::const_))
169 .def_property_readonly(
170 "yAxis", py::overload_cast<>(&DataSeries<2>::yAxis, py::const_));
171
172 py::class_<SpectrogramSeries, std::shared_ptr<SpectrogramSeries>,
173 DataSeries<2>>(m, "SpectrogramSeries")
174 .def("nbPoints", &SpectrogramSeries::nbPoints)
175 .def("xRes", &SpectrogramSeries::xResolution);
176
177 py::class_<IDataProvider, std::shared_ptr<IDataProvider>>(m, "IDataProvider");
100 py::class_<IDataProvider, std::shared_ptr<IDataProvider>>(m, "IDataProvider");
178
101
179 py::class_<Variable, std::shared_ptr<Variable>>(m, "Variable")
180 .def(py::init<const QString&>())
181 .def_property("name", &Variable::name, &Variable::setName)
182 .def_property("range", &Variable::range, &Variable::setRange)
183 .def_property("cacheRange", &Variable::cacheRange,
184 &Variable::setCacheRange)
185 .def_property_readonly("nbPoints", &Variable::nbPoints)
186 .def_property_readonly("dataSeries", &Variable::dataSeries)
187 .def("__len__",
188 [](Variable& variable) {
189 auto rng = variable.dataSeries()->xAxisRange(
190 variable.range().m_TStart, variable.range().m_TEnd);
191 return std::distance(rng.first, rng.second);
192 })
193 .def("__iter__",
194 [](Variable& variable) {
195 auto rng = variable.dataSeries()->xAxisRange(
196 variable.range().m_TStart, variable.range().m_TEnd);
197 return py::make_iterator(rng.first, rng.second);
198 },
199 py::keep_alive<0, 1>())
200 .def("__getitem__",
201 [](Variable& variable, int key) {
202 // insane and slow!
203 auto rng = variable.dataSeries()->xAxisRange(
204 variable.range().m_TStart, variable.range().m_TEnd);
205 if(key < 0)
206 return *(rng.second + key);
207 else
208 return *(rng.first + key);
209 })
210 .def("__repr__", __repr__<Variable>);
211
212 py::class_<TimeSeries::ITimeSerie, std::shared_ptr<TimeSeries::ITimeSerie>>(
102 py::class_<TimeSeries::ITimeSerie, std::shared_ptr<TimeSeries::ITimeSerie>>(
213 m, "ITimeSerie")
103 m, "ITimeSerie")
214 .def_property_readonly(
104 .def_property_readonly(
@@ -4,9 +4,6
4
4
5 #include <Data/DataSeriesType.h>
5 #include <Data/DataSeriesType.h>
6 #include <Data/DateTimeRange.h>
6 #include <Data/DateTimeRange.h>
7 #include <Data/IDataSeries.h>
8 #include <Data/Unit.h>
9 #include <Variable/Variable.h>
10 #include <Variable/Variable2.h>
7 #include <Variable/Variable2.h>
11 #include <pybind11/pybind11.h>
8 #include <pybind11/pybind11.h>
12 #include <sstream>
9 #include <sstream>
@@ -14,29 +11,6
14
11
15 PYBIND11_MAKE_OPAQUE(std::vector<double>);
12 PYBIND11_MAKE_OPAQUE(std::vector<double>);
16
13
17 std::ostream& operator<<(std::ostream& os, const Unit& u)
18 {
19 os << "=========================" << std::endl
20 << "Unit:" << std::endl
21 << " Name: " << u.m_Name << std::endl
22 << " Is_TimeUnit: " << u.m_TimeUnit << std::endl;
23 return os;
24 }
25
26 std::ostream& operator<<(std::ostream& os, const IDataSeries& ds)
27 {
28 os << "=========================" << std::endl
29 << "DataSerie:" << std::endl
30 << " Number of points:" << ds.nbPoints() << std::endl
31 << " X Axis Unit:" << std::endl
32 << ds.xAxisUnit() << std::endl
33 << " Y Axis Unit:" << std::endl
34 << ds.yAxisUnit() << std::endl
35 << " Values Axis Unit:" << std::endl
36 << ds.valuesUnit() << std::endl;
37 return os;
38 }
39
40 std::ostream& operator<<(std::ostream& os, const DateTimeRange& range)
14 std::ostream& operator<<(std::ostream& os, const DateTimeRange& range)
41 {
15 {
42 os << "=========================" << std::endl
16 os << "=========================" << std::endl
@@ -48,18 +22,6 std::ostream& operator<<(std::ostream& os, const DateTimeRange& range)
48 return os;
22 return os;
49 }
23 }
50
24
51 std::ostream& operator<<(std::ostream& os, const Variable& variable)
52 {
53 os << "=========================" << std::endl
54 << "Variable:" << std::endl
55 << " Name: " << variable.name() << std::endl
56 << " range: " << std::endl
57 << variable.range() << std::endl
58 << " cache range: " << std::endl
59 << variable.cacheRange() << std::endl;
60 return os;
61 }
62
63 std::ostream& operator<<(std::ostream& os, Variable2& variable)
25 std::ostream& operator<<(std::ostream& os, Variable2& variable)
64 {
26 {
65 os << "=========================" << std::endl
27 os << "=========================" << std::endl
@@ -18,21 +18,6 declare_test(TestSyncGroup TestSyncGroup Variable/TestSyncGroup.cpp "sciqlopcore
18
18
19 declare_test(TestDateTimeRange TestDateTimeRange Data/TestDateTimeRange.cpp "sciqlopcore;Qt5::Test")
19 declare_test(TestDateTimeRange TestDateTimeRange Data/TestDateTimeRange.cpp "sciqlopcore;Qt5::Test")
20
20
21
22 declare_test(TestDataSeriesUtils TestDataSeriesUtils Data/TestDataSeriesUtils.cpp "sciqlopcore;Qt5::Test")
23 declare_test(TestOptionalAxis TestOptionalAxis Data/TestOptionalAxis.cpp "sciqlopcore;Qt5::Test")
24 declare_test(TestSpectrogramSeries TestSpectrogramSeries
25 "Data/TestSpectrogramSeries.cpp;Data/DataSeriesBuilders.h;Data/DataSeriesBuilders.cpp;Data/DataSeriesTestsUtils.h;Data/DataSeriesTestsUtils.cpp"
26 "sciqlopcore;Qt5::Test")
27 declare_test(TestOneDimArrayData TestOneDimArrayData Data/TestOneDimArrayData.cpp "sciqlopcore;Qt5::Test")
28 declare_test(TestScalarSeries TestScalarSeries
29 "Data/TestScalarSeries.cpp;Data/DataSeriesBuilders.h;Data/DataSeriesBuilders.cpp;Data/DataSeriesTestsUtils.h;Data/DataSeriesTestsUtils.cpp"
30 "sciqlopcore;Qt5::Test")
31 declare_test(TestTwoDimArrayData TestTwoDimArrayData Data/TestTwoDimArrayData.cpp "sciqlopcore;Qt5::Test")
32 declare_test(TestVectorSeries TestVectorSeries
33 "Data/TestVectorSeries.cpp;Data/DataSeriesBuilders.h;Data/DataSeriesBuilders.cpp;Data/DataSeriesTestsUtils.h;Data/DataSeriesTestsUtils.cpp"
34 "sciqlopcore;Qt5::Test")
35
36 declare_test(TestDataSourceController TestDataSourceController
21 declare_test(TestDataSourceController TestDataSourceController
37 "DataSource/TestDataSourceController.cpp;DataSource/DataSourceItemBuilder.cpp"
22 "DataSource/TestDataSourceController.cpp;DataSource/DataSourceItemBuilder.cpp"
38 "sciqlopcore;Qt5::Test")
23 "sciqlopcore;Qt5::Test")
@@ -2,9 +2,7
2 #define TESTPROVIDER_H
2 #define TESTPROVIDER_H
3
3
4 #include <Data/DataProviderParameters.h>
4 #include <Data/DataProviderParameters.h>
5 #include <Data/DataSeries.h>
6 #include <Data/IDataProvider.h>
5 #include <Data/IDataProvider.h>
7 #include <Data/ScalarSeries.h>
8 #include <Data/ScalarTimeSerie.h>
6 #include <Data/ScalarTimeSerie.h>
9 #include <QUuid>
7 #include <QUuid>
10 #include <QtGlobal>
8 #include <QtGlobal>
@@ -2,7 +2,6
2 #include <Data/DataProviderParameters.h>
2 #include <Data/DataProviderParameters.h>
3 #include <Data/DateTimeRange.h>
3 #include <Data/DateTimeRange.h>
4 #include <Data/IDataProvider.h>
4 #include <Data/IDataProvider.h>
5 #include <Data/ScalarSeries.h>
6 #include <QObject>
5 #include <QObject>
7 #include <QtTest>
6 #include <QtTest>
8 #include <TestUtils/TestProviders.h>
7 #include <TestUtils/TestProviders.h>
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (510 lines changed) Show them Hide them
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now