Lukas Cerny пре 2 година
родитељ
комит
fca7fccea2
100 измењених фајлова са 6710 додато и 3972 уклоњено
  1. 1 1
      README.md
  2. 10 6
      config/drutesSenslog1.yaml
  3. 11 12
      config/fieldclimateSenslog10.yaml
  4. 47 14
      connector-app/src/main/java/cz/senslog/connector/app/config/Connector.java
  5. 3 1
      connector-app/src/main/java/cz/senslog/connector/app/config/ConnectorBuilder.java
  6. 10 3
      connector-app/src/main/java/cz/senslog/connector/app/config/FileConfigurationServiceImpl.java
  7. 1 1
      connector-app/src/main/java/cz/senslog/connector/app/config/Parameters.java
  8. 267 267
      connector-app/src/test/java/cz/senslog/connector/app/config/ConnectorBuilderTest.java
  9. 73 73
      connector-app/src/test/java/cz/senslog/connector/app/config/FileConfigurationServiceImplTest.java
  10. 26 26
      connector-app/src/test/resources/test_valid_config.yaml
  11. 38 38
      connector-fetch-api/pom.xml
  12. 1 1
      connector-fetch-api/src/main/java/cz/senslog/connector/fetch/api/ExecutableFetcher.java
  13. 2 2
      connector-fetch-api/src/main/java/cz/senslog/connector/fetch/api/FetchProxySession.java
  14. 0 5
      connector-fetch-azure/pom.xml
  15. 1 1
      connector-fetch-azure/src/main/java/cz/senslog/connector/fetch/azure/AzureConfig.java
  16. 10 10
      connector-fetch-azure/src/main/java/cz/senslog/connector/fetch/azure/AzureFetcher.java
  17. 3 3
      connector-fetch-azure/src/main/java/cz/senslog/connector/fetch/azure/AzureProxySession.java
  18. 1 1
      connector-fetch-azure/src/main/java/cz/senslog/connector/fetch/azure/ConnectorFetchAzureProvider.java
  19. 8 8
      connector-fetch-azure/src/main/java/cz/senslog/connector/fetch/azure/auth/AuthenticationService.java
  20. 1 1
      connector-fetch-azure/src/main/java/cz/senslog/connector/fetch/azure/auth/AzureAuthorizationInfo.java
  21. 1 1
      connector-fetch-azure/src/test/java/cz/senslog/connector/fetch/azure/AzureConfigTest.java
  22. 6 6
      connector-fetch-azure/src/test/java/cz/senslog/connector/fetch/azure/AzureFetcherTest.java
  23. 5 5
      connector-fetch-azure/src/test/java/cz/senslog/connector/fetch/azure/auth/AuthenticationServiceTest.java
  24. 1 1
      connector-fetch-azure/src/test/java/cz/senslog/connector/fetch/azure/auth/AzureAuthorizationInfoTest.java
  25. 0 5
      connector-fetch-drutes/pom.xml
  26. 12 0
      connector-fetch-drutes/src/main/java/cz/senslog/connector/fetch/drutes/DrutesConfig.java
  27. 93 96
      connector-fetch-drutes/src/main/java/cz/senslog/connector/fetch/drutes/DrutesFetcher.java
  28. 14 17
      connector-fetch-drutes/src/test/java/cz/senslog/connector/fetch/drutes/DrutesFetcherTest.java
  29. 1338 0
      connector-fetch-drutes/src/test/resources/data/340260001/current/340260001.predict
  30. 4 0
      connector-fetch-drutes/src/test/resources/data/340260001/current/predict.times
  31. 0 0
      connector-fetch-drutes/src/test/resources/data/340260001/current/sensors.success
  32. 1338 0
      connector-fetch-drutes/src/test/resources/data/340260002/current/340260002.predict
  33. 4 0
      connector-fetch-drutes/src/test/resources/data/340260002/current/predict.times
  34. 1 0
      connector-fetch-drutes/src/test/resources/data/340260002/current/sensors.success
  35. 1338 0
      connector-fetch-drutes/src/test/resources/data/710010001/current/710010001.predict
  36. 4 0
      connector-fetch-drutes/src/test/resources/data/710010001/current/predict.times
  37. 1 0
      connector-fetch-drutes/src/test/resources/data/710010001/current/sensors.success
  38. 1338 0
      connector-fetch-drutes/src/test/resources/data/710010002/current/710010002.predict
  39. 4 0
      connector-fetch-drutes/src/test/resources/data/710010002/current/predict.times
  40. 1 0
      connector-fetch-drutes/src/test/resources/data/710010002/current/sensors.success
  41. 0 674
      connector-fetch-drutes/src/test/resources/predictions/4151559_20220301/340260001.predict
  42. 0 674
      connector-fetch-drutes/src/test/resources/predictions/4151559_20220301/340260002.predict
  43. 0 674
      connector-fetch-drutes/src/test/resources/predictions/4151559_20220301/710010001.predict
  44. 0 674
      connector-fetch-drutes/src/test/resources/predictions/4151559_20220301/710010002.predict
  45. 0 4
      connector-fetch-drutes/src/test/resources/predictions/4151559_20220301/predict.times
  46. 0 5
      connector-fetch-fieldclimate/pom.xml
  47. 2 2
      connector-fetch-fieldclimate/src/main/java/cz/senslog/connector/fetch/fieldclimate/ConnectorFetchFieldClimateProvider.java
  48. 12 12
      connector-fetch-fieldclimate/src/main/java/cz/senslog/connector/fetch/fieldclimate/FieldClimateFetcher.java
  49. 6 6
      connector-fetch-fieldclimate/src/main/java/cz/senslog/connector/fetch/fieldclimate/FieldClimateProxySession.java
  50. 1 3
      connector-fetch-fieldclimate/src/main/java/cz/senslog/connector/fetch/fieldclimate/StationTimeRange.java
  51. 7 7
      connector-fetch-fieldclimate/src/test/java/cz/senslog/connector/fetch/fieldclimate/FieldClimateFetcherTest.java
  52. 6 6
      connector-fetch-fieldclimate/src/test/java/cz/senslog/connector/fetch/fieldclimate/FieldClimateProxySessionTest.java
  53. 32 37
      connector-fetch-senslog-v1/pom.xml
  54. 1 1
      connector-fetch-senslog-v1/src/main/java/cz/senslog/connector/fetch/senslog/v1/SenslogFetchProvider.java
  55. 6 6
      connector-fetch-senslog-v1/src/main/java/cz/senslog/connector/fetch/senslog/v1/SenslogFetcher.java
  56. 6 6
      connector-fetch-senslog-v1/src/main/java/cz/senslog/connector/fetch/senslog/v1/SenslogProxySession.java
  57. 44 44
      connector-fetch-senslog-v1/src/test/java/cz/senslog/connector/fetch/senslog/v1/SenslogFetcherTest.java
  58. 22 22
      connector-model/pom.xml
  59. 1 1
      connector-model/src/main/java/cz/senslog/connector/model/afarcloud/MultiCollarMeasurements.java
  60. 1 1
      connector-model/src/main/java/cz/senslog/connector/model/afarcloud/MultiSensorMeasurements.java
  61. 1 1
      connector-model/src/main/java/cz/senslog/connector/model/azure/SensorData.java
  62. 1 1
      connector-model/src/main/java/cz/senslog/connector/model/azure/SensorInfo.java
  63. 11 2
      connector-model/src/main/java/cz/senslog/connector/model/config/ConnectorDescriptor.java
  64. 1 1
      connector-model/src/main/java/cz/senslog/connector/model/config/HostConfig.java
  65. 3 3
      connector-model/src/main/java/cz/senslog/connector/model/config/PropertyConfig.java
  66. 1 1
      connector-model/src/main/java/cz/senslog/connector/model/converter/AFarCloudUnitSensorConverter.java
  67. 1 1
      connector-model/src/main/java/cz/senslog/connector/model/converter/AzureUnitConverter.java
  68. 10 14
      connector-model/src/main/java/cz/senslog/connector/model/converter/DrutesModelSenslogV1ModelConverter.java
  69. 1 1
      connector-model/src/main/java/cz/senslog/connector/model/converter/SenslogV1ModelAFarCloudModelConverter.java
  70. 3 23
      connector-model/src/main/java/cz/senslog/connector/model/drutes/DrutesModel.java
  71. 27 1
      connector-model/src/main/java/cz/senslog/connector/model/drutes/PredictionData.java
  72. 1 1
      connector-model/src/main/java/cz/senslog/connector/model/fieldclimate/SensorDataInfo.java
  73. 1 1
      connector-model/src/main/java/cz/senslog/connector/model/fieldclimate/StationData.java
  74. 1 1
      connector-model/src/main/java/cz/senslog/connector/model/fieldclimate/StationInfo.java
  75. 1 1
      connector-model/src/main/java/cz/senslog/connector/model/v1/Observation.java
  76. 1 1
      connector-model/src/main/java/cz/senslog/connector/model/v1/Position.java
  77. 1 1
      connector-model/src/main/java/cz/senslog/connector/model/v2/Observation.java
  78. 21 21
      connector-model/src/test/java/cz/senslog/connector/model/config/ConnectorDescriptorTest.java
  79. 18 18
      connector-model/src/test/java/cz/senslog/connector/model/config/HostConfigTest.java
  80. 82 82
      connector-model/src/test/java/cz/senslog/connector/model/config/PropertyConfigTest.java
  81. 19 15
      connector-model/src/test/java/cz/senslog/connector/model/converter/DrutesModelSenslogV1ModelConverterTest.java
  82. 1 1
      connector-model/src/test/java/cz/senslog/connector/model/converter/SenslogV1ModelAFarCloudModelConverterTest.java
  83. 37 42
      connector-push-afarcloud/pom.xml
  84. 1 1
      connector-push-afarcloud/src/main/java/cz/senslog/connector/push/afarcloud/AFarCloudPushProvider.java
  85. 4 7
      connector-push-afarcloud/src/main/java/cz/senslog/connector/push/afarcloud/AFarCloudPusher.java
  86. 38 38
      connector-push-api/pom.xml
  87. 3 7
      connector-push-rest-senslog-v1/pom.xml
  88. 45 5
      connector-push-rest-senslog-v1/src/main/java/cz/senslog/connector/push/rest/senslog/v1/SenslogV1Config.java
  89. 1 1
      connector-push-rest-senslog-v1/src/main/java/cz/senslog/connector/push/rest/senslog/v1/SenslogV1ConnectorPushProvider.java
  90. 107 26
      connector-push-rest-senslog-v1/src/main/java/cz/senslog/connector/push/rest/senslog/v1/SenslogV1Pusher.java
  91. 5 25
      connector-push-rest-senslog-v1/src/test/java/cz/senslog/connector/push/rest/senslog/v1/SenslogV1ConfigTest.java
  92. 6 6
      connector-push-rest-senslog-v1/src/test/java/cz/senslog/connector/push/rest/senslog/v1/SenslogV1PusherTest.java
  93. 0 44
      connector-push-rest-senslog-v2/pom.xml
  94. 0 30
      connector-push-rest-senslog-v2/src/main/java/cz/senslog/connector/push/rest/senslog/v2/SenslogV2Config.java
  95. 0 35
      connector-push-rest-senslog-v2/src/main/java/cz/senslog/connector/push/rest/senslog/v2/SenslogV2ConnectorPushProvider.java
  96. 0 48
      connector-push-rest-senslog-v2/src/main/java/cz/senslog/connector/push/rest/senslog/v2/SenslogV2Pusher.java
  97. 0 1
      connector-push-rest-senslog-v2/src/main/resources/META-INF/services/cz.senslog.connector.push.api.ConnectorPushProvider
  98. 76 0
      connector-tools/pom.xml
  99. 8 0
      connector-tools/src/main/java/cz/senslog/connector/tools/exception/ModuleInterruptedException.java
  100. 8 0
      connector-tools/src/main/java/cz/senslog/connector/tools/exception/ParseException.java

+ 1 - 1
README.md

@@ -37,7 +37,7 @@ services:
       - "5005:5005"
     restart: always
     environment:
-        APP_PARAMS: -cf config/fieldclimateSenslog1.yaml
+        APP_PARAMS: -cf config/fieldclimateSenslog10.yaml
         DEBUG: "true"
 
 ```

+ 10 - 6
config/drutesSenslog1.yaml

@@ -4,18 +4,22 @@ settings:
         name: "Drutes predictions"
         provider: "cz.senslog.connector.fetch.drutes.ConnectorFetchDrutesProvider"
 
-        baseDir: "C:\Users\Lukas Cerny\Desktop\data\drutes-predict"
+        baseDir: "/data/drutes-predict/"
+        observedDir: "current"
+        unitId: 4151559
 
     - SenslogV1:
         name: "Senslog V1"
         provider: "cz.senslog.connector.push.rest.senslog.v1.SenslogV1ConnectorPushProvider"
-        host:
-            domain: "https://sensor.lesprojekt.cz/DBServiceST"
-            path: "FeederServlet"
+        baseUrl: "https://sensor.lesprojekt.cz/senslog15"
+        auth:
+            username: "watchdog"
+            password: "HAFhaf"
 
 connectors:
     - DrutesSenslogV1:
         fetcher: "Drutes"
         pusher: "SenslogV1"
-        period: 5
-        initDelay: 1
+        period: 86_400 # 24h
+        startAt: "02:30:00" # hh:mm:ss
+#        initDelay: 5

+ 11 - 12
config/fieldclimateSenslog1.yaml → config/fieldclimateSenslog10.yaml

@@ -2,20 +2,19 @@ api1: &fieldClimateApiDomain
   domain: "https://api.fieldclimate.com/v1"
 
 api2: &senslogApiDomain
-  domain: "http://51.15.45.95:8080/senslog1"
+  domain: "https://sensor.lesprojekt.cz/senslog1O/"
 
 settings:
   - SenslogV1:
       name: "Senslog V1"
       provider: "cz.senslog.connector.push.rest.senslog.v1.SenslogV1ConnectorPushProvider"
-      host:
-        <<: *senslogApiDomain
-        path: "FeederServlet"
+      baseUrl: "https://sensor.lesprojekt.cz/senslog1O/"
+
 
   - Fieldclimate:
       name: "FieldClimate: Pessl Instruments"
       provider: "cz.senslog.connector.fetch.fieldclimate.ConnectorFetchFieldClimateProvider"
-      startDate: "1970-01-01T00:00:00.000" # yyyy-MM-DD hh:mm:ss.sss
+      startDate: "2021-01-01T00:00:00.000" # yyyy-MM-DD hh:mm:ss.sss
       timeZone: "Europe/Riga"
       period: 12 # in hours (integer)
 
@@ -54,17 +53,17 @@ settings:
             - 20228: [4050, 4051, 4052, 4053, 4054, 4055, 4056, 4057, 4058, 4059, 4060, 4061]
 
 
-#      sessionProxy:
-#        user: "vilcini"
-#        group: "vilcini"
-#        lastObservationHost:
-#          <<: *senslogApiDomain
-#          path: "SensorService"
+      sessionProxy:
+        user: "vilcini"
+        group: "vilcini"
+        lastObservationHost:
+          <<: *senslogApiDomain
+          path: "SensorService"
 
 
 connectors:
     - FieldclimateToV1:
         fetcher: "Fieldclimate"
         pusher: "SenslogV1"
-        period: 20 # 10 minutes
+        period: 10 # 10 minutes
         initDelay: 5

+ 47 - 14
connector-app/src/main/java/cz/senslog/connector/app/config/Connector.java

@@ -2,7 +2,7 @@ package cz.senslog.connector.app.config;
 // Copyright (c) 2020 UWB & LESP.
 // The UWB & LESP license this file to you under the MIT license.
 
-import cz.senslog.common.exception.ModuleInterruptedException;
+import cz.senslog.connector.tools.exception.ModuleInterruptedException;
 import cz.senslog.connector.fetch.api.ExecutableFetcher;
 import cz.senslog.connector.model.api.AbstractModel;
 import cz.senslog.connector.model.api.Converter;
@@ -10,15 +10,19 @@ import cz.senslog.connector.push.api.ConnectorPusher;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.temporal.ChronoUnit;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 
-import static cz.senslog.common.util.Pipeline.of;
+import static cz.senslog.connector.tools.util.Pipeline.of;
 import static java.util.Optional.ofNullable;
-import static java.util.concurrent.TimeUnit.SECONDS;
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
 
 /**
  * The class {@code Connector} represents a created connector
@@ -35,11 +39,11 @@ public final class Connector {
 
     private static final Logger logger = LogManager.getLogger(Connector.class);
 
-    /** Default initialization delay value when the scheduler starts to schedule tasks (in seconds). */
-    private static final int DEFAULT_TASK_DELAY = 2;
+    /** Default initialization delay value when the scheduler starts to schedule tasks (in millis). */
+    private static final int DEFAULT_DELAY_MILLIS = 2_000; // 2s
 
-    /** Default value for scheduling tasks when the value missing in the configuration file (in seconds). */
-    private static final int DEFAULT_SCHEDULE_PERIOD = 3600;  // every hour
+    /** Default value for scheduling tasks when the value missing in the configuration file (in millis). */
+    private static final int DEFAULT_SCHEDULE_PERIOD_MILLIS = 3_600_000;  // every hour
 
     /** Name of the connector */
     private final String name;
@@ -59,6 +63,8 @@ public final class Connector {
     /** Initialization delay for scheduler. */
     private final Optional<Integer> initDelay;
 
+    private final Optional<LocalTime> startAt;
+
     /**
      * Constructor allows to set all attributes.
      * @param name - name of the connector.
@@ -73,14 +79,16 @@ public final class Connector {
             ConnectorPusher<? super AbstractModel> pusher,
             Converter<? super AbstractModel, ? super AbstractModel> converter,
             Integer period,
-            Integer initDelay
+            Integer initDelay,
+            LocalTime startAt
     ) {
         this.name = name;
         this.fetcherExecutor = fetcherExecutor;
         this.pusher = pusher;
         this.converter = converter;
-        this.period = ofNullable(period);
-        this.initDelay = ofNullable(initDelay);
+        this.period = ofNullable(period != null ? period * 1_000 : null); // to millis
+        this.initDelay = ofNullable(initDelay != null ? initDelay * 1_000 : null); // to millis
+        this.startAt = ofNullable(startAt);
     }
 
     /**
@@ -108,6 +116,14 @@ public final class Connector {
     }
 
     /**
+     * Returns time to schedule the connector at.
+     * @return time to execute the connector
+     */
+    public Optional<LocalTime> getStartAt() {
+        return startAt;
+    }
+
+    /**
      * Returns scheduling runnable task of the connector flow.
      * @return runnable task
      */
@@ -123,12 +139,29 @@ public final class Connector {
      */
     public void schedule(ScheduledExecutorService scheduledService, CountDownLatch latch) {
 
-        int schedulePeriod = getPeriod().orElse(DEFAULT_SCHEDULE_PERIOD);
-        int delay = getInitDelay().orElse(DEFAULT_TASK_DELAY);
+        long schedulePeriod = getPeriod().orElse(DEFAULT_SCHEDULE_PERIOD_MILLIS);
+        LocalTime startAtTime = getStartAt().orElse(null);
         Runnable task = getTask();
 
-        logger.info("Scheduling the {} starts in {} with the period {} seconds.", getName(), delay, schedulePeriod);
-        ScheduledFuture<?> future = scheduledService.scheduleAtFixedRate(task, delay, schedulePeriod, SECONDS);
+        StringBuilder logScheduling = new StringBuilder("Scheduling the '"+getName()+"' starts");
+        long delay = DEFAULT_DELAY_MILLIS;
+        if (startAtTime != null) {
+            LocalDateTime now = LocalDateTime.now();
+            LocalDate startAtDate = now.toLocalTime().isBefore(startAtTime) ? now.toLocalDate() : now.toLocalDate().plusDays(1);
+            LocalDateTime startAt = LocalDateTime.of(startAtDate, startAtTime);
+            logScheduling.append(" at ").append(startAt);
+            delay = now.until(startAt, ChronoUnit.MILLIS);
+            if (delay <= 0) {
+                delay = DEFAULT_DELAY_MILLIS;
+            }
+        } else if (getInitDelay().isPresent()) {
+            delay = getInitDelay().get();
+            logScheduling.append(" in ").append(delay);
+        }
+        logScheduling.append(" with the period ").append(schedulePeriod).append(" milliseconds.");
+
+        logger.info(logScheduling);
+        ScheduledFuture<?> future = scheduledService.scheduleAtFixedRate(task, delay, schedulePeriod, MILLISECONDS);
 
         new Thread(() -> {
             try {

+ 3 - 1
connector-app/src/main/java/cz/senslog/connector/app/config/ConnectorBuilder.java

@@ -163,7 +163,9 @@ public final class ConnectorBuilder {
                 pusher.init();
 
                 logger.debug("Creating a new {} connector.", connDesc.getName());
-                Connector connector = new Connector(connDesc.getName(), fetcherExecutor, pusher, converter, connDesc.getPeriod(), connDesc.getDelay());
+                Connector connector = new Connector(connDesc.getName(),
+                        fetcherExecutor, pusher, converter,
+                        connDesc.getPeriod(), connDesc.getDelay(), connDesc.getStartAt());
 
                 logger.debug("Saving the {} connector.", connDesc.getName());
                 connectors.add(connector);

+ 10 - 3
connector-app/src/main/java/cz/senslog/connector/app/config/FileConfigurationServiceImpl.java

@@ -6,7 +6,7 @@ package cz.senslog.connector.app.config;
 import cz.senslog.connector.app.config.api.FileConfigurationService;
 import cz.senslog.connector.model.config.ConnectorDescriptor;
 import cz.senslog.connector.model.config.DefaultConfig;
-import cz.senslog.common.exception.UnsupportedFileException;
+import cz.senslog.connector.tools.exception.UnsupportedFileException;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.yaml.snakeyaml.Yaml;
@@ -17,8 +17,12 @@ import java.io.InputStream;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 
+import static java.time.format.DateTimeFormatter.ofPattern;
+
 /**
  * The class {@code FileConfigurationServiceImpl} represents an implementation of {@link FileConfigurationService}.
  *
@@ -247,10 +251,13 @@ class FileConfigurationServiceImpl extends ConfigurationServiceImpl implements F
                 Integer period = (Integer) connectorValuesMap.get("period");
 
                 logger.debug("Getting property 'initDelay' from the connector descriptor '{}'.", descriptorId);
-                Integer delay = (Integer) connectorValuesMap.get("initDelay");
+                Integer delay = connectorValuesMap.containsKey("initDelay") ? (Integer) connectorValuesMap.get("initDelay") : null;
+
+                logger.debug("Getting property 'startAt' from the connector descriptor '{}'.", descriptorId);
+                LocalTime startAt = connectorValuesMap.containsKey("startAt") ? LocalTime.parse((String)connectorValuesMap.get("startAt"), ofPattern("HH:mm:ss")) : null;
 
                 logger.debug("Creating a new ConnectorDescriptor class for the connector descriptor '{}'.", descriptorId);
-                ConnectorDescriptor connDesc = new ConnectorDescriptor(descriptorId, fetchProviderId, pushProviderId, period, delay);
+                ConnectorDescriptor connDesc = new ConnectorDescriptor(descriptorId, fetchProviderId, pushProviderId, period, delay, startAt);
 
                 logger.debug("Saving the connector descriptor '{}'.", descriptorId);
                 addConnectorDescriptor(connDesc);

+ 1 - 1
connector-app/src/main/java/cz/senslog/connector/app/config/Parameters.java

@@ -12,7 +12,7 @@ import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.util.Arrays;
 
-import static cz.senslog.common.util.StringUtils.isNotBlank;
+import static cz.senslog.connector.tools.util.StringUtils.isNotBlank;
 import static java.lang.String.format;
 import static java.nio.file.Files.notExists;
 import static java.nio.file.Paths.get;

+ 267 - 267
connector-app/src/test/java/cz/senslog/connector/app/config/ConnectorBuilderTest.java

@@ -1,268 +1,268 @@
-package cz.senslog.connector.app.config;
-
-import cz.senslog.connector.app.config.api.ConfigurationService;
-import cz.senslog.connector.fetch.api.ConnectorFetchProvider;
-import cz.senslog.connector.fetch.api.ConnectorFetcher;
-import cz.senslog.connector.fetch.api.ExecutableFetcher;
-import cz.senslog.connector.model.api.AbstractModel;
-import cz.senslog.connector.model.api.Converter;
-import cz.senslog.connector.model.api.ConverterProvider;
-import cz.senslog.connector.model.api.ProxySessionModel;
-import cz.senslog.connector.model.config.ConnectorDescriptor;
-import cz.senslog.connector.model.config.DefaultConfig;
-import cz.senslog.connector.push.api.ConnectorPushProvider;
-import cz.senslog.connector.push.api.ConnectorPusher;
-import org.junit.jupiter.api.Test;
-
-import java.util.HashSet;
-import java.util.Optional;
-import java.util.Set;
-
-import static java.time.OffsetDateTime.MAX;
-import static java.time.OffsetDateTime.MIN;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-class ConnectorBuilderTest {
-
-    private static class InputModel extends AbstractModel{ InputModel() { super(MIN, MAX); }}
-    private static class OutputModel extends AbstractModel{ OutputModel() { super(MIN, MAX);}}
-
-    private static class BasicSessionModel extends ProxySessionModel {
-        public BasicSessionModel() { super(false); }
-    }
-
-    private static class TestingFetcher implements ConnectorFetcher<BasicSessionModel, OutputModel> {
-        @Override public void init() { }
-        @Override public OutputModel fetch(Optional<BasicSessionModel> session) { return new OutputModel(); }
-    }
-
-    private static class TestingPusher implements ConnectorPusher<InputModel> {
-        @Override public void init() {}
-        @Override public void push(InputModel model) {}
-    }
-
-    private final ConnectorFetchProvider defaultFetchProvider = config -> ExecutableFetcher.create(new TestingFetcher());
-
-    private final ConnectorPushProvider defaultPushProvider = config -> new TestingPusher();
-
-    @Test
-    void createConnectors_CreateTestConnector_CreatedOneConnector() {
-
-        ConverterProvider converterProvider = mock(ConverterProvider.class);
-        when(converterProvider.getConverter(OutputModel.class, InputModel.class)).thenReturn(
-                (Converter<OutputModel, InputModel>) model -> new InputModel());
-
-        ServiceProvider serviceProvider = new ServiceProvider(aClass -> defaultFetchProvider, aClass -> defaultPushProvider);
-
-        Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
-        connectorDescriptors.add(new ConnectorDescriptor("Test", "FetcherId", "PusherId", 1, 2));
-
-        ConfigurationService configService = mock(ConfigurationService.class);
-        when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
-        when(configService.getConfigForProviderId("FetcherId")).thenReturn(mock(DefaultConfig.class));
-        when(configService.getConfigForProviderId("PusherId")).thenReturn(mock(DefaultConfig.class));
-
-        Set<Connector> connectors = ConnectorBuilder.init(serviceProvider, converterProvider, configService).createConnectors();
-
-        assertEquals(1, connectors.size());
-
-        Connector connector = connectors.iterator().next();
-        assertEquals("Test", connector.getName());
-        assertEquals(1, connector.getPeriod().orElse(0));
-        assertEquals(2, connector.getInitDelay().orElse(0));
-    }
-
-    @Test
-    void createConnectors_CreateTwoConnectors_CreatedTwoConnectors() {
-
-        ConverterProvider converterProvider = mock(ConverterProvider.class);
-        when(converterProvider.getConverter(OutputModel.class, InputModel.class)).thenReturn(
-                (Converter<OutputModel, InputModel>) model -> new InputModel());
-
-        ServiceProvider serviceProvider = new ServiceProvider(aClass -> defaultFetchProvider, aClass -> defaultPushProvider);
-
-        Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
-        connectorDescriptors.add(new ConnectorDescriptor("Test1", "FetcherId", "PusherId", 1, 3));
-        connectorDescriptors.add(new ConnectorDescriptor("Test2", "FetcherId", "PusherId", 2, 3));
-
-        ConfigurationService configService = mock(ConfigurationService.class);
-        when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
-        when(configService.getConfigForProviderId("FetcherId")).thenReturn(mock(DefaultConfig.class));
-        when(configService.getConfigForProviderId("PusherId")).thenReturn(mock(DefaultConfig.class));
-
-        Set<Connector> connectors = ConnectorBuilder.init(serviceProvider, converterProvider, configService).createConnectors();
-
-        assertEquals(2, connectors.size());
-    }
-
-    @Test
-    void createConnectors_FetchProviderNull_ZeroConnectors() {
-
-        ConverterProvider converterProvider = mock(ConverterProvider.class);
-        when(converterProvider.getConverter(OutputModel.class, InputModel.class)).thenReturn(
-                (Converter<OutputModel, InputModel>) model -> new InputModel());
-
-        // fetch provider class does not exist -> null
-        ServiceProvider serviceProvider = new ServiceProvider(aClass -> null, aClass -> defaultPushProvider);
-
-        Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
-        connectorDescriptors.add(new ConnectorDescriptor("Test", "FetcherId", "PusherId", 1, 2));
-
-        ConfigurationService configService = mock(ConfigurationService.class);
-        when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
-        when(configService.getConfigForProviderId("PusherId")).thenReturn(mock(DefaultConfig.class));
-
-        Set<Connector> connectors = ConnectorBuilder.init(serviceProvider, converterProvider, configService).createConnectors();
-
-        assertEquals(0, connectors.size());
-    }
-
-    @Test
-    void createConnectors_FetchConfigNull_ZeroConnectors() {
-
-        ConverterProvider converterProvider = mock(ConverterProvider.class);
-        when(converterProvider.getConverter(OutputModel.class, InputModel.class)).thenReturn(
-                (Converter<OutputModel, InputModel>) model -> new InputModel());
-
-        ServiceProvider serviceProvider = new ServiceProvider(aClass -> defaultFetchProvider, aClass -> defaultPushProvider);
-
-        Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
-        connectorDescriptors.add(new ConnectorDescriptor("Test", "FetcherId", "PusherId", 1, 2));
-
-        ConfigurationService configService = mock(ConfigurationService.class);
-        when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
-        // fetch provider configuration does not exist -> null
-        when(configService.getConfigForProviderId("FetcherId")).thenReturn(null);
-        when(configService.getConfigForProviderId("PusherId")).thenReturn(mock(DefaultConfig.class));
-
-        Set<Connector> connectors = ConnectorBuilder.init(serviceProvider, converterProvider, configService).createConnectors();
-
-        assertEquals(0, connectors.size());
-    }
-
-    @Test
-    void createConnectors_PushProviderNull_ZeroConnectors() {
-
-        ConverterProvider converterProvider = mock(ConverterProvider.class);
-        when(converterProvider.getConverter(OutputModel.class, InputModel.class)).thenReturn(
-                (Converter<OutputModel, InputModel>) model -> new InputModel());
-
-        // push provider is set to null
-        ServiceProvider serviceProvider = new ServiceProvider(aClass -> defaultFetchProvider, aClass -> null);
-
-        Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
-        connectorDescriptors.add(new ConnectorDescriptor("Test", "FetcherId", "PusherId", 1, 2));
-
-        ConfigurationService configService = mock(ConfigurationService.class);
-        when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
-        when(configService.getConfigForProviderId("FetcherId")).thenReturn(mock(DefaultConfig.class));
-
-        Set<Connector> connectors = ConnectorBuilder.init(serviceProvider, converterProvider, configService).createConnectors();
-
-        assertEquals(0, connectors.size());
-    }
-
-    @Test
-    void createConnectors_PushConfigNull_ZeroConnectors() {
-
-        ConverterProvider converterProvider = mock(ConverterProvider.class);
-        when(converterProvider.getConverter(OutputModel.class, InputModel.class)).thenReturn(
-                (Converter<OutputModel, InputModel>) model -> new InputModel());
-
-        ServiceProvider serviceProvider = new ServiceProvider(aClass -> defaultFetchProvider, aClass -> defaultPushProvider);
-
-        Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
-        connectorDescriptors.add(new ConnectorDescriptor("Test", "FetcherId", "PusherId", 1, 2));
-
-        ConfigurationService configService = mock(ConfigurationService.class);
-        when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
-        when(configService.getConfigForProviderId("FetcherId")).thenReturn(mock(DefaultConfig.class));
-
-        // fetch provider configuration does not exist -> null
-        when(configService.getConfigForProviderId("PusherId")).thenReturn(null);
-
-        Set<Connector> connectors = ConnectorBuilder.init(serviceProvider, converterProvider, configService).createConnectors();
-
-        assertEquals(0, connectors.size());
-    }
-
-    @Test
-    void createConnectors_ConverterNull_CreatedZeroConnector() {
-
-        ConverterProvider converterProvider = mock(ConverterProvider.class);
-        // converter does not exist -> null
-        when(converterProvider.getConverter(OutputModel.class, InputModel.class)).thenReturn(null);
-
-        ServiceProvider serviceProvider = new ServiceProvider(aClass -> defaultFetchProvider, aClass -> defaultPushProvider);
-
-        Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
-        connectorDescriptors.add(new ConnectorDescriptor("Test", "FetcherId", "PusherId", 1, 2));
-
-        ConfigurationService configService = mock(ConfigurationService.class);
-        when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
-        when(configService.getConfigForProviderId("FetcherId")).thenReturn(mock(DefaultConfig.class));
-        when(configService.getConfigForProviderId("PusherId")).thenReturn(mock(DefaultConfig.class));
-
-        Set<Connector> connectors = ConnectorBuilder.init(serviceProvider, converterProvider, configService).createConnectors();
-
-        assertEquals(0, connectors.size());
-    }
-
-    @Test
-    void createConnectors_IncompatibleFetchModelClass_CreatedZeroConnector() {
-
-        // ConnectorFetcher does not contain model class as a generic parameter
-         ConnectorFetchProvider fetchProvider = config -> ExecutableFetcher.create(new ConnectorFetcher() {
-            @Override public void init() {}
-            @Override public AbstractModel fetch(Optional session) {return new OutputModel();}
-        });
-
-        ConverterProvider converterProvider = mock(ConverterProvider.class);
-        when(converterProvider.getConverter(OutputModel.class, InputModel.class)).thenReturn(
-                (Converter<OutputModel, InputModel>) model -> new InputModel());
-
-        ServiceProvider serviceProvider = new ServiceProvider(aClass -> fetchProvider, aClass -> defaultPushProvider);
-
-        Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
-        connectorDescriptors.add(new ConnectorDescriptor("Test", "FetcherId", "PusherId", 1, 2));
-
-        ConfigurationService configService = mock(ConfigurationService.class);
-        when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
-        when(configService.getConfigForProviderId("FetcherId")).thenReturn(mock(DefaultConfig.class));
-        when(configService.getConfigForProviderId("PusherId")).thenReturn(mock(DefaultConfig.class));
-
-        Set<Connector> connectors = ConnectorBuilder.init(serviceProvider, converterProvider, configService).createConnectors();
-
-        assertEquals(0, connectors.size());
-    }
-
-    @Test
-    void createConnectors_IncompatiblePushModelClass_CreatedZeroConnector() {
-
-        // ConnectorPusher does not contain model class as a generic parameter
-        ConnectorPushProvider pushProvider = config -> new ConnectorPusher() {
-            @Override public void init() {}
-            @Override public void push(AbstractModel model) {}
-        };
-
-        ConverterProvider converterProvider = mock(ConverterProvider.class);
-        when(converterProvider.getConverter(OutputModel.class, InputModel.class)).thenReturn(
-                (Converter<OutputModel, InputModel>) model -> new InputModel());
-
-        ServiceProvider serviceProvider = new ServiceProvider(aClass -> defaultFetchProvider, aClass -> pushProvider);
-
-        Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
-        connectorDescriptors.add(new ConnectorDescriptor("Test", "FetcherId", "PusherId", 1, 2));
-
-        ConfigurationService configService = mock(ConfigurationService.class);
-        when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
-        when(configService.getConfigForProviderId("FetcherId")).thenReturn(mock(DefaultConfig.class));
-        when(configService.getConfigForProviderId("PusherId")).thenReturn(mock(DefaultConfig.class));
-
-        Set<Connector> connectors = ConnectorBuilder.init(serviceProvider, converterProvider, configService).createConnectors();
-
-        assertEquals(0, connectors.size());
-    }
+package cz.senslog.connector.app.config;
+
+import cz.senslog.connector.app.config.api.ConfigurationService;
+import cz.senslog.connector.fetch.api.ConnectorFetchProvider;
+import cz.senslog.connector.fetch.api.ConnectorFetcher;
+import cz.senslog.connector.fetch.api.ExecutableFetcher;
+import cz.senslog.connector.model.api.AbstractModel;
+import cz.senslog.connector.model.api.Converter;
+import cz.senslog.connector.model.api.ConverterProvider;
+import cz.senslog.connector.model.api.ProxySessionModel;
+import cz.senslog.connector.model.config.ConnectorDescriptor;
+import cz.senslog.connector.model.config.DefaultConfig;
+import cz.senslog.connector.push.api.ConnectorPushProvider;
+import cz.senslog.connector.push.api.ConnectorPusher;
+import org.junit.jupiter.api.Test;
+
+import java.util.HashSet;
+import java.util.Optional;
+import java.util.Set;
+
+import static java.time.OffsetDateTime.MAX;
+import static java.time.OffsetDateTime.MIN;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+class ConnectorBuilderTest {
+
+    private static class InputModel extends AbstractModel{ InputModel() { super(MIN, MAX); }}
+    private static class OutputModel extends AbstractModel{ OutputModel() { super(MIN, MAX);}}
+
+    private static class BasicSessionModel extends ProxySessionModel {
+        public BasicSessionModel() { super(false); }
+    }
+
+    private static class TestingFetcher implements ConnectorFetcher<BasicSessionModel, OutputModel> {
+        @Override public void init() { }
+        @Override public OutputModel fetch(Optional<BasicSessionModel> session) { return new OutputModel(); }
+    }
+
+    private static class TestingPusher implements ConnectorPusher<InputModel> {
+        @Override public void init() {}
+        @Override public void push(InputModel model) {}
+    }
+
+    private final ConnectorFetchProvider defaultFetchProvider = config -> ExecutableFetcher.create(new TestingFetcher());
+
+    private final ConnectorPushProvider defaultPushProvider = config -> new TestingPusher();
+
+    @Test
+    void createConnectors_CreateTestConnector_CreatedOneConnector() {
+
+        ConverterProvider converterProvider = mock(ConverterProvider.class);
+        when(converterProvider.getConverter(OutputModel.class, InputModel.class)).thenReturn(
+                (Converter<OutputModel, InputModel>) model -> new InputModel());
+
+        ServiceProvider serviceProvider = new ServiceProvider(aClass -> defaultFetchProvider, aClass -> defaultPushProvider);
+
+        Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
+        connectorDescriptors.add(new ConnectorDescriptor("Test", "FetcherId", "PusherId", 1, 2, null));
+
+        ConfigurationService configService = mock(ConfigurationService.class);
+        when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
+        when(configService.getConfigForProviderId("FetcherId")).thenReturn(mock(DefaultConfig.class));
+        when(configService.getConfigForProviderId("PusherId")).thenReturn(mock(DefaultConfig.class));
+
+        Set<Connector> connectors = ConnectorBuilder.init(serviceProvider, converterProvider, configService).createConnectors();
+
+        assertEquals(1, connectors.size());
+
+        Connector connector = connectors.iterator().next();
+        assertEquals("Test", connector.getName());
+        assertEquals(1_000, connector.getPeriod().orElse(0));
+        assertEquals(2_000, connector.getInitDelay().orElse(0));
+    }
+
+    @Test
+    void createConnectors_CreateTwoConnectors_CreatedTwoConnectors() {
+
+        ConverterProvider converterProvider = mock(ConverterProvider.class);
+        when(converterProvider.getConverter(OutputModel.class, InputModel.class)).thenReturn(
+                (Converter<OutputModel, InputModel>) model -> new InputModel());
+
+        ServiceProvider serviceProvider = new ServiceProvider(aClass -> defaultFetchProvider, aClass -> defaultPushProvider);
+
+        Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
+        connectorDescriptors.add(new ConnectorDescriptor("Test1", "FetcherId", "PusherId", 1, 3, null));
+        connectorDescriptors.add(new ConnectorDescriptor("Test2", "FetcherId", "PusherId", 2, 3, null));
+
+        ConfigurationService configService = mock(ConfigurationService.class);
+        when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
+        when(configService.getConfigForProviderId("FetcherId")).thenReturn(mock(DefaultConfig.class));
+        when(configService.getConfigForProviderId("PusherId")).thenReturn(mock(DefaultConfig.class));
+
+        Set<Connector> connectors = ConnectorBuilder.init(serviceProvider, converterProvider, configService).createConnectors();
+
+        assertEquals(2, connectors.size());
+    }
+
+    @Test
+    void createConnectors_FetchProviderNull_ZeroConnectors() {
+
+        ConverterProvider converterProvider = mock(ConverterProvider.class);
+        when(converterProvider.getConverter(OutputModel.class, InputModel.class)).thenReturn(
+                (Converter<OutputModel, InputModel>) model -> new InputModel());
+
+        // fetch provider class does not exist -> null
+        ServiceProvider serviceProvider = new ServiceProvider(aClass -> null, aClass -> defaultPushProvider);
+
+        Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
+        connectorDescriptors.add(new ConnectorDescriptor("Test", "FetcherId", "PusherId", 1, 2, null));
+
+        ConfigurationService configService = mock(ConfigurationService.class);
+        when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
+        when(configService.getConfigForProviderId("PusherId")).thenReturn(mock(DefaultConfig.class));
+
+        Set<Connector> connectors = ConnectorBuilder.init(serviceProvider, converterProvider, configService).createConnectors();
+
+        assertEquals(0, connectors.size());
+    }
+
+    @Test
+    void createConnectors_FetchConfigNull_ZeroConnectors() {
+
+        ConverterProvider converterProvider = mock(ConverterProvider.class);
+        when(converterProvider.getConverter(OutputModel.class, InputModel.class)).thenReturn(
+                (Converter<OutputModel, InputModel>) model -> new InputModel());
+
+        ServiceProvider serviceProvider = new ServiceProvider(aClass -> defaultFetchProvider, aClass -> defaultPushProvider);
+
+        Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
+        connectorDescriptors.add(new ConnectorDescriptor("Test", "FetcherId", "PusherId", 1, 2, null));
+
+        ConfigurationService configService = mock(ConfigurationService.class);
+        when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
+        // fetch provider configuration does not exist -> null
+        when(configService.getConfigForProviderId("FetcherId")).thenReturn(null);
+        when(configService.getConfigForProviderId("PusherId")).thenReturn(mock(DefaultConfig.class));
+
+        Set<Connector> connectors = ConnectorBuilder.init(serviceProvider, converterProvider, configService).createConnectors();
+
+        assertEquals(0, connectors.size());
+    }
+
+    @Test
+    void createConnectors_PushProviderNull_ZeroConnectors() {
+
+        ConverterProvider converterProvider = mock(ConverterProvider.class);
+        when(converterProvider.getConverter(OutputModel.class, InputModel.class)).thenReturn(
+                (Converter<OutputModel, InputModel>) model -> new InputModel());
+
+        // push provider is set to null
+        ServiceProvider serviceProvider = new ServiceProvider(aClass -> defaultFetchProvider, aClass -> null);
+
+        Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
+        connectorDescriptors.add(new ConnectorDescriptor("Test", "FetcherId", "PusherId", 1, 2, null));
+
+        ConfigurationService configService = mock(ConfigurationService.class);
+        when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
+        when(configService.getConfigForProviderId("FetcherId")).thenReturn(mock(DefaultConfig.class));
+
+        Set<Connector> connectors = ConnectorBuilder.init(serviceProvider, converterProvider, configService).createConnectors();
+
+        assertEquals(0, connectors.size());
+    }
+
+    @Test
+    void createConnectors_PushConfigNull_ZeroConnectors() {
+
+        ConverterProvider converterProvider = mock(ConverterProvider.class);
+        when(converterProvider.getConverter(OutputModel.class, InputModel.class)).thenReturn(
+                (Converter<OutputModel, InputModel>) model -> new InputModel());
+
+        ServiceProvider serviceProvider = new ServiceProvider(aClass -> defaultFetchProvider, aClass -> defaultPushProvider);
+
+        Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
+        connectorDescriptors.add(new ConnectorDescriptor("Test", "FetcherId", "PusherId", 1, 2, null));
+
+        ConfigurationService configService = mock(ConfigurationService.class);
+        when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
+        when(configService.getConfigForProviderId("FetcherId")).thenReturn(mock(DefaultConfig.class));
+
+        // fetch provider configuration does not exist -> null
+        when(configService.getConfigForProviderId("PusherId")).thenReturn(null);
+
+        Set<Connector> connectors = ConnectorBuilder.init(serviceProvider, converterProvider, configService).createConnectors();
+
+        assertEquals(0, connectors.size());
+    }
+
+    @Test
+    void createConnectors_ConverterNull_CreatedZeroConnector() {
+
+        ConverterProvider converterProvider = mock(ConverterProvider.class);
+        // converter does not exist -> null
+        when(converterProvider.getConverter(OutputModel.class, InputModel.class)).thenReturn(null);
+
+        ServiceProvider serviceProvider = new ServiceProvider(aClass -> defaultFetchProvider, aClass -> defaultPushProvider);
+
+        Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
+        connectorDescriptors.add(new ConnectorDescriptor("Test", "FetcherId", "PusherId", 1, 2, null));
+
+        ConfigurationService configService = mock(ConfigurationService.class);
+        when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
+        when(configService.getConfigForProviderId("FetcherId")).thenReturn(mock(DefaultConfig.class));
+        when(configService.getConfigForProviderId("PusherId")).thenReturn(mock(DefaultConfig.class));
+
+        Set<Connector> connectors = ConnectorBuilder.init(serviceProvider, converterProvider, configService).createConnectors();
+
+        assertEquals(0, connectors.size());
+    }
+
+    @Test
+    void createConnectors_IncompatibleFetchModelClass_CreatedZeroConnector() {
+
+        // ConnectorFetcher does not contain model class as a generic parameter
+         ConnectorFetchProvider fetchProvider = config -> ExecutableFetcher.create(new ConnectorFetcher() {
+            @Override public void init() {}
+            @Override public AbstractModel fetch(Optional session) {return new OutputModel();}
+        });
+
+        ConverterProvider converterProvider = mock(ConverterProvider.class);
+        when(converterProvider.getConverter(OutputModel.class, InputModel.class)).thenReturn(
+                (Converter<OutputModel, InputModel>) model -> new InputModel());
+
+        ServiceProvider serviceProvider = new ServiceProvider(aClass -> fetchProvider, aClass -> defaultPushProvider);
+
+        Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
+        connectorDescriptors.add(new ConnectorDescriptor("Test", "FetcherId", "PusherId", 1, 2, null));
+
+        ConfigurationService configService = mock(ConfigurationService.class);
+        when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
+        when(configService.getConfigForProviderId("FetcherId")).thenReturn(mock(DefaultConfig.class));
+        when(configService.getConfigForProviderId("PusherId")).thenReturn(mock(DefaultConfig.class));
+
+        Set<Connector> connectors = ConnectorBuilder.init(serviceProvider, converterProvider, configService).createConnectors();
+
+        assertEquals(0, connectors.size());
+    }
+
+    @Test
+    void createConnectors_IncompatiblePushModelClass_CreatedZeroConnector() {
+
+        // ConnectorPusher does not contain model class as a generic parameter
+        ConnectorPushProvider pushProvider = config -> new ConnectorPusher() {
+            @Override public void init() {}
+            @Override public void push(AbstractModel model) {}
+        };
+
+        ConverterProvider converterProvider = mock(ConverterProvider.class);
+        when(converterProvider.getConverter(OutputModel.class, InputModel.class)).thenReturn(
+                (Converter<OutputModel, InputModel>) model -> new InputModel());
+
+        ServiceProvider serviceProvider = new ServiceProvider(aClass -> defaultFetchProvider, aClass -> pushProvider);
+
+        Set<ConnectorDescriptor> connectorDescriptors = new HashSet<>();
+        connectorDescriptors.add(new ConnectorDescriptor("Test", "FetcherId", "PusherId", 1, 2, null));
+
+        ConfigurationService configService = mock(ConfigurationService.class);
+        when(configService.getConnectorDescriptors()).thenReturn(connectorDescriptors);
+        when(configService.getConfigForProviderId("FetcherId")).thenReturn(mock(DefaultConfig.class));
+        when(configService.getConfigForProviderId("PusherId")).thenReturn(mock(DefaultConfig.class));
+
+        Set<Connector> connectors = ConnectorBuilder.init(serviceProvider, converterProvider, configService).createConnectors();
+
+        assertEquals(0, connectors.size());
+    }
 }

+ 73 - 73
connector-app/src/test/java/cz/senslog/connector/app/config/FileConfigurationServiceImplTest.java

@@ -1,74 +1,74 @@
-package cz.senslog.connector.app.config;
-
-import cz.senslog.connector.app.config.api.FileConfigurationService;
-import cz.senslog.connector.model.config.ConnectorDescriptor;
-import cz.senslog.connector.model.config.DefaultConfig;
-import cz.senslog.connector.model.config.HostConfig;
-import cz.senslog.common.exception.UnsupportedFileException;
-import org.junit.jupiter.api.Test;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.nio.file.Paths;
-import java.util.Set;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-
-class FileConfigurationServiceImplTest {
-
-
-    @Test
-    void testParsingConfigFile() throws IOException, ClassNotFoundException, URISyntaxException {
-
-        URI uri = ClassLoader.getSystemResource("test_valid_config.yaml").toURI();
-        String configFileName = Paths.get(uri).toString();
-
-        FileConfigurationService configService = new FileConfigurationServiceImpl(configFileName);
-        configService.load();
-
-        Set<ConnectorDescriptor> descriptors = configService.getConnectorDescriptors();
-
-        assertEquals(1, descriptors.size());
-
-        ConnectorDescriptor descriptor = descriptors.iterator().next();
-        assertEquals("ConnectorName", descriptor.getName());
-        assertEquals("FetchProviderId", descriptor.getFetcherId());
-        assertEquals("PushProviderId", descriptor.getPusherId());
-        assertEquals(100, descriptor.getPeriod());
-
-        DefaultConfig fetchConfig = configService.getConfigForProviderId("FetchProviderId");
-        assertEquals("FetchProviderId", fetchConfig.getId());
-        assertEquals(TestFetchProviderClass.class, fetchConfig.getProvider());
-        assertEquals("<name>", fetchConfig.getStringProperty("name"));
-        HostConfig fetchHost = new HostConfig(fetchConfig.getPropertyConfig("host"));
-        assertEquals("<fetcher_api_domain>", fetchHost.getDomain());
-        assertEquals("<path>", fetchHost.getPath());
-
-        DefaultConfig pushConfig = configService.getConfigForProviderId("PushProviderId");
-        assertEquals("PushProviderId", pushConfig.getId());
-        assertEquals(TestPushProviderClass.class, pushConfig.getProvider());
-        assertEquals("<name>", pushConfig.getStringProperty("name"));
-        HostConfig pushHost = new HostConfig(pushConfig.getPropertyConfig("host"));
-        assertEquals("<pusher_api_domain>", pushHost.getDomain());
-        assertEquals("<path>", pushHost.getPath());
-    }
-
-    @Test
-    void load_WrongFileNameExtension_UnsupportedFileException() {
-
-        FileConfigurationService service = new FileConfigurationServiceImpl("test.txt");
-
-        assertThrows(UnsupportedFileException.class, service::load);
-    }
-
-    @Test
-    void load_FileDoesNotExist_FileNotFoundException() {
-
-        FileConfigurationService service = new FileConfigurationServiceImpl("test.yaml");
-
-        assertThrows(FileNotFoundException.class, service::load);
-    }
+package cz.senslog.connector.app.config;
+
+import cz.senslog.connector.app.config.api.FileConfigurationService;
+import cz.senslog.connector.model.config.ConnectorDescriptor;
+import cz.senslog.connector.model.config.DefaultConfig;
+import cz.senslog.connector.model.config.HostConfig;
+import cz.senslog.connector.tools.exception.UnsupportedFileException;
+import org.junit.jupiter.api.Test;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.nio.file.Paths;
+import java.util.Set;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+class FileConfigurationServiceImplTest {
+
+
+    @Test
+    void testParsingConfigFile() throws IOException, ClassNotFoundException, URISyntaxException {
+
+        URI uri = ClassLoader.getSystemResource("test_valid_config.yaml").toURI();
+        String configFileName = Paths.get(uri).toString();
+
+        FileConfigurationService configService = new FileConfigurationServiceImpl(configFileName);
+        configService.load();
+
+        Set<ConnectorDescriptor> descriptors = configService.getConnectorDescriptors();
+
+        assertEquals(1, descriptors.size());
+
+        ConnectorDescriptor descriptor = descriptors.iterator().next();
+        assertEquals("ConnectorName", descriptor.getName());
+        assertEquals("FetchProviderId", descriptor.getFetcherId());
+        assertEquals("PushProviderId", descriptor.getPusherId());
+        assertEquals(1, descriptor.getPeriod());
+
+        DefaultConfig fetchConfig = configService.getConfigForProviderId("FetchProviderId");
+        assertEquals("FetchProviderId", fetchConfig.getId());
+        assertEquals(TestFetchProviderClass.class, fetchConfig.getProvider());
+        assertEquals("<name>", fetchConfig.getStringProperty("name"));
+        HostConfig fetchHost = new HostConfig(fetchConfig.getPropertyConfig("host"));
+        assertEquals("<fetcher_api_domain>", fetchHost.getDomain());
+        assertEquals("<path>", fetchHost.getPath());
+
+        DefaultConfig pushConfig = configService.getConfigForProviderId("PushProviderId");
+        assertEquals("PushProviderId", pushConfig.getId());
+        assertEquals(TestPushProviderClass.class, pushConfig.getProvider());
+        assertEquals("<name>", pushConfig.getStringProperty("name"));
+        HostConfig pushHost = new HostConfig(pushConfig.getPropertyConfig("host"));
+        assertEquals("<pusher_api_domain>", pushHost.getDomain());
+        assertEquals("<path>", pushHost.getPath());
+    }
+
+    @Test
+    void load_WrongFileNameExtension_UnsupportedFileException() {
+
+        FileConfigurationService service = new FileConfigurationServiceImpl("test.txt");
+
+        assertThrows(UnsupportedFileException.class, service::load);
+    }
+
+    @Test
+    void load_FileDoesNotExist_FileNotFoundException() {
+
+        FileConfigurationService service = new FileConfigurationServiceImpl("test.yaml");
+
+        assertThrows(FileNotFoundException.class, service::load);
+    }
 }

+ 26 - 26
connector-app/src/test/resources/test_valid_config.yaml

@@ -1,26 +1,26 @@
-feMainDomain: &fetcherApiDomain
-  domain: "<fetcher_api_domain>"
-
-puMainDomain: &pusherApiDomain
-  domain: "<pusher_api_domain>"
-
-settings:
-  - FetchProviderId:
-      name: "<name>"
-      provider: "cz.senslog.connector.app.config.TestFetchProviderClass"
-      host:
-        <<: *fetcherApiDomain
-        path: "<path>"
-
-  - PushProviderId:
-      name: "<name>"
-      provider: "cz.senslog.connector.app.config.TestPushProviderClass"
-      host:
-        <<: *pusherApiDomain
-        path: "<path>"
-
-connectors:
-  - ConnectorName:
-      fetcher: "FetchProviderId"
-      pusher: "PushProviderId"
-      period: 100
+feMainDomain: &fetcherApiDomain
+  domain: "<fetcher_api_domain>"
+
+puMainDomain: &pusherApiDomain
+  domain: "<pusher_api_domain>"
+
+settings:
+  - FetchProviderId:
+      name: "<name>"
+      provider: "cz.senslog.connector.app.config.TestFetchProviderClass"
+      host:
+        <<: *fetcherApiDomain
+        path: "<path>"
+
+  - PushProviderId:
+      name: "<name>"
+      provider: "cz.senslog.connector.app.config.TestPushProviderClass"
+      host:
+        <<: *pusherApiDomain
+        path: "<path>"
+
+connectors:
+  - ConnectorName:
+      fetcher: "FetchProviderId"
+      pusher: "PushProviderId"
+      period: 1

+ 38 - 38
connector-fetch-api/pom.xml

@@ -1,39 +1,39 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>connectors</artifactId>
-        <groupId>cz.senslog</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>connector-fetch-api</artifactId>
-    <name>fetch-api</name>
-    <version>${project.parent.version}</version>
-    <packaging>jar</packaging>
-
-    <dependencies>
-        <dependency>
-            <groupId>cz.senslog</groupId>
-            <artifactId>common</artifactId>
-            <version>1.0.0</version>
-        </dependency>
-        <dependency>
-            <groupId>cz.senslog</groupId>
-            <artifactId>connector-model</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-assembly-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>connectors</artifactId>
+        <groupId>cz.senslog</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>connector-fetch-api</artifactId>
+    <name>fetch-api</name>
+    <version>${project.parent.version}</version>
+    <packaging>jar</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>cz.senslog</groupId>
+            <artifactId>connector-tools</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>cz.senslog</groupId>
+            <artifactId>connector-model</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-assembly-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>

+ 1 - 1
connector-fetch-api/src/main/java/cz/senslog/connector/fetch/api/ExecutableFetcher.java

@@ -8,7 +8,7 @@ import cz.senslog.connector.model.api.ProxySessionModel;
 
 import java.util.Optional;
 
-import static cz.senslog.common.interceptor.ProxyUtils.createProxy;
+import static cz.senslog.connector.tools.interceptor.ProxyUtils.createProxy;
 
 public class ExecutableFetcher<T extends AbstractModel> {
 

+ 2 - 2
connector-fetch-api/src/main/java/cz/senslog/connector/fetch/api/FetchProxySession.java

@@ -3,13 +3,13 @@
 
 package cz.senslog.connector.fetch.api;
 
-import cz.senslog.common.interceptor.AbstractMethodInterceptor;
+import cz.senslog.connector.tools.interceptor.AbstractMethodInterceptor;
 import cz.senslog.connector.model.api.AbstractModel;
 import cz.senslog.connector.model.api.ProxySessionModel;
 
 import java.util.Optional;
 
-import static cz.senslog.common.util.MethodExplorer.loadMethod;
+import static cz.senslog.connector.tools.util.MethodExplorer.loadMethod;
 import static java.util.Optional.*;
 
 public abstract class FetchProxySession<S extends ProxySessionModel, T extends AbstractModel> extends AbstractMethodInterceptor {

+ 0 - 5
connector-fetch-azure/pom.xml

@@ -20,11 +20,6 @@
             <artifactId>connector-fetch-api</artifactId>
             <version>${project.parent.version}</version>
         </dependency>
-        <dependency>
-            <groupId>cz.senslog</groupId>
-            <artifactId>common</artifactId>
-            <version>1.0.0</version>
-        </dependency>
     </dependencies>
 
     <build>

+ 1 - 1
connector-fetch-azure/src/main/java/cz/senslog/connector/fetch/azure/AzureConfig.java

@@ -6,7 +6,7 @@ import cz.senslog.connector.fetch.azure.auth.AzureAuthConfig;
 
 import java.time.LocalDateTime;
 
-import static cz.senslog.common.json.BasicJson.objectToJson;
+import static cz.senslog.connector.tools.json.BasicJson.objectToJson;
 
 /**
  * The class {@code AzureConfig} represents a configuration class for the {@link AzureFetcher}.

+ 10 - 10
connector-fetch-azure/src/main/java/cz/senslog/connector/fetch/azure/AzureFetcher.java

@@ -1,13 +1,13 @@
 package cz.senslog.connector.fetch.azure;
 
 import com.google.gson.reflect.TypeToken;
-import cz.senslog.common.exception.ModuleInterruptedException;
-import cz.senslog.common.exception.SyntaxException;
-import cz.senslog.common.http.HttpClient;
-import cz.senslog.common.http.HttpRequest;
-import cz.senslog.common.http.HttpResponse;
-import cz.senslog.common.http.URLBuilder;
-import cz.senslog.common.json.JsonSchema;
+import cz.senslog.connector.tools.exception.ModuleInterruptedException;
+import cz.senslog.connector.tools.exception.SyntaxException;
+import cz.senslog.connector.tools.http.HttpClient;
+import cz.senslog.connector.tools.http.HttpRequest;
+import cz.senslog.connector.tools.http.HttpResponse;
+import cz.senslog.connector.tools.http.URLBuilder;
+import cz.senslog.connector.tools.json.JsonSchema;
 import cz.senslog.connector.fetch.api.ConnectorFetcher;
 import cz.senslog.connector.fetch.azure.auth.AuthenticationService;
 import cz.senslog.connector.model.api.ProxySessionModel;
@@ -25,9 +25,9 @@ import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
 import java.util.*;
 
-import static cz.senslog.common.http.HttpHeader.AUTHORIZATION;
-import static cz.senslog.common.json.BasicJson.jsonToObject;
-import static cz.senslog.common.util.StringUtils.isBlank;
+import static cz.senslog.connector.tools.http.HttpHeader.AUTHORIZATION;
+import static cz.senslog.connector.tools.json.BasicJson.jsonToObject;
+import static cz.senslog.connector.tools.util.StringUtils.isBlank;
 import static cz.senslog.connector.model.converter.AzureUnitConverter.convertEuiToUnitId;
 import static java.lang.String.format;
 import static java.time.OffsetDateTime.MAX;

+ 3 - 3
connector-fetch-azure/src/main/java/cz/senslog/connector/fetch/azure/AzureProxySession.java

@@ -1,8 +1,8 @@
 package cz.senslog.connector.fetch.azure;
 
 import com.google.gson.reflect.TypeToken;
-import cz.senslog.common.http.*;
-import cz.senslog.common.util.Tuple;
+import cz.senslog.connector.tools.http.*;
+import cz.senslog.connector.tools.util.Tuple;
 import cz.senslog.connector.fetch.api.ConnectorFetcher;
 import cz.senslog.connector.fetch.api.FetchProxySession;
 import cz.senslog.connector.model.azure.AzureModel;
@@ -19,7 +19,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 
-import static cz.senslog.common.json.BasicJson.jsonToObject;
+import static cz.senslog.connector.tools.json.BasicJson.jsonToObject;
 import static cz.senslog.connector.fetch.azure.AzureSession.emptySession;
 import static cz.senslog.connector.model.converter.AzureUnitConverter.convertUnitIdToEui;
 import static java.time.format.DateTimeFormatter.ofPattern;

+ 1 - 1
connector-fetch-azure/src/main/java/cz/senslog/connector/fetch/azure/ConnectorFetchAzureProvider.java

@@ -11,7 +11,7 @@ import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
 import static cz.senslog.connector.fetch.azure.auth.AuthenticationService.newAuthService;
-import static cz.senslog.common.http.HttpClient.newHttpClient;
+import static cz.senslog.connector.tools.http.HttpClient.newHttpClient;
 
 /**
  * The class {@code ConnectorFetchAzureProvider} represents a concrete implementation of {@link ConnectorFetchProvider}.

+ 8 - 8
connector-fetch-azure/src/main/java/cz/senslog/connector/fetch/azure/auth/AuthenticationService.java

@@ -2,11 +2,11 @@ package cz.senslog.connector.fetch.azure.auth;
 
 import com.google.gson.reflect.TypeToken;
 import cz.senslog.connector.model.config.HostConfig;
-import cz.senslog.common.exception.SyntaxException;
-import cz.senslog.common.http.HttpClient;
-import cz.senslog.common.http.HttpRequest;
-import cz.senslog.common.http.HttpResponse;
-import cz.senslog.common.http.URLBuilder;
+import cz.senslog.connector.tools.exception.SyntaxException;
+import cz.senslog.connector.tools.http.HttpClient;
+import cz.senslog.connector.tools.http.HttpRequest;
+import cz.senslog.connector.tools.http.HttpResponse;
+import cz.senslog.connector.tools.http.URLBuilder;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
@@ -16,9 +16,9 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
-import static cz.senslog.common.http.HttpCode.UNAUTHORIZED;
-import static cz.senslog.common.json.BasicJson.jsonToObject;
-import static cz.senslog.common.util.StringUtils.isNotBlank;
+import static cz.senslog.connector.tools.http.HttpCode.UNAUTHORIZED;
+import static cz.senslog.connector.tools.json.BasicJson.jsonToObject;
+import static cz.senslog.connector.tools.util.StringUtils.isNotBlank;
 import static java.time.format.DateTimeFormatter.ISO_DATE_TIME;
 
 /**

+ 1 - 1
connector-fetch-azure/src/main/java/cz/senslog/connector/fetch/azure/auth/AzureAuthorizationInfo.java

@@ -2,7 +2,7 @@ package cz.senslog.connector.fetch.azure.auth;
 
 import java.time.LocalDateTime;
 
-import static cz.senslog.common.json.BasicJson.objectToJson;
+import static cz.senslog.connector.tools.json.BasicJson.objectToJson;
 
 /**
  * The class {@code AzureAuthorizationInfo} represents a transfer object of authorization information.

+ 1 - 1
connector-fetch-azure/src/test/java/cz/senslog/connector/fetch/azure/AzureConfigTest.java

@@ -6,7 +6,7 @@ import org.junit.jupiter.api.Test;
 import java.time.LocalDateTime;
 import java.util.HashMap;
 
-import static cz.senslog.common.json.BasicJson.jsonToObject;
+import static cz.senslog.connector.tools.json.BasicJson.jsonToObject;
 import static org.junit.jupiter.api.Assertions.*;
 
 class AzureConfigTest {

+ 6 - 6
connector-fetch-azure/src/test/java/cz/senslog/connector/fetch/azure/AzureFetcherTest.java

@@ -2,10 +2,10 @@
 package cz.senslog.connector.fetch.azure;
 
 
-import cz.senslog.common.http.HttpClient;
-import cz.senslog.common.http.HttpCode;
-import cz.senslog.common.http.HttpRequest;
-import cz.senslog.common.http.HttpResponse;
+import cz.senslog.connector.tools.http.HttpClient;
+import cz.senslog.connector.tools.http.HttpCode;
+import cz.senslog.connector.tools.http.HttpRequest;
+import cz.senslog.connector.tools.http.HttpResponse;
 import cz.senslog.connector.fetch.azure.auth.AuthenticationService;
 import cz.senslog.connector.model.azure.AzureModel;
 import cz.senslog.connector.model.azure.SensorInfo;
@@ -20,8 +20,8 @@ import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
 import java.util.*;
 
-import static cz.senslog.common.http.HttpCode.SERVER_ERROR;
-import static cz.senslog.common.json.BasicJson.objectToJson;
+import static cz.senslog.connector.tools.http.HttpCode.SERVER_ERROR;
+import static cz.senslog.connector.tools.json.BasicJson.objectToJson;
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;

+ 5 - 5
connector-fetch-azure/src/test/java/cz/senslog/connector/fetch/azure/auth/AuthenticationServiceTest.java

@@ -1,10 +1,10 @@
 package cz.senslog.connector.fetch.azure.auth;
 
-import cz.senslog.common.http.HttpRequest;
+import cz.senslog.connector.tools.http.HttpRequest;
 import cz.senslog.connector.model.config.DefaultConfig;
-import cz.senslog.common.http.HttpClient;
-import cz.senslog.common.http.HttpCode;
-import cz.senslog.common.http.HttpResponse;
+import cz.senslog.connector.tools.http.HttpClient;
+import cz.senslog.connector.tools.http.HttpCode;
+import cz.senslog.connector.tools.http.HttpResponse;
 import org.junit.jupiter.api.Test;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
@@ -15,7 +15,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static cz.senslog.common.json.BasicJson.objectToJson;
+import static cz.senslog.connector.tools.json.BasicJson.objectToJson;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;

+ 1 - 1
connector-fetch-azure/src/test/java/cz/senslog/connector/fetch/azure/auth/AzureAuthorizationInfoTest.java

@@ -1,6 +1,6 @@
 package cz.senslog.connector.fetch.azure.auth;
 
-import cz.senslog.common.json.BasicJson;
+import cz.senslog.connector.tools.json.BasicJson;
 import org.junit.jupiter.api.Test;
 
 import java.time.LocalDateTime;

+ 0 - 5
connector-fetch-drutes/pom.xml

@@ -20,11 +20,6 @@
             <artifactId>connector-fetch-api</artifactId>
             <version>${project.parent.version}</version>
         </dependency>
-        <dependency>
-            <groupId>cz.senslog</groupId>
-            <artifactId>common</artifactId>
-            <version>1.0.0</version>
-        </dependency>
     </dependencies>
 
     <build>

+ 12 - 0
connector-fetch-drutes/src/main/java/cz/senslog/connector/fetch/drutes/DrutesConfig.java

@@ -4,13 +4,25 @@ import cz.senslog.connector.model.config.DefaultConfig;
 
 public class DrutesConfig {
 
+    private final long unitId;
     private final String baseDir;
+    private final String observedDir;
 
     public DrutesConfig(DefaultConfig config) {
+        this.unitId = config.getIntegerProperty("unitId");
         this.baseDir = config.getStringProperty("baseDir");
+        this.observedDir = config.getStringProperty("observedDir");
     }
 
     public String getBaseDir() {
         return baseDir;
     }
+
+    public long getUnitId() {
+        return unitId;
+    }
+
+    public String getObservedDir() {
+        return observedDir;
+    }
 }

+ 93 - 96
connector-fetch-drutes/src/main/java/cz/senslog/connector/fetch/drutes/DrutesFetcher.java

@@ -8,75 +8,61 @@ import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.time.LocalDateTime;
+import java.nio.file.attribute.BasicFileAttributes;
 import java.time.OffsetDateTime;
+import java.time.ZoneId;
 import java.util.*;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 import static java.lang.Double.parseDouble;
 import static java.lang.Integer.parseInt;
 import static java.lang.Long.parseLong;
-import static java.time.Instant.ofEpochSecond;
 import static java.time.LocalDateTime.parse;
-import static java.time.OffsetDateTime.ofInstant;
-import static java.time.ZoneOffset.UTC;
 import static java.time.format.DateTimeFormatter.ofPattern;
 import static java.util.stream.Collectors.toCollection;
 
 public class DrutesFetcher implements ConnectorFetcher<VoidSession, DrutesModel> {
 
     private static class DirInfo {
-        final long unit;
-        final OffsetDateTime created;
-        final Path path;
-
-        static DirInfo parse(Path dirPath) {
-            String dirName = dirPath.getFileName().toString();
-            String[] parts = dirName.split("_");
-            if (parts.length != 2) return  null;
-            long unit = parseLong(parts[0]);
-            long epoch = parseLong(parts[1]);
-            OffsetDateTime created = ofInstant(ofEpochSecond(epoch), UTC);
-            return new DirInfo(unit, created, dirPath);
-        }
+        final long unitId;
+        final long sensorId;
+        final String path;
 
-        DirInfo(long unit, OffsetDateTime created, Path path) {
+        DirInfo(long unitId, long sensorId, String path) {
             this.path = path;
-            this.created = created;
-            this.unit = unit;
-        }
-
-        public long getUnit() {
-            return unit;
-        }
-
-        public OffsetDateTime getCreated() {
-            return created;
+            this.unitId = unitId;
+            this.sensorId = sensorId;
         }
 
-        public Path getPath() {
-            return path;
+        @Override
+        public String toString() {
+            return String.format("%d | %d => %s", unitId, sensorId, path);
         }
     }
 
     private static class PredictionInfo {
         final DirInfo dirInfo;
-        final LocalDateTime predictFrom;
-        final List<Path> predictFiles;
+        final OffsetDateTime predictCreated;
+        final OffsetDateTime predictFrom;
+        final Path predictFile;
 
-        PredictionInfo(DirInfo dirInfo, List<Path> predictFiles, LocalDateTime predictFrom) {
+        PredictionInfo(DirInfo dirInfo, Path predictFile, OffsetDateTime predictCreated, OffsetDateTime predictFrom) {
             this.dirInfo = dirInfo;
             this.predictFrom = predictFrom;
-            this.predictFiles = predictFiles;
+            this.predictCreated = predictCreated;
+            this.predictFile = predictFile;
         }
     }
 
     private static final Logger logger = LogManager.getLogger(DrutesFetcher.class);
 
+    private static final ZoneId DEFAULT_ZONE = ZoneId.systemDefault();
     private static final String SUCCESS_IMPORT_FILE = "import.success";
     private static final String SUCCESS_SENSORS_FILE = "sensors.success";
     private static final String TIMES_PREDICT_FILE = "predict.times";
@@ -84,6 +70,8 @@ public class DrutesFetcher implements ConnectorFetcher<VoidSession, DrutesModel>
 
     private final DrutesConfig config;
 
+    private List<DirInfo> sensorsToLoad;
+
     DrutesFetcher(DrutesConfig config) {
         this.config = config;
     }
@@ -95,78 +83,81 @@ public class DrutesFetcher implements ConnectorFetcher<VoidSession, DrutesModel>
                     "Provided base dir '%s' does not exist.", config.getBaseDir()
             )));
         }
+
+        try (Stream<Path> paths = Files.walk(Paths.get(config.getBaseDir()))) {
+            final Pattern numericPattern = Pattern.compile("-?\\d+(\\.\\d+)?");
+            sensorsToLoad = paths.filter(Files::isDirectory)
+                    .filter(p -> numericPattern.matcher(p.getFileName().toString()).matches())
+                    .map(p -> new DirInfo(
+                            config.getUnitId(), parseLong(p.getFileName().toString()),
+                            Paths.get(p.toString(), config.getObservedDir()).toString())
+                    ).collect(Collectors.toList());
+
+        } catch (IOException e) {
+            sensorsToLoad = Collections.emptyList();
+            logger.catching(e);
+        }
     }
 
     @Override
     public DrutesModel fetch(Optional<VoidSession> session) {
 
-        PredictionInfo prInfo;
-        try ( Stream<Path> paths = Files.walk(Paths.get(config.getBaseDir()))) {
-            Optional<DirInfo> observeDir = paths
-                    .filter(Files::isDirectory)
-                    .map(DirInfo::parse)
-                    .filter(Objects::nonNull)
-                    .min(Comparator.comparing(DirInfo::getCreated));
-
-            if (!observeDir.isPresent()) {
-                logger.warn("No predictions to load."); return null;
-            }
-            Path observePath = observeDir.get().getPath();
-
-            if (isSuccessFile(Paths.get(observePath.toString(), SUCCESS_IMPORT_FILE))) {
-                logger.warn("No new predictions to load."); return null;
+        List<PredictionInfo> predictionInfos = sensorsToLoad.parallelStream()
+                .filter(dir -> isSuccessFile(Paths.get(dir.path, SUCCESS_SENSORS_FILE)))
+                .map(dir -> {
+                    List<String> timesInfo = getFileContent(Paths.get(dir.path, TIMES_PREDICT_FILE));
+                    if (timesInfo.size() < 4) {
+                        logger.error("The file '{}' contains wrong content.", TIMES_PREDICT_FILE); return null;
+                    }
+                    OffsetDateTime predictFrom = parse(timesInfo.get(3), ofPattern("yyyy-MM-dd HH:mm:ss")).atZone(DEFAULT_ZONE).toOffsetDateTime();
+                    Path predictFile = Paths.get(dir.path, dir.sensorId + PREDICT_FILE_EXTENSION);
+                    BasicFileAttributes fileAttributes = fileAttributes(predictFile);
+                    if (fileAttributes == null) {
+                        logger.error("Creating time of the file '{}' can not be loaded.", predictFile); return null;
+                    }
+                    OffsetDateTime predictionCreated = fileAttributes.creationTime().toInstant().atZone(DEFAULT_ZONE).toOffsetDateTime();
+                    return new PredictionInfo(dir, predictFile, predictionCreated, predictFrom);
+                }).filter(Objects::nonNull).collect(Collectors.toList());
+
+        List<PredictionData> predictions = Collections.synchronizedList(new LinkedList<>());
+        for (PredictionInfo info : predictionInfos) {
+            Path successFilePath = Paths.get(info.dirInfo.path, SUCCESS_IMPORT_FILE);
+            try {
+                Files.readAllLines(info.predictFile).stream().skip(1)
+                        .map(l -> parseFileLine(l, info)).filter(Objects::nonNull)
+                        .collect(toCollection(() -> predictions));
+                createSuccessFile(successFilePath, true);
+            } catch (IOException e) {
+                logger.catching(e);
+                createSuccessFile(successFilePath, false);
             }
+        }
 
-            if (!isSuccessFile(Paths.get(observePath.toString(), SUCCESS_SENSORS_FILE))) {
-                logger.warn("Stored predictions were not successfully created."); return null;
-            }
+        if (predictions.isEmpty()) {
+            logger.warn("No prediction were loaded.");
+            return new DrutesModel(Collections.emptyList(), null, null);
+        }
 
-            List<String> timesInfo = getFileContent(Paths.get(observePath.toString(), TIMES_PREDICT_FILE));
-            if (timesInfo.size() < 4) {
-                logger.error("The file '{}' contains wrong content.", TIMES_PREDICT_FILE); return null;
-            }
+        PredictionData lastPredict = predictions.get(predictions.size()-1);
+        OffsetDateTime from = lastPredict.getPredictCreated();
+        OffsetDateTime to = from.plusSeconds(lastPredict.getTimeshift());
+        logger.info("Loaded {} prediction from '{}' to '{}'.", predictions.size(), from, to);
 
-            try (Stream<Path> predictPaths = Files.walk(observeDir.get().getPath().toAbsolutePath())) {
-                List<Path> predictFiles = predictPaths
-                        .filter(Files::isRegularFile)
-                        .filter(p -> p.getFileName().toString().endsWith(PREDICT_FILE_EXTENSION))
-                        .collect(Collectors.toList());
+        DrutesModel model = new DrutesModel(predictions, from, to);
+        logger.debug("Model was created successfully and sending it forward.");
 
-                LocalDateTime predictFrom = parse(timesInfo.get(3), ofPattern("yyyy-MM-dd HH:mm:ss"));
-                prInfo = new PredictionInfo(observeDir.get(), predictFiles, predictFrom);
-            }
+        return model;
+    }
 
-        } catch (IOException e) {
-            logger.catching(e); return null;
+    private static BasicFileAttributes fileAttributes(Path filePath) {
+        if (Files.notExists(filePath)) {
+            logger.warn("The file '{}' does not exist.", filePath); return null;
         }
-
-        Map<Long, List<PredictionData>> predictions = new HashMap<>(prInfo.predictFiles.size());
         try {
-            for (Path predictFilePath : prInfo.predictFiles) {
-                String fileName = predictFilePath.getFileName().toString();
-                long sensorId = parseLong(fileName.substring(0, fileName.lastIndexOf(".")));
-                List<PredictionData> sensorPredictions = predictions
-                        .computeIfAbsent(sensorId, k -> Collections.synchronizedList(new LinkedList<>()));
-                Files.readAllLines(predictFilePath).stream().skip(1)
-                        .map(DrutesFetcher::parseFileLine).filter(Objects::nonNull)
-                        .collect(toCollection(() -> sensorPredictions));
-            }
-            createSuccessFile(Paths.get(prInfo.dirInfo.getPath().toString(), SUCCESS_IMPORT_FILE), true);
+            return Files.readAttributes(filePath, BasicFileAttributes.class);
         } catch (IOException e) {
-            logger.catching(e);
-            createSuccessFile(Paths.get(prInfo.dirInfo.getPath().toString(), SUCCESS_IMPORT_FILE), false);
+            logger.catching(e); return null;
         }
-
-        Iterator<Map.Entry<Long, List<PredictionData>>> prIter = predictions.entrySet().iterator();
-        List<PredictionData> prList = prIter.hasNext() ? prIter.next().getValue() : Collections.emptyList();
-        long maxTimeShift = prList.isEmpty() ? 0 : prList.get(prList.size()-1).getTimeshift();
-
-        OffsetDateTime from = prInfo.dirInfo.created;
-        DrutesModel model = new DrutesModel(prInfo.dirInfo.getUnit(), prInfo.predictFrom,
-                from.getDayOfWeek().getValue(), predictions, from, from.plusSeconds(maxTimeShift)
-        );
-
-        return model;
     }
 
     private static List<String> getFileContent(Path filePath) {
@@ -182,7 +173,11 @@ public class DrutesFetcher implements ConnectorFetcher<VoidSession, DrutesModel>
 
     private static boolean isSuccessFile(Path successFilePath)  {
         List<String> lines = getFileContent(successFilePath);
-        return !lines.isEmpty() && parseInt(lines.get(0).trim()) != 0;
+        if (lines.isEmpty() || parseInt(lines.get(0).trim()) == 0) {
+            logger.warn("The prediction '{}' was not successfully created.", successFilePath);
+            return false;
+        }
+        return true;
     }
 
     private static void createSuccessFile(Path filePath, boolean success) {
@@ -194,20 +189,22 @@ public class DrutesFetcher implements ConnectorFetcher<VoidSession, DrutesModel>
         }
     }
 
-    private static PredictionData parseFileLine(String line) {
+    private static PredictionData parseFileLine(String line, PredictionInfo info) {
         String [] cmp = line.trim().split("\\s+");
         long timeshift;
         double [] values;
         if (cmp.length == 2) {
-            timeshift = parseLong(cmp[0]);
+             timeshift = new BigDecimal(cmp[0].toUpperCase()).longValue();
             values = new double[] { parseDouble(cmp[1]) };
         } else if (cmp.length == 3) {
-            timeshift = parseLong(cmp[0]);
+            timeshift = new BigDecimal(cmp[0].toUpperCase()).longValue();
             values = new double[] { parseDouble(cmp[1]), parseDouble(cmp[2]) };
         } else {
             logger.error("The parser does not exist for the data: '{}'.", line);
             return null;
         }
-        return new PredictionData(timeshift, values);
+        return new PredictionData(info.dirInfo.unitId, info.dirInfo.sensorId,
+                timeshift, values, info.predictCreated, info.predictFrom
+        );
     }
 }

+ 14 - 17
connector-fetch-drutes/src/test/java/cz/senslog/connector/fetch/drutes/DrutesFetcherTest.java

@@ -14,20 +14,20 @@ import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.time.Instant;
-import java.time.OffsetDateTime;
-import java.time.ZoneOffset;
+import java.time.*;
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.stream.Stream;
 
+import static java.time.format.DateTimeFormatter.ofPattern;
 import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.mock;
 
 class DrutesFetcherTest {
 
-    private static final String TEST_BASE_DIR = "predictions";
+//    private static final String TEST_BASE_DIR = "predictions";
+    private static final String TEST_BASE_DIR = "data";
     private static final String SUCCESS_IMPORT_FILE = "import.success";
 
 
@@ -37,7 +37,7 @@ class DrutesFetcherTest {
         return URLDecoder.decode(file.getAbsolutePath(), "UTF-8");
     }
 
-    @AfterEach
+   // @AfterEach
     void cleanTest() throws Exception {
         String testBaseDir = getAbsoluteTestDir();
         Path testPath = Paths.get(testBaseDir);
@@ -60,25 +60,22 @@ class DrutesFetcherTest {
 
         DefaultConfig defaultConfig = new DefaultConfig("", null);
         defaultConfig.setProperty("baseDir", getAbsoluteTestDir());
+        defaultConfig.setProperty("unitId", 4151559);
+        defaultConfig.setProperty("observedDir", "current");
 
         DrutesConfig config = new DrutesConfig(defaultConfig);
         DrutesFetcher fetcher = new DrutesFetcher(config);
         fetcher.init();
 
+
         DrutesModel model = fetcher.fetch(Optional.empty());
 
-        // folder name: 4151559_20220301
-        assertEquals(4151559L, model.getUnitId());
-        assertEquals(7, model.getDayOffset());
-        OffsetDateTime from = OffsetDateTime.of(1970, 8, 23, 0, 45, 1, 0, ZoneOffset.UTC);
-        assertEquals(from, model.getFrom());
-        assertEquals(from.plusSeconds(604800), model.getTo());
+        assertEquals(5_348, model.getPredictions().size());
+        PredictionData predictData = model.getPredictions().get(0);
+        assertEquals(4151559L, predictData.getUnitId());
 
-        assertEquals(4, model.getPredictions().size());
-        int predictionCounter = 0;
-        for (List<PredictionData> value : model.getPredictions().values()) {
-            predictionCounter += value.size();
-        }
-        assertEquals(2692, predictionCounter); // 2692 = 4 * 673
+        OffsetDateTime predictionFrom = LocalDateTime.of(2022, 3, 8, 23, 0,0,0)
+                .atZone(ZoneId.systemDefault()).toOffsetDateTime();
+        assertEquals(predictionFrom, predictData.getPredictFrom());
     }
 }

+ 1338 - 0
connector-fetch-drutes/src/test/resources/data/340260001/current/340260001.predict

@@ -0,0 +1,1338 @@
+# time [s]     T [dg. C] 
+0 24.600006
+900 24.9005028650302
+1800 24.9466996709592
+2700 24.9712854975699
+3600 24.9873623451733
+4500 23.6329668252476
+5400 23.385016166514
+6300 23.2499237442488
+7200 23.1608305990984
+8100 21.7817767070418
+9000 21.3794572099034
+9900 21.1177355620197
+10800 20.9227166772556
+11700 20.3315480512872
+12600 20.0647658724587
+13500 19.8609179093015
+14400 19.6923971792897
+15300 19.8693655659261
+16200 19.8375184057902
+17100 19.7905866398245
+18000 19.7415847767674
+18900 19.368342501771
+19800 19.2407335369298
+20700 19.1477918735003
+21600 19.0716919370344
+22500 18.6847327768536
+23400 18.5432575091738
+24300 18.4395022380865
+25200 18.3546854477992
+26100 17.9428137398152
+27000 17.7720074538362
+27900 17.6419349032972
+28800 17.5330973223874
+29700 17.3129029478448
+30600 17.1933920582368
+31500 17.0950805567965
+32400 17.0092375052891
+33300 17.9273735181156
+34200 18.1156461078199
+35100 18.2114631461936
+36000 18.2680978469339
+36900 19.0534458061185
+37800 19.242133290185
+38700 19.3523126218301
+39600 19.4268400239634
+40500 20.1223336250618
+41400 20.2860721371189
+42300 20.3849362691983
+43200 20.4543134214663
+44100 20.9498975738502
+45000 21.068821368407
+45900 21.143417603317
+46800 21.1975299902779
+47700 22.0344521427313
+48600 22.1806622454901
+49500 22.2651097296249
+50400 22.323821230933
+51300 23.1858041230808
+52200 23.3158351143608
+53100 23.3905927369807
+54000 23.4427769648164
+54900 25.3492061443257
+55800 25.557508094506
+56700 25.6681355284905
+57600 25.7418038747185
+58500 25.5482930787118
+59400 25.5669877807767
+60300 25.589701283148
+61200 25.6111443803962
+62100 25.741079155843
+63000 25.7687449266843
+63900 25.7894746622745
+64800 25.8068306113397
+65700 26.3282584648577
+66600 26.3869617671255
+67500 26.421056015767
+68400 26.4457256364275
+69300 27.0506681929121
+70200 27.1191040564657
+71100 27.1586167005396
+72000 27.1869174093843
+72900 26.0330302186037
+73800 25.9435943018594
+74700 25.9068742646363
+75600 25.8880927432381
+76500 25.9314464066064
+77400 25.9304383947796
+78300 25.9295609877224
+79200 25.9295048930585
+80100 25.517339243868
+81000 25.4799074752156
+81900 25.4624887698164
+82800 25.4524086978579
+83700 24.9233876339111
+84600 24.8665976580837
+85500 24.8377021048849
+86400 24.8194325470543
+87300 24.1172574264673
+88200 24.028090050977
+89100 23.9803326446216
+90000 23.9487671715421
+90900 23.6673646229237
+91800 23.6196684391649
+92700 23.5903425704675
+93600 23.5690823214952
+94500 23.1927030440988
+95400 23.1371140615788
+96300 23.1045692352915
+97200 23.0814609666141
+98100 22.1648552534068
+99000 22.0450984767173
+99900 21.9797581832262
+100800 21.9355579907458
+101700 21.2306327583192
+102600 21.1180023217776
+103500 21.0515407986572
+104400 21.0041951304463
+105300 20.0855462865546
+106200 19.9286865608622
+107100 19.8360642513791
+108000 19.7700187715896
+108900 19.2786243203316
+109800 19.1703554052624
+110700 19.0994128823289
+111600 19.0453516800829
+112500 18.8545762699463
+113400 18.796342911648
+114300 18.753246994669
+115200 18.717875897263
+116100 18.4524973896806
+117000 18.3915049464333
+117900 18.3496564083429
+118800 18.3164017330914
+119700 18.2576019880195
+120600 18.2288844737564
+121500 18.2049383328603
+122400 18.1838828373116
+123300 18.4159996907428
+124200 18.4398703106831
+125100 18.4448500756116
+126000 18.4428821671612
+126900 19.1658066337739
+127800 19.2961463650759
+128700 19.3642689195007
+129600 19.4067068927023
+130500 19.8952067061924
+131400 19.9969343604401
+132300 20.0559167880127
+133200 20.0960236376257
+134100 20.5679693275985
+135000 20.664675882031
+135900 20.7221068889863
+136800 20.762301213538
+137700 21.6088867622781
+138600 21.7700022253609
+139500 21.863454074425
+140400 21.9283493401852
+141300 22.4807638603369
+142200 22.595200349771
+143100 22.6661273812577
+144000 22.7177804618028
+144900 23.5018390988834
+145800 23.6355270192915
+146700 23.7144395234299
+147600 23.7705734984164
+148500 24.453395441727
+149400 24.5689802699984
+150300 24.6389836203184
+151200 24.689815221535
+152100 24.9950425319937
+153000 25.0640759074797
+153900 25.1111962625181
+154800 25.1481051102695
+155700 24.9270444359388
+156600 24.9192220698503
+157500 24.9239004965131
+158400 24.9313603138226
+159300 24.9351720721114
+160200 24.9443813802519
+161100 24.9538884557051
+162000 24.9632249113146
+162900 25.8076535562456
+163800 25.9109609862005
+164700 25.9672620904135
+165600 26.0059845947135
+166500 25.4411622354151
+167400 25.4047405030457
+168300 25.3938986399168
+169200 25.3913894099371
+170100 24.3197974665375
+171000 24.2194184907342
+171900 24.1716640431841
+172800 24.1433783028558
+173700 23.1989774351795
+174600 23.072535963528
+175500 23.0040845989439
+176400 22.9589981970021
+177300 22.9724478010854
+178200 22.9569867809538
+179100 22.9449858743177
+180000 22.936684767162
+180900 21.3318421508169
+181800 21.1181930021061
+182700 21.0028507666845
+183600 20.9260007031033
+184500 20.1304445668109
+185400 19.968177317772
+186300 19.8681379106094
+187200 19.7950933620949
+188100 19.2669166090722
+189000 19.1487802508392
+189900 19.0704579803591
+190800 19.0104480314991
+191700 18.5175341562535
+192600 18.3968150287167
+193500 18.3154460919181
+194400 18.2521623857688
+195300 18.0801275726997
+196200 18.0269062813595
+197100 17.9870937670688
+198000 17.9542159904725
+198900 17.8477227190396
+199800 17.8132389208276
+200700 17.7863162983259
+201600 17.7633514081087
+202500 17.4050089997835
+203400 17.3379406530958
+204300 17.2951047624868
+205200 17.2623725309785
+206100 17.1381482558752
+207000 17.0990509909101
+207900 17.0694072345252
+208800 17.0445062882996
+209700 17.9900458400862
+210600 18.1268953366552
+211500 18.1924189022829
+212400 18.2302587980071
+213300 19.0313223938299
+214200 19.1822132284196
+215100 19.2662572307787
+216000 19.3216790287051
+216900 19.8473272460297
+217800 19.9563358095114
+218700 20.0211093816411
+219600 20.0659808907154
+220500 20.6455457058429
+221400 20.7376990487649
+222300 20.7882621563388
+223200 20.8211722883813
+224100 20.8441250876096
+225000 20.8606620474039
+225900 20.872768189183
+226800 20.8817262384295
+227700 20.8884743581663
+228600 20.8937830095366
+229500 20.8983522788323
+230400 20.9022999583761
+231300 20.9075204219109
+232200 20.9143424198042
+233100 20.9233833230733
+234000 20.935188662756
+234900 20.9500930121239
+235800 20.9680711823933
+236700 20.9886158249255
+237600 21.0107345441696
+238500 21.0331448367764
+239400 21.054620201365
+240300 21.0743033772892
+241200 21.0918219943428
+242100 24.7075854613866
+243000 25.2357059040228
+243900 25.5143582897998
+244800 25.6936711173287
+245700 25.8236889690059
+246600 25.9252171079509
+247500 26.0084664508261
+248400 26.0791649431975
+249300 26.1408608455404
+250200 26.1959204175509
+251100 26.2460061743937
+252000 26.292315244203
+252900 26.3356946017697
+253800 26.3766944124881
+254700 26.4156020262512
+255600 26.4524890339228
+256500 26.487287030353
+257400 26.519882638718
+258300 26.5502028863103
+259200 26.5782637063675
+260100 26.6041746997765
+261000 26.6281138106986
+261900 26.6502923582059
+262800 26.6709252482848
+263700 22.5494407583525
+264600 21.6571449681684
+265500 21.1363158463172
+266400 20.7737211786714
+267300 20.4983939642183
+268200 20.2774779977855
+269100 20.0930931087659
+270000 19.9347093216986
+270900 19.7958933058163
+271800 19.672593247094
+272700 19.5621340458614
+273600 19.4626333154968
+274500 19.3726759134274
+275400 19.2911345991528
+276300 19.2170690315773
+277200 19.1496679623387
+278100 19.0882165552782
+279000 19.0320782756463
+279900 18.9798122075999
+280800 18.9325211177139
+281700 18.889171068751
+282600 18.8492070693675
+283500 18.8122634450856
+284400 18.7780285942386
+285300 18.4195141970462
+286200 18.3633173099364
+287100 18.3284206354221
+288000 18.3020697124148
+288900 18.2804176797571
+289800 18.2618019111927
+290700 18.2453522585269
+291600 18.2305534446099
+292500 18.2170723559546
+293400 18.2046789871873
+294300 18.1932062042685
+295200 18.1825275477173
+296100 18.172544180737
+297000 18.1631768027655
+297900 18.1543604141584
+298800 18.1460407960793
+299700 18.1381720640305
+300600 18.1307149170305
+301500 18.1236353515389
+302400 18.1169036945394
+303300 18.1104938613772
+304200 18.1043827755538
+305100 18.0985499077193
+306000 18.0929769041006
+306900 20.1877879802129
+307800 20.7256376023361
+308700 21.0523189620696
+309600 21.2841846739233
+310500 21.4583048154085
+311400 21.6015319047703
+312300 21.7219370389273
+313200 21.8258712211893
+314100 21.9175830763365
+315000 21.9999467983142
+315900 22.0749245008218
+316800 22.1438609437038
+317700 22.2076840967935
+318600 22.2670476698428
+319500 22.3224324016806
+320400 22.374215013479
+321300 22.4227116413649
+322200 22.4683150985795
+323100 22.5113691587837
+324000 22.5515381021154
+324900 22.589412189339
+325800 22.6252119149779
+326700 22.659118607465
+327600 22.6912942383048
+328500 25.3452018449332
+329400 25.7935149041708
+330300 26.0348488206817
+331200 26.1970069632692
+332100 26.3198456100381
+333000 26.4198687064235
+333900 26.505209360475
+334800 26.5801420917444
+335700 26.6468863083981
+336600 26.7066013116881
+337500 26.760023013734
+338400 26.8078105943863
+339300 26.8506549811954
+340200 26.8892553595449
+341100 26.9242638652859
+342000 26.9562486813284
+342900 26.9856836575206
+343800 27.0129553116541
+344700 27.0383769214915
+345600 27.0622033377639
+346500 27.0846437546852
+347400 27.105871758543
+348300 27.126032877855
+349200 27.145250126782
+350100 23.5274120499637
+351000 22.9386142087895
+351900 22.6252507380608
+352800 22.4201559637664
+353700 22.2716731054694
+354600 22.1574175442638
+355500 22.0658337429789
+356400 21.9902529779187
+357300 21.9265099956291
+358200 21.8718427911247
+359100 21.8243316311772
+360000 21.7825906831522
+360900 21.7455880517982
+361800 21.7125354534777
+362700 21.682817716119
+363600 21.6559460940374
+364500 21.6306519660303
+365400 21.6083646312034
+366300 21.5879964708585
+367200 21.5692732760509
+368100 21.5519985297612
+369000 21.536012443729
+369900 21.521180407363
+370800 21.5073873073171
+371700 18.9335512799526
+372600 18.2902199323009
+373500 17.8901112987159
+374400 17.597054337296
+375300 17.364676263536
+376200 17.171532483865
+377100 17.0060301240603
+378000 16.8612472877147
+378900 16.7327364386158
+379800 16.6174634026687
+380700 16.5132491959507
+381600 16.4184582724081
+382500 16.3318161360812
+383400 16.2522982145121
+384300 16.1775235610244
+385200 16.1096869792391
+386100 16.0469233057584
+387000 15.9886182424495
+387900 15.9342889522251
+388800 15.8835208029064
+389700 15.835950005489
+390600 15.7912555230804
+391500 15.749153861008
+392400 15.7093949178783
+393300 19.0976767428841
+394200 19.7919539008206
+395100 20.1857853406698
+396000 20.4514826876517
+396900 20.6490880551441
+397800 20.8063560591738
+398700 20.9379694402101
+399600 21.052059795218
+400500 21.1530781419613
+401400 21.2434112524182
+402300 21.3244255389312
+403200 21.3970987290013
+404100 21.4623152726029
+405000 21.5209427736113
+405900 21.5738128555243
+406800 21.6216859859367
+407700 21.6652308942698
+408600 21.7056973909961
+409500 21.7421849794761
+410400 21.7757894898638
+411300 21.8068870169451
+412200 21.8357716466451
+413100 21.862690728013
+414000 21.8878560342055
+414900 25.290203686424
+415800 25.9439005775059
+416700 26.3152420816642
+417600 26.5817913846522
+418500 26.7924580780801
+419400 26.9638552493824
+420300 27.1046120359016
+421200 27.2219553843826
+422100 27.3219941218426
+423000 27.4093466300477
+423900 27.4873023564974
+424800 27.5581624425247
+425700 27.623504178837
+426600 27.6843493695223
+427500 27.741294282348
+428400 27.7946439838023
+429300 27.8445518815019
+430200 27.8911369436645
+431100 27.9345537232541
+432000 27.9750128304361
+432900 28.0127685990449
+433800 28.0480947795687
+434700 28.081262388645
+435600 28.112525195684
+436500 23.905675305866
+437400 22.8260292198475
+438300 22.1577632165684
+439200 21.6760432594384
+440100 21.3022743073134
+441000 20.9990501706297
+441900 20.7455041581805
+442800 20.5287810388263
+443700 20.3403962276722
+444600 20.174455478782
+445500 20.0266970389954
+446400 19.8939383950982
+447300 19.7737387461618
+448200 19.6641839616753
+449100 19.5637446608428
+450000 19.4711797360605
+450900 19.3854690397096
+451800 19.305765263534
+452700 19.2313587024728
+453600 19.1616508158582
+454500 19.0961338998917
+455400 19.0343750964604
+456300 18.9760035652289
+457200 18.9207000421882
+458100 17.8804284638929
+459000 17.6129886978197
+459900 17.4395210850736
+460800 17.3077563946776
+461700 17.2000467561459
+462600 17.1081830230537
+463500 17.027647460138
+464400 16.9556740008706
+465300 16.890437731882
+466200 16.830665657999
+467100 16.775430435935
+468000 16.7240327393014
+468900 16.6759302335269
+469800 16.6306926751963
+470700 16.587972410141
+471600 16.5474843213459
+472500 16.5083270954198
+473400 16.4714186133557
+474300 16.4363303573842
+475200 16.4027707791809
+476100 16.3705870875279
+477000 16.3396643811046
+477900 16.309908089853
+478800 16.2812376093462
+479700 20.8765388010725
+480600 21.6144617285541
+481500 22.003099403002
+482400 22.2567280380623
+483300 22.4414972015731
+484200 22.5851544766955
+485100 22.7014929120286
+486000 22.7982056311023
+486900 22.880024795192
+487800 22.9501399911066
+488700 23.0108672481068
+489600 23.0639706670585
+490500 23.1108271395463
+491400 23.152523077954
+492300 23.1899206741225
+493200 23.2237078201768
+494100 23.2544368858772
+495000 23.2825547749313
+495900 23.3084259802355
+496800 23.3323501318938
+497700 23.3545753298249
+498600 23.3753083180752
+499500 23.3947223231127
+500400 23.4129631724024
+501300 27.1110072011108
+502200 27.7986615700688
+503100 28.1904312621983
+504000 28.4643063304911
+504900 28.6739178020448
+505800 28.8421076044928
+506700 28.9813735752697
+507600 29.099725257388
+508500 29.2026606125657
+509400 29.2940259486212
+510300 29.3764923562815
+511200 29.4518650687442
+512100 29.5213198461568
+513000 29.5856092869725
+513900 29.6452415290526
+514800 29.7006143320744
+515700 29.7520941608246
+516600 29.8000474717489
+517500 29.8448423211051
+518400 29.8868378498906
+519300 29.926372508944
+520200 29.9637552805309
+521100 29.9992602995553
+522000 30.0331239940853
+522900 25.8793603719427
+523800 25.1620939890512
+524700 24.7717929590424
+525600 24.514941337589
+526500 24.3295230320795
+527400 24.1879546074469
+528300 24.0756796443469
+529200 23.9841444881765
+530100 23.9079327852719
+531000 23.8434194348366
+531900 23.7880717699972
+532800 23.7400584576069
+533700 23.6980173812781
+534600 23.6609112144723
+535500 23.6279339874924
+536400 23.5984486314676
+537300 23.570904913719
+538200 23.546890154569
+539100 23.5251948770148
+540000 23.5054698858533
+540900 23.4874570986389
+541800 23.4709479506185
+542700 23.4557686203954
+543600 23.4417719091067
+544500 20.8311950377938
+545400 20.2615247030411
+546300 19.9198323055601
+547200 19.6765187499527
+548100 19.488411936494
+549000 19.3356452440327
+549900 19.2074116990722
+550800 19.097180456803
+551700 19.0007054126604
+552600 18.9150722192479
+553500 18.8381948607559
+554400 18.7685292604227
+555300 18.7049006725967
+556200 18.6463947161445
+557100 18.5922859030797
+558000 18.541989217523
+558900 18.49502637451
+559800 18.4510017119992
+560700 18.4095845713709
+561600 18.3704961520824
+562500 18.3334995196926
+563400 18.2983918832611
+564300 18.2649985391326
+565200 18.2331680620165
+566100 21.1381965909958
+567000 21.8055905453308
+567900 22.2000902226597
+568800 22.4748954748676
+569700 22.6822051304895
+570600 22.8463473796644
+571500 22.9806487418713
+572400 23.0931929831598
+573300 23.1892451864624
+574200 23.2724200251609
+575100 23.3453020656647
+576000 23.4098001657207
+576900 23.4673619240782
+577800 23.5191095821458
+578700 23.5669248981805
+579600 23.6097480230468
+580500 23.6487524679541
+581400 23.6845359446912
+582300 23.7175298350772
+583200 23.7480808786926
+584100 23.776476995656
+585000 23.8029611936171
+585900 23.8277407413156
+586800 23.8509938115861
+587700 28.3179861245408
+588600 29.0185731548952
+589500 29.4028886306684
+590400 29.6615465683653
+591300 29.8548893466763
+592200 30.0081073742862
+593100 30.1338539925496
+594000 30.2396545158836
+594900 30.3305594024476
+595800 30.4101583196432
+596700 30.4810328975798
+597600 30.5450136762978
+598500 30.603367440305
+599400 30.6569580446118
+600300 30.7063869923327
+601200 30.7521049408651
+602100 30.7944868733097
+603000 30.8338729955827
+603900 30.8705847388022
+604800 30.9049266925766
+605700 30.9371826467121
+606600 30.9676103789488
+607500 30.9964372681886
+608400 31.0238575383223
+609300 27.402457872516
+610200 27.0052802644086
+611100 26.8008305453639
+612000 26.674532268777
+612900 26.5878218139473
+613800 26.5243878418745
+614700 26.4731499823218
+615600 26.4349759704579
+616500 26.4046189830483
+617400 26.3798256853804
+618300 26.3592578358105
+619200 26.3419942165655
+620100 26.3273689196973
+621000 26.3148852219611
+621900 26.3041635933502
+622800 26.2949083245315
+623700 26.286885212756
+624600 26.2799061662103
+625500 26.2738183029524
+626400 26.2684960589065
+627300 26.2638353621306
+628200 26.2597492576961
+629100 26.2561645712072
+630000 26.2530193293018
+630900 22.3066876619996
+631800 21.4292288098121
+632700 20.9019208974736
+633600 20.5272873074626
+634500 20.2388981706801
+635400 20.0059348280504
+636300 19.8115234386202
+637200 19.6454145211165
+638100 19.5009183979382
+639000 19.3734312036083
+639900 19.2596524699602
+640800 19.1571378757046
+641700 19.0640283480917
+642600 18.9788781595961
+643500 18.9005415875946
+644400 18.8280957576205
+645300 18.7607866782357
+646200 18.697990614309
+647100 18.6391858832929
+648000 18.5839319023787
+648900 18.5318533829079
+649800 18.4826282423792
+650700 18.4359782406466
+651600 18.3916616362955
+652500 21.7616444205126
+653400 22.5919379683572
+654300 23.0962830360919
+655200 23.4537853276418
+656100 23.7266962398541
+657000 23.9445898021709
+657900 24.1239531996132
+658800 24.2749383140761
+659700 24.404239271559
+660600 24.5164985243722
+661500 24.6150632787404
+662400 24.7024227816949
+663300 24.7804757059706
+664200 24.8514730091124
+665100 24.9157328952387
+666000 24.9737671042387
+666900 25.0267374058175
+667800 25.0753510155839
+668700 25.1201662827314
+669600 25.1616431738877
+670500 25.2001676879381
+671400 25.2360675203911
+672300 25.26962326726
+673200 25.3010768687054
+674100 26.471452062043
+675000 26.7671358913054
+675900 26.9507199588532
+676800 27.0846479228758
+677700 27.1903548310017
+678600 27.2779011170689
+679500 27.3528162987396
+680400 27.4184303185159
+681300 27.4768789736791
+682200 27.5296050874398
+683100 27.5776300487448
+684000 27.6217085086631
+684900 27.6624196111414
+685800 27.7002223371539
+686700 27.7354899921605
+687600 27.7685323098384
+688500 27.7996100613833
+689400 27.8289450434338
+690300 27.8567271612384
+691200 27.8831196509624
+692100 27.9082630881992
+693000 27.9322785911117
+693900 27.9552704789941
+694800 27.9773285523868
+695700 26.8318381592988
+696600 26.5982620067175
+697500 26.4678973637235
+698400 26.3816439753324
+699300 26.3180417283694
+700200 26.2713393343634
+701100 26.235170408096
+702000 26.2064238071934
+702900 26.1831665402801
+703800 26.1641037087961
+704700 26.1483267337372
+705600 26.1351755184394
+706500 26.1241569402243
+707400 26.1148940313319
+708300 26.1070929724645
+709200 26.1005209288095
+710100 26.0949907424424
+711000 26.0903501002539
+711900 26.0864737035439
+712800 26.0832574989469
+713700 26.0806143549284
+714600 26.0784707713557
+715500 26.0767643401343
+716400 26.0754417605456
+717300 24.1896760783312
+718200 23.9726730664525
+719100 23.8561531196218
+720000 23.7811403234253
+720900 23.7274468114265
+721800 23.686471491478
+722700 23.6538237982507
+723600 23.6269884956404
+724500 23.6044043619729
+725400 23.5850431351642
+726300 23.5681957826797
+727200 23.5533551152997
+728100 23.5401472311777
+729000 23.5282894536929
+729900 23.5168126049236
+730800 23.5070232246294
+731700 23.4981046173193
+732600 23.4899107728643
+733500 23.482340643106
+734400 23.4753147989553
+735300 23.4687683681753
+736200 23.4626473273287
+737100 23.4569061031486
+738000 23.451505871952
+738900 25.1828258440549
+739800 25.4611980011494
+740700 25.6097807152831
+741600 25.7069282464762
+742500 25.7769331047385
+743400 25.8304291579081
+744300 25.8729706537061
+745200 25.9093910448373
+746100 25.9385502041626
+747000 25.9632883010528
+747900 25.9846383302285
+748800 26.0033043816288
+749700 26.0197986796094
+750600 26.034506618425
+751500 26.047725245517
+752400 26.0596879622684
+753300 26.0705811273643
+754200 26.0805555885042
+755100 26.0897349021629
+756000 26.0982213217935
+756900 26.1061002436796
+757800 26.1134435633738
+758700 26.1203122477791
+759600 26.1267583327381
+760500 29.5137492853725
+761400 30.0966302615139
+762300 30.4211578078571
+763200 30.6406183768191
+764100 30.8039952744258
+765000 30.9329641102529
+765900 31.0388935489111
+766800 31.128403072638
+767700 31.2056464740738
+768600 31.2733931081498
+769500 31.333586033024
+770400 31.3876470136215
+771300 31.4366509707409
+772200 31.4814302532761
+773100 31.5226400065289
+774000 31.5608014089657
+774900 31.5963319861124
+775800 31.6295680993056
+776700 31.6607824026535
+777600 31.690197766196
+778500 31.7179984658197
+779400 31.7443391019465
+780300 31.7693515729441
+781200 31.7931503902345
+782100 25.6384326812895
+783000 24.9859796391952
+783900 24.6495276544121
+784800 24.4333727064251
+785700 24.2809424608936
+786600 24.1664402133402
+787500 24.0766474256395
+788400 24.0039998536498
+789300 23.9438120256688
+790200 23.8930050779079
+791100 23.8494611556081
+792000 23.8116692290006
+792900 23.7785184972274
+793800 23.7491717711563
+794700 23.7229846435838
+795600 23.699452088704
+796500 23.6781721308877
+797400 23.6588204862388
+798300 23.6411324590751
+799200 23.6248897553705
+800100 23.6099107029836
+801000 23.5960428797698
+801900 23.5831574746409
+802800 23.5711449166296
+803700 21.8055239105481
+804600 21.4754169547779
+805500 21.2846403587259
+806400 21.150942118842
+807300 21.0483510336566
+808200 20.9652943986487
+809100 20.8956186628477
+810000 20.8356684205322
+810900 20.783098705469
+811800 20.7363171825274
+812700 20.6941939871707
+813600 20.6558987584749
+814500 20.6208034618783
+815400 20.58842158478
+816300 20.5583685526165
+817200 20.5303350860987
+818100 20.5040687487903
+819000 20.4793608444168
+819900 20.4560369050262
+820800 20.4339496477688
+821700 20.4129736654186
+822600 20.3930013583418
+823500 20.3739397714131
+824400 20.3557081016739
+825300 20.3382357109913
+826200 20.3214605245951
+827100 20.3053277285714
+828000 20.2897887019463
+828900 20.2748001349745
+829800 20.2603232967198
+830700 20.2457781757508
+831600 20.2321495221067
+832500 20.2189845280177
+833400 20.2062309884873
+834300 20.1938564509653
+835200 20.1818352685198
+836100 20.1701455750305
+837000 20.1587681243666
+837900 20.1476856930433
+838800 20.1368827107811
+839700 20.126345003821
+840600 20.116059602625
+841500 20.1060145903389
+842400 20.0961989791302
+843300 20.0866026067743
+844200 20.0772160486827
+845100 20.0680305421866
+846000 20.0590379208595
+846900 20.0502305572671
+847800 20.0416013129089
+848700 20.0331434943728
+849600 20.0248508148785
+850500 20.0167173605112
+851400 20.0087375605184
+852300 20.000906161119
+853200 19.9932182023232
+854100 19.9856689973155
+855000 19.9782541140016
+855900 19.9709693583669
+856800 19.9638107593439
+857700 19.9567745549255
+858600 19.9498571793118
+859500 19.9430552509139
+860400 19.9363655610776
+861300 19.9297850634235
+862200 19.9233108637272
+863100 19.9169402102915
+864000 19.9106704847753
+864900 19.904499193465
+865800 19.8984239589823
+866700 19.892442512426
+867600 19.886552685954
+868500 19.880752405808
+869400 19.8750396857852
+870300 19.8694126211556
+871200 19.8638693830224
+872100 19.858408213117
+873000 19.8530274190176
+873900 19.8477253697734
+874800 19.842500491918
+875700 19.8373512658468
+876600 19.8322762225347
+877500 19.8272739405686
+878400 19.8223430434671
+879300 19.8174821972598
+880200 19.8126901083006
+881100 19.8079655212868
+882000 19.8033072174626
+882900 19.7987140129806
+883800 19.7941847574018
+884700 19.7897183323144
+885600 19.7853136500535
+886500 19.780969652507
+887400 19.776685309994
+888300 19.7724596202038
+889200 19.7682916071875
+890100 19.7641803203915
+891000 19.7601248337294
+891900 19.756124244685
+892800 19.7521776734437
+893700 19.7482842620489
+894600 19.7444431735819
+895500 19.7406535913636
+896400 19.7369147181771
+897300 19.7332257755122
+898200 19.7295860028306
+899100 19.7259946568526
+9e+05 19.7224510108666
+900900 19.7189543540607
+901800 19.715503990878
+902700 19.7120992403962
+903600 19.7087394357305
+904500 19.7054239234635
+905400 19.7021520630985
+906300 19.6989232265385
+907200 19.6957367975917
+908100 19.6925921715012
+909000 19.6894887544998
+909900 19.6864259633892
+910800 19.683403225145
+911700 19.6804199765425
+912600 19.6774756638066
+913500 19.6745697422841
+914400 19.6717016761363
+915300 19.6688709380507
+916200 19.6660770089739
+917100 19.6633193778611
+918000 19.660597541443
+918900 19.6579110040089
+919800 19.6552592772043
+920700 19.6526418798436
+921600 19.6500583377343
+922500 19.6475081835146
+923400 19.6449909565017
+924300 19.6425062025498
+925200 19.6400534739181
+926100 19.6376323291479
+927000 19.6352423329461
+927900 19.6328830560773
+928800 19.630554075261
+929700 19.6282549730762
+930600 19.6259853378696
+931500 19.6237447636699
+932400 19.6215328501053
+933300 19.6193492023255
+934200 19.6171934309266
+935100 19.6150651518792
+936000 19.6129639864587
+936900 19.610889561179
+937800 19.6088415077273
+938700 19.6068194629001
+939600 19.6048230685431
+940500 19.6028519714896
+941400 19.6009058235025
+942300 19.5989842812155
+943200 19.5970870060768
+944100 19.5952136642923
+945000 19.5933639267702
+945900 19.5915374690659
+946800 19.5897339713273
+947700 19.5879531182416
+948600 19.5861945989807
+949500 19.5844581071483
+950400 19.5827433407273
+951300 19.5810500020267
+952200 19.5793777976293
+953100 19.5777264383396
+954000 19.5760956391319
+954900 19.5744851190991
+955800 19.5728946014002
+956700 19.5713238132101
+957600 19.5697724856684
+958500 19.5682403538283
+959400 19.5667271566065
+960300 19.5652326367331
+961200 19.5637565407008
+962100 19.5622986187167
+963000 19.5608586246515
+963900 19.5594363159911
+964800 19.5580314537877
+965700 19.5566438026112
+966600 19.5552731305014
+967500 19.5539192089196
+968400 19.5525818127016
+969300 19.5512607200107
+970200 19.5499557122903
+971100 19.5486665742183
+972000 19.547393093661
+972900 19.5461350616273
+973800 19.5448922722238
+974700 19.5436645226101
+975600 19.5424516129544
+976500 19.5412533463898
+977400 19.540069528971
+978300 19.538899969631
+979200 19.5377444801393
+980100 19.536602875059
+981000 19.5354749717061
+981900 19.534360590108
+982800 19.5332595529628
+983700 19.5321716855996
+984600 19.5310968159385
+985500 19.5300347744515
+986400 19.5289853941239
+987300 19.5279485104161
+988200 19.5269239612258
+989100 19.5259115868507
+990000 19.5249112299517
+990900 19.523922735517
+991800 19.5229459508262
+992700 19.5219807254141
+993600 19.5210269110371
+994500 19.5200843616383
+995400 19.5191529333134
+996300 19.5182324842776
+997200 19.5173228748325
+998100 19.5164239673338
+999000 19.5155356261591
+999900 19.5146577176764
+1000800 19.5137901102131
+1001700 19.5129326740254
+1002600 19.5120852812677
+1003500 19.5112478059635
+1004400 19.5104201239758
+1005300 19.5096021129782
+1006200 19.5087936524262
+1007100 19.5079946235301
+1008000 19.5072049092268
+1008900 19.5064243941522
+1009800 19.5056529646158
+1010700 19.5048905085731
+1011600 19.5041369156003
+1012500 19.5033920768687
+1013400 19.5026558851195
+1014300 19.5019282346393
+1015200 19.5012090212354
+1016100 19.5004981422124
+1017000 19.4997954963477
+1017900 19.4991009838697
+1018800 19.4984145064334
+1019700 19.4977359670995
+1020600 19.497065270311
+1021500 19.4964023218721
+1022400 19.4957470289268
+1023300 19.4950992999378
+1024200 19.4944590446654
+1025100 19.4938261741476
+1026000 19.4932006006801
+1026900 19.492582237796
+1027800 19.4919710002467
+1028700 19.4913668039832
+1029600 19.4907695661367
+1030500 19.4901792050003
+1031400 19.4895956400112
+1032300 19.4890187917321
+1033200 19.4884485818344
+1034100 19.4878849330803
+1035000 19.4873277693062
+1035900 19.4867770154057
+1036800 19.4862325973133
+1037700 19.485694441988
+1038600 19.4851624773975
+1039500 19.484636632503
+1040400 19.484116837243
+1041300 19.4836030225185
+1042200 19.4830951201783
+1043100 19.4825930630042
+1044000 19.4820967846964
+1044900 19.4816062198599
+1045800 19.4811213039895
+1046700 19.4806419734572
+1047600 19.480168165498
+1048500 19.479699818197
+1049400 19.4792368704761
+1050300 19.4787792620813
+1051200 19.4783269335698
+1052100 19.4778798262982
+1053000 19.4774378824095
+1053900 19.4770010448217
+1054800 19.4765692572161
+1055700 19.4761424640246
+1056600 19.4757206104196
+1057500 19.475303642302
+1058400 19.4748915062903
+1059300 19.4744841497098
+1060200 19.474081520582
+1061100 19.4736835676139
+1062000 19.4732902401876
+1062900 19.4729014883506
+1063800 19.4725172628047
+1064700 19.4721375148979
+1065600 19.471762196613
+1066500 19.4713912605593
+1067400 19.4710246599621
+1068300 19.4706623486548
+1069200 19.4703042810688
+1070100 19.4699504122249
+1071000 19.4696006977247
+1071900 19.4692550937415
+1072800 19.4689135570124
+1073700 19.4685760448296
+1074600 19.4682425150323
+1075500 19.4679129259985
+1076400 19.467587236637
+1077300 19.4672654063798
+1078200 19.4669473951743
+1079100 19.4666331634758
+1080000 19.4663226722401
+1080900 19.4660158829155
+1081800 19.4657127574366
+1082700 19.4654132582167
+1083600 19.4651173481406
+1084500 19.4648249905582
+1085400 19.4645361492775
+1086300 19.4642507885575
+1087200 19.4639688731027
+1088100 19.4636903680559
+1089000 19.4634152389918
+1089900 19.4631434519112
+1090800 19.4628749732343
+1091700 19.4626097697956
+1092600 19.4623478088366
+1093500 19.4620890580015
+1094400 19.4618334853302
+1095300 19.4615810592531
+1096200 19.4613317485856
+1097100 19.4610855225225
+1098000 19.4608423506328
+1098900 19.4606022028542
+1099800 19.4603650494876
+1100700 19.4601308611928
+1101600 19.4598996089823
+1102500 19.4596712642176
+1103400 19.4594457986031
+1104300 19.4592231841819
+1105200 19.4590033933308
+1106100 19.4587863987559
+1107000 19.4585721734878
+1107900 19.4583606908768
+1108800 19.4581519245886
+1109700 19.4579458486006
+1110600 19.4577424371961
+1111500 19.4575416649613
+1112400 19.4573435067809
+1113300 19.4571479378332
+1114200 19.4569549335869
+1115100 19.4567644697967
+1116000 19.4565765224993
+1116900 19.4563910680097
+1117800 19.4562080829173
+1118700 19.4560275440822
+1119600 19.4558494286313
+1120500 19.4556737139549
+1121400 19.455500377703
+1122300 19.4553293977816
+1123200 19.4551607523496
+1124100 19.4549944198147
+1125000 19.4548303788313
+1125900 19.4546686082955
+1126800 19.4545090873432
+1127700 19.4543517953459
+1128600 19.4541967119082
+1129500 19.4540438168645
+1130400 19.4538930902755
+1131300 19.4537445124258
+1132200 19.4535980638201
+1133100 19.4534537251812
+1134000 19.4533114774464
+1134900 19.453171301765
+1135800 19.4530331794951
+1136700 19.4528970922013
+1137600 19.4527630216517
+1138500 19.4526309498151
+1139400 19.4525008588587
+1140300 19.452372731145
+1141200 19.4522465492299
+1142100 19.4521222958593
+1143000 19.4519999539674
+1143900 19.4518795066739
+1144800 19.4517609372811
+1145700 19.4516442292726
+1146600 19.4515293663097
+1147500 19.4514163322303
+1148400 19.4513051110454
+1149300 19.4511956869377
+1150200 19.4510880442594
+1151100 19.4509821675292
+1152000 19.4508780414311
+1152900 19.4507756508116
+1153800 19.4506749806778
+1154700 19.4505760161957
+1155600 19.4504787426877
+1156500 19.4503831456307
+1157400 19.4502892106541
+1158300 19.4501969235383
+1159200 19.450106270212
+1160100 19.4500172367513
+1161000 19.4499298093767
+1161900 19.4498439744523
+1162800 19.4497597184833
+1163700 19.4496770281146
+1164600 19.4495958901289
+1165500 19.4495162914449
+1166400 19.4494382191159
+1167300 19.4493616603273
+1168200 19.4492866023963
+1169100 19.4492130327688
+1170000 19.4491409390186
+1170900 19.4490703088459
+1171800 19.4490011300752
+1172700 19.4489333906542
+1173600 19.448867078652
+1174500 19.4488021822578
+1175400 19.4487386897793
+1176300 19.448676589641
+1177200 19.4486158703835
+1178100 19.4485565206612
+1179000 19.4484985292414
+1179900 19.448441885003
+1180800 19.4483865769347
+1181700 19.4483325941341
+1182600 19.4482799258062
+1183500 19.4482285612619
+1184400 19.4481784899173
+1185300 19.4481297012916
+1186200 19.4480821850067
+1187100 19.4480359307853
+1188000 19.4479909284501
+1188900 19.4479471679226
+1189800 19.4479046392215
+1190700 19.447863332462
+1191600 19.4478232378544
+1192500 19.4477843457031
+1193400 19.4477466464051
+1194300 19.4477101304494
+1195200 19.447674788416
+1196100 19.4476406109741
+1197000 19.4476075888814
+1197900 19.4475757129836
+1198800 19.4475449742125
+1199700 19.4475153635855
+1200600 19.4474868722046
+1201500 19.447459491255
+1202400 19.4474332120047

+ 4 - 0
connector-fetch-drutes/src/test/resources/data/340260001/current/predict.times

@@ -0,0 +1,4 @@
+# sensor data from:
+2022-03-08 20:00:00+01
+# meteo data from
+2022-03-08 23:00:00

+ 0 - 0
connector-fetch-drutes/src/test/resources/predictions/4151559_20220301/sensors.success → connector-fetch-drutes/src/test/resources/data/340260001/current/sensors.success


+ 1338 - 0
connector-fetch-drutes/src/test/resources/data/340260002/current/340260002.predict

@@ -0,0 +1,1338 @@
+# time [s]     T [dg. C] 
+0 24.600006
+900 24.6109594530345
+1800 24.6467107654106
+2700 24.6820329611143
+3600 24.7120377764949
+4500 24.6897026794641
+5400 24.5501184413752
+6300 24.4017951076613
+7200 24.2720206258905
+8100 24.1189051630016
+9000 23.870768464496
+9900 23.6160131787784
+10800 23.3832812334285
+11700 23.1612316541493
+12600 22.9244951609091
+13500 22.6977559565898
+14400 22.4889582220785
+15300 22.3088415272527
+16200 22.1717539994626
+17100 22.0545382759109
+18000 21.9480699903332
+18900 21.8382941763727
+19800 21.7081326966255
+20700 21.5796610285002
+21600 21.4597995749367
+22500 21.3379850707598
+23400 21.1976182800551
+24300 21.0601543209712
+25200 20.9322372434602
+26100 20.8030072984553
+27000 20.6536851797842
+27900 20.5051835928373
+28800 20.3649595234942
+29700 20.2296815337608
+30600 20.0923900674597
+31500 19.9608221861271
+32400 19.8372383298125
+33300 19.7559953980352
+34200 19.7650652575005
+35100 19.7938195811255
+36000 19.8184885373348
+36900 19.8623045533466
+37800 19.9602944920584
+38700 20.0585805490026
+39600 20.1421895257659
+40500 20.2346996387216
+41400 20.3661920814575
+42300 20.4902741366903
+43200 20.5961074002405
+44100 20.7017135584246
+45000 20.8284701997412
+45900 20.9448218610417
+46800 21.0445310298113
+47700 21.1610176408037
+48600 21.3267894997093
+49500 21.4807765185175
+50400 21.6118933673563
+51300 21.7568433424124
+52200 21.9472318641904
+53100 22.1198617399496
+54000 22.2658923788691
+54900 22.4707149313149
+55800 22.7946552216689
+56700 23.0878639169715
+57600 23.3316374342259
+58500 23.5239268667294
+59400 23.6666377275576
+60300 23.7870875698605
+61200 23.893285767705
+62100 23.9929929401978
+63000 24.0912745768141
+63900 24.1805127516105
+64800 24.2606053782267
+65700 24.3549916273839
+66600 24.4793430965793
+67500 24.5933455109074
+68400 24.6922951660183
+69300 24.8042154708765
+70200 24.948314126707
+71100 25.0789548510932
+72000 25.1913056391802
+72900 25.2378576714956
+73800 25.1876822899663
+74700 25.1385394298187
+75600 25.1053116275342
+76500 25.087473483424
+77400 25.0828599841972
+78300 25.0842956643458
+79200 25.0892305973008
+80100 25.0787495976125
+81000 25.0401080201394
+81900 25.0061769364826
+82800 24.9812224793655
+83700 24.941384171807
+84600 24.8689276519466
+85500 24.8044667675029
+86400 24.7532154916437
+87300 24.6844000464043
+88200 24.5728141154628
+89100 24.4712682460326
+90000 24.3875025605155
+90900 24.3080724199799
+91800 24.2211717406295
+92700 24.1447479955996
+93600 24.0803225115394
+94500 24.0110043234526
+95400 23.9228896944183
+96300 23.8429982694076
+97200 23.7749616176504
+98100 23.6799258857269
+99000 23.5262336810586
+99900 23.3837743847727
+100800 23.2633726147301
+101700 23.1345749989198
+102600 22.9702236038571
+103500 22.8201126472721
+104400 22.6914483982603
+105300 22.5460961345853
+106200 22.3482017782779
+107100 22.1635783332092
+108000 22.0036744450218
+108900 21.848167191664
+109800 21.6765054987131
+110700 21.5194367085756
+111600 21.3813561490527
+112500 21.2538658397008
+113400 21.1286578057699
+114300 21.0148461531853
+115200 20.9128496611989
+116100 20.8116155568217
+117000 20.7008686388438
+117900 20.5977001566605
+118800 20.5047391984542
+119700 20.4195574847969
+120600 20.3395902882451
+121500 20.2660590339784
+122400 20.1984749588304
+123300 20.1456747629317
+124200 20.1168978033812
+125100 20.0921018037221
+126000 20.0663354987784
+126900 20.0666426827406
+127800 20.1238936792371
+128700 20.1835829672434
+129600 20.2322200146875
+130500 20.287256203084
+131400 20.3693835382889
+132300 20.4454542188379
+133200 20.5086241212821
+134100 20.5771396147117
+135000 20.6707172372836
+135900 20.7572382199227
+136800 20.8304212812449
+137700 20.922920096956
+138600 21.0692230706783
+139500 21.2086774781824
+140400 21.3284704341689
+141300 21.4498270100736
+142200 21.5949942376193
+143100 21.7276750232081
+144000 21.8418797440514
+144900 21.9696345347884
+145800 22.1404571178953
+146700 22.2983911459696
+147600 22.4341345782806
+148500 22.5763692620411
+149400 22.7507369113602
+150300 22.9098495883679
+151200 23.0469579017755
+152100 23.1757970475127
+153000 23.3093883687861
+153900 23.4300779632378
+154800 23.5361994809313
+155700 23.620101299293
+156600 23.6748999126566
+157500 23.7219053239318
+158400 23.7662467478238
+159300 23.8082711809121
+160200 23.8478844009493
+161100 23.8855732574785
+162000 23.9214658966574
+162900 23.9897227586825
+163800 24.1171400997957
+164700 24.2383154322359
+165600 24.3425240945872
+166500 24.4071133451901
+167400 24.4177175543723
+168300 24.4234996275756
+169200 24.4331703999733
+170100 24.4011903766911
+171000 24.2953774639727
+171900 24.1992666636261
+172800 24.1243379772057
+173700 24.029783560256
+174600 23.8806929948795
+175500 23.7450438498413
+176400 23.633099034429
+177300 23.5430299347557
+178200 23.4721088754974
+179100 23.4136691031288
+180000 23.3645262582452
+180900 23.2597703618218
+181800 23.0440716544234
+182700 22.8380580968222
+183600 22.6634226367286
+184500 22.4905931381067
+185400 22.2826726715545
+186300 22.0907911916946
+187200 21.9244483482542
+188100 21.7623609903962
+189000 21.5832075668269
+189900 21.4191066645063
+190800 21.2747927665896
+191700 21.1311070574284
+192600 20.9675537222609
+193500 20.8144506889147
+194400 20.6775541827488
+195300 20.5503391792132
+196200 20.4268603470825
+197100 20.3151145900853
+198000 20.2150353807616
+198900 20.121674941656
+199800 20.030825626066
+200700 19.9473536438082
+201600 19.8713037506061
+202500 19.7882369686532
+203400 19.6852534522543
+204300 19.5876657564932
+205200 19.4999113912237
+206100 19.4171756278761
+207000 19.334371892791
+207900 19.2576028928116
+208800 19.1874229750192
+209700 19.1602170007797
+210600 19.2117512623796
+211500 19.2677029220878
+212400 19.3113661778764
+213300 19.3722895866258
+214200 19.4834743443693
+215100 19.5889212688369
+216000 19.676713916287
+216900 19.7667620479113
+217800 19.8807654321194
+218700 19.9846657838872
+219600 20.0722923630747
+220500 20.1673771474711
+221400 20.2911300333786
+222300 20.4028635089762
+223200 20.4964520528223
+224100 20.5744446844855
+225000 20.6399075483029
+225900 20.6953333125697
+226800 20.7426375982318
+227700 20.7832955010623
+228600 20.8184648912495
+229500 20.8490791059485
+230400 20.8758983716483
+231300 20.8995505308906
+232200 20.9206922100701
+233100 20.9399020507848
+234000 20.9576963469416
+234900 20.9745437635935
+235800 20.9908570014386
+236700 21.0069695090018
+237600 21.0231045117112
+238500 21.0393499659262
+239400 21.0556572352099
+240300 21.0718733710831
+241200 21.0877977567993
+242100 21.2374720935592
+243000 21.6525906368662
+243900 22.0614492329298
+244800 22.4094064600615
+245700 22.7009171452132
+246600 22.9472972940443
+247500 23.1584149786741
+248400 23.3418157174783
+249300 23.5031336905937
+250200 23.6465994100899
+251100 23.7754367662684
+252000 23.8921446683518
+252900 23.9986910327245
+253800 24.0966447551029
+254700 24.1872649194385
+255600 24.2715618215862
+256500 24.3503414491947
+257400 24.4242423676411
+258300 24.4937703000114
+259200 24.559331391433
+260100 24.6212619698355
+261000 24.6798519761971
+261900 24.7353607665697
+262800 24.7880260512691
+263700 24.7063283201464
+264600 24.3078555220468
+265500 23.8658190618428
+266400 23.4660189893931
+267300 23.1176690203377
+268200 22.8150615199045
+269100 22.5505699151816
+270000 22.3173807966565
+270900 22.1099296680524
+271800 21.9238069554776
+272700 21.7555556873616
+273600 21.6024672302038
+274500 21.4624051681543
+275400 21.3336648056037
+276300 21.2148660935385
+277200 21.1048739754324
+278100 21.0027398169944
+279000 20.9076586226923
+279900 20.8189355234373
+280800 20.7358906367397
+281700 20.6580465589301
+282600 20.5849888509573
+283500 20.5162983718569
+284400 20.4515953861536
+285300 20.3770050401804
+286200 20.2824474439004
+287100 20.1940287895392
+288000 20.1155905017579
+288900 20.0458013293771
+289800 19.9830393152158
+290700 19.9260041680892
+291600 19.8737105074647
+292500 19.8254098360524
+293400 19.7805241270848
+294300 19.738598289886
+295200 19.6992672760008
+296100 19.6622332665761
+297000 19.6272496278116
+297900 19.594109421529
+298800 19.5626370203286
+299700 19.5326818737721
+300600 19.5041137915184
+301500 19.4768193154457
+302400 19.4506988871894
+303300 19.4256646063547
+304200 19.4016384342154
+305100 19.3785507382778
+306000 19.356339101171
+306900 19.4040893373652
+307800 19.6214934804555
+308700 19.8673981464385
+309600 20.094225701762
+310500 20.2949160987852
+311400 20.4710837301112
+312300 20.6265163994895
+313200 20.7646801315529
+314100 20.8884470384074
+315000 21.0001685394683
+315900 21.1017563722625
+316800 21.194758907618
+317700 21.2804274277216
+318600 21.3597722577537
+319500 21.4336102016003
+320400 21.5026045368965
+321300 21.5672983061655
+322200 21.6281413966869
+323100 21.6855358497913
+324000 21.7398118447752
+324900 21.791202937226
+325800 21.8399501485311
+326700 21.8862754751867
+327600 21.9303764923044
+328500 22.0666760221478
+329400 22.395472752145
+330300 22.724623064988
+331200 23.0101876394913
+332100 23.2538178725603
+333000 23.4633663437517
+333900 23.6459930381047
+334800 23.8072768407185
+335700 23.9514081462413
+336600 24.0815049812741
+337500 24.1998895635355
+338400 24.3083124863223
+339300 24.4081272325468
+340200 24.5004162848118
+341100 24.5860742137393
+342000 24.6658584282648
+342900 24.7404194441991
+343800 24.8103199273833
+344700 24.8760481402356
+345600 24.9380285929921
+346500 24.9966310678858
+347400 25.0521784358525
+348300 25.1049534166652
+349200 25.1552043695014
+350100 25.0802123801568
+351000 24.7357953059914
+351900 24.3766670716371
+352800 24.0674749821593
+353700 23.8087991506299
+354600 23.5917979082516
+355500 23.4079447173591
+356400 23.250446658273
+357300 23.114106148983
+358200 22.9949599238263
+359100 22.8899603701147
+360000 22.796734941448
+360900 22.7134120698576
+361800 22.6384962728543
+362700 22.5707781552636
+363600 22.5092689046696
+364500 22.4531219892966
+365400 22.4016206915482
+366300 22.3542728577914
+367200 22.3106090143157
+368100 22.270212109861
+369000 22.2327234635207
+369900 22.1978350931745
+370800 22.1652814188809
+371700 22.0519827120874
+372600 21.7397821523155
+373500 21.3973212450703
+374400 21.0800708345315
+375300 20.7953135194471
+376200 20.5403361882413
+377100 20.3108465061457
+378000 20.1028704383266
+378900 19.9131041627158
+379800 19.7388822684506
+380700 19.5780646126398
+381600 19.428923300924
+382500 19.2900491672215
+383400 19.1602791733331
+384300 19.038595279289
+385200 18.9241003096574
+386100 18.816215290234
+387000 18.7143606966697
+387900 18.6180012921715
+388800 18.526662398693
+389700 18.4399237123577
+390600 18.3574111886392
+391500 18.2787901986377
+392400 18.2037601130584
+393300 18.2549160297802
+394200 18.5767552432014
+395100 18.9245252633657
+396000 19.2318509036981
+396900 19.493942454102
+397800 19.7171652556188
+398700 19.908881966972
+399600 20.0754056560727
+400500 20.2217386871907
+401400 20.351713298102
+402300 20.4682132851922
+403200 20.573399330426
+404100 20.6689101103388
+405000 20.7560228481383
+405900 20.8357679763081
+406800 20.9090035714977
+407700 20.9764608304555
+408600 21.0388020052166
+409500 21.096598693652
+410400 21.1502652201761
+411300 21.2002149497487
+412200 21.2468238906358
+413100 21.2904228213425
+414000 21.3313018879548
+414900 21.485857203052
+415800 21.8921250894814
+416700 22.31152244571
+417600 22.6820010594058
+418500 23.0029409237597
+419400 23.2827965933622
+420300 23.5292907717822
+421200 23.7482891673756
+422100 23.9442959096828
+423000 24.1209300338975
+423900 24.2811729135531
+424800 24.4274952573687
+425700 24.5619428505883
+426600 24.6862047093153
+427500 24.8016678726572
+428400 24.9094624149712
+429300 25.0105019686746
+430200 25.1055235577343
+431100 25.1951267766983
+432000 25.2798093984063
+432900 25.359996218732
+433800 25.4360597623807
+434700 25.5083335996276
+435600 25.5771202259911
+436500 25.5168493249069
+437400 25.1309750098936
+438300 24.6772691781892
+439200 24.2506760642544
+440100 23.8679898419845
+441000 23.527881646181
+441900 23.2251928140188
+442800 22.9545261184209
+443700 22.7111219077615
+444600 22.4909866586983
+445500 22.2908187661375
+446400 22.1078929809593
+447300 21.9399509436932
+448200 21.7851094836875
+449100 21.6417871535601
+450000 21.5086463548569
+450900 21.3845479569198
+451800 21.2685156617551
+452700 21.1597078881934
+453600 21.0573954352474
+454500 20.9609435863677
+455400 20.8697976333456
+456300 20.7834710447565
+457200 20.7015356937631
+458100 20.5908932737656
+459000 20.4076153630228
+459900 20.2186000481755
+460800 20.0441233849691
+461700 19.886001021834
+462600 19.742522936187
+463500 19.6115729789803
+464400 19.4912734052058
+465300 19.3800738521423
+466200 19.2767150969681
+467100 19.1801730494771
+468000 19.0896084643122
+468900 19.0043268528861
+469800 18.923747704385
+470700 18.8473810908952
+471600 18.7748098594608
+472500 18.7056743687118
+473400 18.6396051551712
+474300 18.576363596567
+475200 18.5157613643831
+476100 18.4575956666668
+477000 18.4016798298939
+477900 18.3478476080931
+478800 18.2959515398712
+479700 18.4154014373272
+480600 18.8828456568855
+481500 19.3573306253135
+482400 19.7619389980584
+483300 20.0992131629902
+484200 20.3820568345144
+485100 20.6221423366335
+486000 20.8284937339831
+486900 21.0078672891135
+487800 21.1653276715957
+488700 21.304723154007
+489600 21.4290314324093
+490500 21.5406003210842
+491400 21.6413129013234
+492300 21.732701430812
+493200 21.8160274348609
+494100 21.89233953949
+495000 21.9625163977352
+495900 22.0272993275416
+496800 22.087317604625
+497700 22.1431083494197
+498600 22.1951323390085
+499500 22.243786693544
+500400 22.2894151357479
+501300 22.4550379958415
+502200 22.8898063683885
+503100 23.3402826978926
+504000 23.739452379045
+504900 24.085642943228
+505800 24.3872117051279
+506700 24.6524045552293
+507600 24.8878831779014
+508500 25.0988653844763
+509400 25.2894586035354
+510300 25.4629312843372
+511200 25.62190617092
+512100 25.7684968390005
+513000 25.9044083007538
+513900 26.0310167284281
+514800 26.1494369387729
+515700 26.2605806064393
+516600 26.3652048876317
+517500 26.4639506529369
+518400 26.5573706758845
+519300 26.6459493710411
+520200 26.7301162201457
+521100 26.8102548756329
+522000 26.8867094462013
+522900 26.8274928631274
+523800 26.4644227225304
+524700 26.0738367367206
+525600 25.7324409808193
+526500 25.4444627702133
+527400 25.2019142044763
+528300 24.9962012023001
+529200 24.8201743445311
+530100 24.6682150634337
+531000 24.5359552500833
+531900 24.4199851971675
+532800 24.3176186261571
+533700 24.2267161683514
+534600 24.1455552913723
+535500 24.0727345657922
+536400 24.0071027508466
+537300 23.9476735168291
+538200 23.8936039297825
+539100 23.8443069907241
+540000 23.7992346614885
+540900 23.7579003406543
+541800 23.7198837654211
+542700 23.6848228449919
+543600 23.6524046994076
+544500 23.5397197874161
+545400 23.2346554459365
+546300 22.9068481723845
+547200 22.6082477082006
+548100 22.3440785167198
+549000 22.110612305124
+549900 21.9030357029734
+550800 21.7170770603269
+551700 21.5492368195324
+552600 21.3967032280914
+553500 21.2572177679435
+554400 21.1289541005235
+555300 21.0104217744733
+556200 20.9003925422899
+557100 20.7978445653957
+558000 20.7019201122434
+558900 20.6118932743317
+559800 20.5271451029198
+560700 20.4471442651568
+561600 20.3714318355896
+562500 20.2996092139369
+563400 20.2313284295364
+564300 20.1662842865584
+565200 20.1042079437595
+566100 20.1396800936999
+567000 20.4029634806644
+567900 20.7014451003019
+568800 20.9735169577777
+569700 21.2113031242304
+570600 21.4178832978822
+571500 21.5980289161511
+572400 21.7561467514657
+573300 21.8959066521878
+574200 22.0202793034118
+575100 22.1316577541504
+576000 22.2319772640839
+576900 22.3228142832314
+577800 22.4054637660793
+578700 22.4810116176432
+579600 22.5504334380461
+580500 22.6144105468399
+581400 22.6735393600666
+582300 22.7283611295062
+583200 22.7793473348141
+584100 22.826905851694
+585000 22.8713900916598
+585900 22.9131073899384
+586800 22.9523260939729
+587700 23.1389884752508
+588600 23.6422724252346
+589500 24.1508281139649
+590400 24.5921824390438
+591300 24.9682439563578
+592200 25.2908554344767
+593100 25.5708660605426
+594000 25.8167349284692
+594900 26.034876242347
+595800 26.23019163559
+596700 26.4064910067549
+597600 26.5667840443691
+598500 26.7134771632361
+599400 26.8485096724998
+600300 26.9734530203238
+601200 27.0895876318574
+602100 27.197964853077
+603000 27.2994572064959
+603900 27.3947983210898
+604800 27.4846136407353
+605700 27.5694433181681
+606600 27.6497589116345
+607500 27.7259754377863
+608400 27.7984600871456
+609300 27.7447410791623
+610200 27.4390395877372
+611100 27.1352828270122
+612000 26.8845093404366
+612900 26.6823665867928
+613800 26.5186183517325
+614700 26.3845077304606
+615600 26.2731825512794
+616500 26.1799112983803
+617400 26.1011753027594
+618300 26.0341907952295
+619200 25.9768055633662
+620100 25.9273449421412
+621000 25.8844897877358
+621900 25.8471879710005
+622800 25.8145906093818
+623700 25.7860056666615
+624600 25.7608637226414
+625500 25.7386923570273
+626400 25.7190967134757
+627300 25.7017445611476
+628200 25.6863546754891
+629100 25.6726877017407
+630000 25.6605388990793
+630900 25.5307478916924
+631800 25.1128598999648
+632700 24.6525976547587
+633600 24.2299123871657
+634500 23.8548564628708
+635400 23.5232157377554
+636300 23.2285928879765
+637200 22.9650825437009
+638100 22.7277523567483
+639000 22.5125920067903
+639900 22.3163540947793
+640800 22.1363974915487
+641700 21.9705578604241
+642600 21.817046337281
+643500 21.6743716172682
+644400 21.5412801862815
+645300 21.4167102707954
+646200 21.2997560899233
+647100 21.1896398589917
+648000 21.0856896620091
+648900 20.9873218051289
+649800 20.8940266233988
+650700 20.8053569739941
+651600 20.7209188383899
+652500 20.7465847701547
+653400 21.0366802864639
+654300 21.3763670781561
+655200 21.691951108307
+656100 21.971679045473
+657000 22.2174183458554
+657900 22.4336676382255
+658800 22.624914487203
+659700 22.7950397976203
+660600 22.9472637611382
+661500 23.0842286046518
+662400 23.208102593597
+663300 23.3206734640094
+664200 23.4234253572595
+665100 23.5176717322143
+666000 23.6044674600993
+666900 23.6846033229854
+667800 23.7588127229793
+668700 23.8277427495578
+669600 23.8919553259067
+670500 23.9519380435459
+671400 24.0081152005103
+672300 24.060857387918
+673200 24.1104895230143
+674100 24.1905695380795
+675000 24.3510159459917
+675900 24.5226224972019
+676800 24.681676262776
+677700 24.8249935081423
+678600 24.953813691867
+679500 25.0701258585563
+680400 25.1758092254357
+681300 25.2724568549471
+682200 25.3613759715516
+683100 25.4436307323577
+684000 25.5200894023125
+684900 25.5914654757093
+685800 25.6583507959648
+686700 25.7212413434052
+687600 25.7805570186368
+688500 25.8366567454907
+689400 25.8898500139809
+690300 25.9404057481821
+691200 25.9885591740747
+692100 26.0345171930682
+693000 26.0784626368306
+693900 26.1205576816585
+694800 26.1609466285332
+695700 26.1651740325341
+696600 26.0837760428546
+697500 25.988752063248
+698400 25.9036118960396
+699300 25.8312640459273
+700200 25.7703430769624
+701100 25.7191223467517
+702000 25.6759405927145
+702900 25.6393759360066
+703800 25.6082783658112
+704700 25.581728339681
+705600 25.5589890316133
+706500 25.5394660523011
+707400 25.5226759740232
+708300 25.5082222933672
+709200 25.4957771520724
+710100 25.4850673867199
+711000 25.4758638060496
+711900 25.4679728773806
+712800 25.4612302212096
+713700 25.4554954735819
+714600 25.4506481922935
+715500 25.4465845670939
+716400 25.4432147549132
+717300 25.375738120057
+718200 25.1804517929303
+719100 24.9893549277182
+720000 24.8278806489788
+720900 24.6933768111895
+721800 24.5803357033255
+722700 24.484080747333
+723600 24.4010607622351
+724500 24.3286250842045
+725400 24.264781229297
+726300 24.2080101942839
+727200 24.1571356440232
+728100 24.1112325749768
+729000 24.0695632203337
+729900 24.031510070529
+730800 23.9965508017407
+731700 23.964346512364
+732600 23.9345741480166
+733500 23.9069487108259
+734400 23.8812273382151
+735300 23.8572031722372
+736200 23.8346991226078
+737100 23.8135627008824
+738000 23.7936618663502
+738900 23.8321150414267
+739800 23.9959532756483
+740700 24.1667396732004
+741600 24.3144226990867
+742500 24.4386316364733
+743400 24.5433790186176
+744300 24.63256977631
+745200 24.7093899172371
+746100 24.7763131390699
+747000 24.8350531782272
+747900 24.8870170022432
+748800 24.9333330345635
+749700 24.974898874727
+750600 25.0124338748771
+751500 25.0465204699833
+752400 25.0776350595941
+753300 25.1061710101897
+754200 25.1324559312898
+755100 25.1567647987884
+756000 25.1793300427824
+756900 25.2003493918872
+757800 25.2199920394934
+758700 25.2384035398958
+759600 25.25570973201
+760500 25.3795840196015
+761400 25.7418366159954
+762300 26.1184893239276
+763200 26.4508583128753
+764100 26.7371424781017
+765000 26.9845338175149
+765900 27.200355058874
+766800 27.3906027453827
+767700 27.5599573242178
+768600 27.7120453472461
+769500 27.8496942585726
+770400 27.9751334092259
+771300 28.0901433882608
+772200 28.1961648293636
+773100 28.2943774395063
+774000 28.3857576968276
+774900 28.4711214193163
+775800 28.5511556267107
+776700 28.6264428031028
+777600 28.6974797222179
+778500 28.7646923267345
+779400 28.8284476836966
+780300 28.8890637158632
+781200 28.9468171931282
+782100 28.7969548317352
+783000 28.2282549618516
+783900 27.6669933136968
+784800 27.198984107303
+785700 26.8146011139079
+786600 26.4961326149646
+787500 26.2287876003536
+788400 26.0014125306194
+789300 25.8057282358393
+790200 25.635544736316
+791100 25.4861686567577
+792000 25.3539854973999
+792900 25.2361689757646
+793800 25.1304776972872
+794700 25.0351111576246
+795600 24.9486062385522
+796500 24.8697616478449
+797400 24.7975819101487
+798300 24.7312352399479
+799200 24.6700214192051
+800100 24.6133469909065
+801000 24.5607058775117
+801900 24.5116640755493
+802800 24.4658474510603
+803700 24.3669402966601
+804600 24.143771870103
+805500 23.9124363201536
+806400 23.7048015248835
+807300 23.5222818984314
+808200 23.3613060903231
+809100 23.2181146578036
+810000 23.089579619642
+810900 22.9732256766537
+811800 22.8671080316267
+812700 22.7696889058888
+813600 22.679739055214
+814500 22.5962639801435
+815400 22.5184495268295
+816300 22.4456217505096
+817200 22.3772170667065
+818100 22.3127598086755
+819000 22.2518451481199
+819900 22.1941259369937
+820800 22.1393024483528
+821700 22.08711428615
+822600 22.0373339371456
+823500 21.9897615805556
+824400 21.9442208718096
+825300 21.9005554887412
+826200 21.8586262805018
+827100 21.8183088974078
+828000 21.7794918079109
+828900 21.7420746297285
+829800 21.7059667178578
+830700 21.6710677783636
+831600 21.6372831687226
+832500 21.6045830781563
+833400 21.5729148734833
+834300 21.542221714824
+835200 21.5124499273079
+836100 21.4835499769548
+837000 21.4554762947216
+837900 21.428186909456
+838800 21.4016430798611
+839700 21.375808962861
+840600 21.3506513220543
+841500 21.3261392724654
+842400 21.3022440566505
+843300 21.2789388475808
+844200 21.2561985744037
+845100 21.2339997678248
+846000 21.2123204224219
+846900 21.1911398736464
+847800 21.170438687648
+848700 21.1501985623471
+849600 21.130402238422
+850500 21.1110334190702
+851400 21.0920766975584
+852300 21.0735174917002
+853200 21.0553419845109
+854100 21.0375370703708
+855000 21.0200903061053
+855900 21.0029898664539
+856800 20.9862245034544
+857700 20.9697835093228
+858600 20.9536566824476
+859500 20.9378342961655
+860400 20.922307070017
+861300 20.9070661432184
+862200 20.8921030501166
+863100 20.8774096974213
+864000 20.8629783430383
+864900 20.8488015763455
+865800 20.834872299781
+866700 20.8211837116235
+867600 20.8077292898667
+868500 20.7945027771023
+869400 20.7814981663334
+870300 20.7687096876541
+871200 20.7561317957395
+872100 20.7437591580907
+873000 20.7315866439929
+873900 20.7196093141405
+874800 20.7078224108936
+875700 20.6962213491264
+876600 20.684801707636
+877500 20.6735592210768
+878400 20.662489772389
+879300 20.6515893856936
+880200 20.6408542196213
+881100 20.6302805610509
+882000 20.6198648192274
+882900 20.6096035202369
+883800 20.599493301812
+884700 20.5895309084441
+885600 20.5797131867832
+886500 20.5700370813012
+887400 20.5604996302018
+888300 20.5510979615556
+889200 20.5418292896483
+890100 20.5326909115213
+891000 20.5236802036934
+891900 20.5147946190489
+892800 20.5060316838807
+893700 20.4973889950775
+894600 20.4888642174437
+895500 20.4804550811445
+896400 20.4721593792671
+897300 20.4639749654905
+898200 20.4558997518579
+899100 20.4479317066451
+9e+05 20.4400688523189
+900900 20.4323092635824
+901800 20.424651065501
+902700 20.4170924317052
+903600 20.4096315826677
+904500 20.4022667840507
+905400 20.3949963451201
+906300 20.3878186172237
+907200 20.380731992332
+908100 20.3737349016371
+909000 20.3668258142088
+909900 20.3600032357062
+910800 20.3532657071401
+911700 20.3466118036875
+912600 20.3400401335537
+913500 20.3335493368814
+914400 20.3271380847046
+915300 20.320805077946
+916200 20.3145490464549
+917100 20.3083687480859
+918000 20.3022629678148
+918900 20.2962305168921
+919800 20.2902702320303
+920700 20.2843809746255
+921600 20.2785616300115
+922500 20.272811106743
+923400 20.2671283359108
+924300 20.2615122704817
+925200 20.2559618846681
+926100 20.2504761733218
+927000 20.2450541513518
+927900 20.2396948531662
+928800 20.2343973321354
+929700 20.229160660077
+930600 20.2239839267602
+931500 20.2188662394301
+932400 20.2138067223492
+933300 20.2088045163568
+934200 20.2038587784447
+935100 20.1989686813487
+936000 20.194133413155
+936900 20.1893521769209
+937800 20.1846241903085
+938700 20.1799486852318
+939600 20.1753249075161
+940500 20.1707521165687
+941400 20.1662295850606
+942300 20.1617565986197
+943200 20.1573324555332
+944100 20.1529564664594
+945000 20.1486279541505
+945900 20.1443462531814
+946800 20.1401107096895
+947700 20.1359206811208
+948600 20.1317755359842
+949500 20.127674653614
+950400 20.1236174239377
+951300 20.1196032472513
+952200 20.115631534002
+953100 20.1117017045751
+954000 20.1078131890886
+954900 20.1039654271925
+955800 20.1001578678736
+956700 20.0963899692661
+957600 20.0926611984664
+958500 20.0889710313539
+959400 20.0853189524153
+960300 20.0817044545742
+961200 20.0781270390246
+962100 20.0745862150687
+963000 20.0710814999591
+963900 20.067612418744
+964800 20.0641785041173
+965700 20.0607792962714
+966600 20.0574143427538
+967500 20.0540831983271
+968400 20.0507854248331
+969300 20.0475205910579
+970200 20.044288272603
+971100 20.0410880517571
+972000 20.0379195173715
+972900 20.0347822647392
+973800 20.0316758954753
+974700 20.0286000174008
+975600 20.0255542444291
+976500 20.0225381964547
+977400 20.0195514992445
+978300 20.0165937843315
+979200 20.0136646889103
+980100 20.0107638557356
+981000 20.0078909330224
+981900 20.0050455743486
+982800 20.0022274385591
+983700 19.999436189673
+984600 19.9966714967913
+985500 19.9939330340079
+986400 19.9912204803211
+987300 19.9885335195483
+988200 19.9858718402411
+989100 19.983235135603
+990000 19.9806231034087
+990900 19.9780354459247
+991800 19.9754718698318
+992700 19.9729320861484
+993600 19.9704158101573
+994500 19.9679227613308
+995400 19.9654526632609
+996300 19.963005243588
+997200 19.9605802339321
+998100 19.9581773698259
+999000 19.9557963906483
+999900 19.9534370395594
+1000800 19.9510990634374
+1001700 19.9487822128156
+1002600 19.9464862418219
+1003500 19.9442109081178
+1004400 19.9419559728409
+1005300 19.9397212005465
+1006200 19.9375063591507
+1007100 19.9353112198756
+1008000 19.9331355571939
+1008900 19.930979148776
+1009800 19.9288417754376
+1010700 19.9267232210879
+1011600 19.9246232726785
+1012500 19.9225417201553
+1013400 19.9204783564082
+1014300 19.9184329772244
+1015200 19.916405381241
+1016100 19.9143953698991
+1017000 19.9124027473988
+1017900 19.9104273206543
+1018800 19.9084688992514
+1019700 19.9065272954033
+1020600 19.90460232391
+1021500 19.9026938021165
+1022400 19.900801549872
+1023300 19.8989253894905
+1024200 19.8970651457118
+1025100 19.8952206456633
+1026000 19.8933917188214
+1026900 19.8915781969759
+1027800 19.8897799141925
+1028700 19.887996706778
+1029600 19.8862284132444
+1030500 19.8844748742755
+1031400 19.8827359326917
+1032300 19.8810114334184
+1033200 19.879301223452
+1034100 19.8776051518287
+1035000 19.8759230695925
+1035900 19.8742548297644
+1036800 19.872600287312
+1037700 19.8709592991199
+1038600 19.8693317239597
+1039500 19.8677174224621
+1040400 19.8661162570876
+1041300 19.864528092099
+1042200 19.8629527935343
+1043100 19.8613902291794
+1044000 19.8598402685415
+1044900 19.8583027828233
+1045800 19.8567776448975
+1046700 19.8552647292809
+1047600 19.8537639121105
+1048500 19.8522750711191
+1049400 19.8507980856106
+1050300 19.8493328364372
+1051200 19.8478792059763
+1052100 19.8464370781072
+1053000 19.8450063381896
+1053900 19.8435868730406
+1054800 19.842178570914
+1055700 19.8407813214786
+1056600 19.8393950157973
+1057500 19.838019546307
+1058400 19.8366548067976
+1059300 19.835300692393
+1060200 19.8339570995308
+1061100 19.8326239259439
+1062000 19.831301070641
+1062900 19.829988433888
+1063800 19.8286859171902
+1064700 19.8273934232738
+1065600 19.8261108560682
+1066500 19.8248381206893
+1067400 19.8235751234213
+1068300 19.8223217717004
+1069200 19.8210779740982
+1070100 19.8198436403053
+1071000 19.8186186811149
+1071900 19.8174030084077
+1072800 19.8161965351356
+1073700 19.8149991753068
+1074600 19.8138108439709
+1075500 19.8126314572038
+1076400 19.811460932093
+1077300 19.8102991867237
+1078200 19.8091461401643
+1079100 19.8080017124527
+1080000 19.8068658245825
+1080900 19.8057383984894
+1081800 19.8046193570383
+1082700 19.8035086240097
+1083600 19.8024061240875
+1084500 19.8013117828456
+1085400 19.8002255267362
+1086300 19.799147283077
+1087200 19.7980769800393
+1088100 19.7970145466361
+1089000 19.7959599127106
+1089900 19.7949130089244
+1090800 19.7938737667463
+1091700 19.7928421184413
+1092600 19.7918179970594
+1093500 19.7908013364246
+1094400 19.7897920711249
+1095300 19.7887901365014
+1096200 19.7877954686375
+1097100 19.7868080043502
+1098000 19.7858276811785
+1098900 19.7848544373748
+1099800 19.7838882118943
+1100700 19.7829289443858
+1101600 19.7819765751826
+1102500 19.7810310452928
+1103400 19.7800922963899
+1104300 19.7791602708045
+1105200 19.7782349115145
+1106100 19.7773161621375
+1107000 19.7764039669212
+1107900 19.7754982707352
+1108800 19.7745990190629
+1109700 19.7737061579932
+1110600 19.7728196342119
+1111500 19.7719393949945
+1112400 19.7710653881978
+1113300 19.7701975622523
+1114200 19.7693358661548
+1115100 19.7684802494603
+1116000 19.7676306622754
+1116900 19.7667870552504
+1117800 19.7659493795722
+1118700 19.7651175869578
+1119600 19.7642916296465
+1120500 19.7634714603937
+1121400 19.7626570324639
+1122300 19.7618482996239
+1123200 19.7610452161367
+1124100 19.7602477367545
+1125000 19.7594558167125
+1125900 19.7586694117227
+1126800 19.7578884779677
+1127700 19.7571129720945
+1128600 19.7563428512082
+1129500 19.7555780728668
+1130400 19.7548185950747
+1131300 19.754064376277
+1132200 19.753315375354
+1133100 19.7525715516157
+1134000 19.751832864796
+1134900 19.7510992750477
+1135800 19.7503707429367
+1136700 19.7496472294368
+1137600 19.748928695925
+1138500 19.7482151041758
+1139400 19.7475064163563
+1140300 19.7468025950211
+1141200 19.7461036031079
+1142100 19.7454094039318
+1143000 19.7447199611814
+1143900 19.7440352389132
+1144800 19.7433552015479
+1145700 19.7426798138651
+1146600 19.7420090409989
+1147500 19.7413428484339
+1148400 19.7406812020001
+1149300 19.7400240678693
+1150200 19.7393714125505
+1151100 19.7387232028855
+1152000 19.7380794060453
+1152900 19.7374399895254
+1153800 19.7368049211421
+1154700 19.7361741690288
+1155600 19.7355477016316
+1156500 19.7349254877056
+1157400 19.7343074963116
+1158300 19.7336936968116
+1159200 19.7330840588656
+1160100 19.7324785524279
+1161000 19.7318771477438
+1161900 19.7312798153452
+1162800 19.730686526048
+1163700 19.730097250948
+1164600 19.7295119614179
+1165500 19.728930629104
+1166400 19.7283532259222
+1167300 19.7277797240554
+1168200 19.7272100959501
+1169100 19.7266443143129
+1170000 19.7260823521078
+1170900 19.7255241825531
+1171800 19.7249697791179
+1172700 19.7244191155194
+1173600 19.7238721657201
+1174500 19.7233289039245
+1175400 19.7227893045763
+1176300 19.7222533423559
+1177200 19.7217209921774
+1178100 19.7211922291856
+1179000 19.7206670287534
+1179900 19.7201453664795
+1180800 19.7196272181853
+1181700 19.7191125599123
+1182600 19.7186013679198
+1183500 19.7180936186824
+1184400 19.7175892888872
+1185300 19.7170883554314
+1186200 19.7165907954202
+1187100 19.7160965861638
+1188000 19.7156057051756
+1188900 19.7151181301694
+1189800 19.7146338390574
+1190700 19.7141528099479
+1191600 19.7136750211423
+1192500 19.713200451134
+1193400 19.7127290786054
+1194300 19.7122608824262
+1195200 19.7117958416511
+1196100 19.7113339355172
+1197000 19.7108751434428
+1197900 19.7104194450247
+1198800 19.7099668200366
+1199700 19.7095172484268
+1200600 19.7090707103165
+1201500 19.7086271859975
+1202400 19.7081866559306

+ 4 - 0
connector-fetch-drutes/src/test/resources/data/340260002/current/predict.times

@@ -0,0 +1,4 @@
+# sensor data from:
+2022-03-08 20:00:00+01
+# meteo data from
+2022-03-08 23:00:00

+ 1 - 0
connector-fetch-drutes/src/test/resources/data/340260002/current/sensors.success

@@ -0,0 +1 @@
+1

+ 1338 - 0
connector-fetch-drutes/src/test/resources/data/710010001/current/710010001.predict

@@ -0,0 +1,1338 @@
+# time [s]     hpress [kPa]    sat deg [%]  
+0 -118.699997 57.1507874307272
+900 -126.342596253468 56.1830598896092
+1800 -129.887969565097 55.7570617391187
+2700 -132.761323593157 55.4216934629577
+3600 -135.293113734529 55.133189753404
+4500 -136.332560229901 55.0165786098767
+5400 -137.570582185753 54.8790521007438
+6300 -138.81468183444 54.742315236393
+7200 -140.036771655714 54.6094010964342
+8100 -139.219868429985 54.6980940381994
+9000 -139.144445557101 54.7063139154098
+9900 -139.232574736659 54.6967097633534
+10800 -139.398499335112 54.6786471060771
+11700 -138.868275524402 54.7364571315399
+12600 -138.692610220852 54.7556673939219
+13500 -138.609522221882 54.7647636945441
+14400 -138.578766012458 54.7681324559696
+15300 -138.762864261637 54.747981158541
+16200 -138.938853599289 54.7287469758185
+17100 -139.115115258955 54.7095118911566
+18000 -139.29525360832 54.6898835141688
+18900 -139.359722040337 54.6828661333773
+19800 -139.421149649512 54.6761833342331
+20700 -139.499852462162 54.6676262292923
+21600 -139.591256011455 54.6576953802773
+22500 -139.07162622993 54.7142551102486
+23400 -138.839488861992 54.7396031801288
+24300 -138.678974448095 54.7571597711522
+25200 -138.559560940544 54.7702364633105
+26100 -137.843927092549 54.8488841411688
+27000 -137.441603727139 54.8933112712747
+27900 -137.120292701496 54.9289029891344
+28800 -136.847433978212 54.9592050505882
+29700 -136.780881993211 54.9666067203174
+30600 -136.6184605059 54.9846885617279
+31500 -136.459486373129 55.0024112058785
+32400 -136.31021078002 55.0190748393944
+33300 -137.002060876354 54.9420244550074
+34200 -137.441642765124 54.8933069681009
+35100 -137.804262333485 54.8532573177306
+36000 -138.124837781463 54.8179548120686
+36900 -138.489526317759 54.7779121079289
+37800 -138.961275506179 54.7262986077754
+38700 -139.407082142471 54.6777135446997
+39600 -139.830662308291 54.6317207803498
+40500 -140.310189614914 54.5798519098315
+41400 -140.878826558014 54.5186155878618
+42300 -141.420187627863 54.4605880564913
+43200 -141.939124790496 54.4052106997834
+44100 -142.424396887899 54.3536426559684
+45000 -143.005416068541 54.2921733291671
+45900 -143.568383701364 54.2328958167652
+46800 -144.114773837556 54.1756271212745
+47700 -145.100874783556 54.0729212506599
+48600 -146.001190199084 53.979871795622
+49500 -146.829796257709 53.8948348015128
+50400 -147.613982793867 53.8148808480522
+51300 -148.990158007948 53.6757850372945
+52200 -150.178383290802 53.5569120237611
+53100 -151.26718687849 53.4489665567141
+54000 -152.296380361724 53.3477804798934
+54900 -155.99179921601 52.9910918509171
+55800 -158.642028840123 52.7414578297408
+56700 -160.97563957383 52.5257555270034
+57600 -163.141282002247 52.3289143517746
+58500 -171.443976543566 51.6024376923591
+59400 -176.522949835657 51.1786647878774
+60300 -181.055486017601 50.812779504181
+61200 -185.333410115558 50.4775124462112
+62100 -188.079665457433 50.2672072485542
+63000 -191.463467665194 50.0131705347214
+63900 -194.902102027965 49.7605693941422
+64800 -198.359730435833 49.5120057840132
+65700 -201.973272081964 49.2578377693327
+66600 -205.718316105338 49.0002336977633
+67500 -209.460736080188 48.7484953847719
+68400 -213.219828858531 48.5011383351845
+69300 -218.372309043007 48.170678222144
+70200 -223.150394073548 47.8727021221001
+71100 -227.855266704396 47.5868870525576
+72000 -232.565526006982 47.3079580603326
+72900 -233.673572897014 47.2433536283539
+73800 -236.08328782134 47.1041626709799
+74700 -238.896377026116 46.9438807549596
+75600 -241.930946778021 46.773581226207
+76500 -244.926136635491 46.6080697887257
+77400 -248.170869818264 46.4315802936415
+78300 -251.535761068374 46.2515570096861
+79200 -255.004161976856 46.0691022897317
+80100 -257.962216741472 45.91591599152
+81000 -261.082584315767 45.7566767934861
+81900 -264.36471562094 45.5917204915558
+82800 -267.769999378059 45.4232511934333
+83700 -270.174968342715 45.3058713977172
+84600 -272.906641921027 45.1741184439459
+85500 -275.857407093263 45.0336356081237
+86400 -278.960232622157 44.8879238152975
+87300 -279.820670895038 44.8478742063661
+88200 -281.504104903685 44.7699631888397
+89100 -283.538497099296 44.6765832185034
+90000 -285.789028501065 44.5742537480802
+90900 -287.26472713221 44.507700623415
+91800 -289.162208948903 44.4227519578931
+92700 -291.274076239925 44.3290222594861
+93600 -293.537249119743 44.22951743191
+94500 -296.096698300847 44.1181379296447
+95400 -298.391534979545 44.0192948522363
+96300 -300.791767117556 43.9169268611248
+97200 -303.289714391876 43.8114737593279
+98100 -304.063936928145 43.7790097185575
+99000 -305.165416928017 43.7330026074211
+99900 -306.583109742812 43.674093572487
+100800 -308.201020969589 43.6072813116912
+101700 -307.938986097825 43.6180719606728
+102600 -308.327877625292 43.6020611049345
+103500 -309.064782074357 43.5717917995275
+104400 -310.021136813181 43.5326431432118
+105300 -307.883271700691 43.6203680063351
+106200 -306.907798957745 43.6606497693667
+107100 -306.431875921147 43.6803612420531
+108000 -306.258396099424 43.687555881091
+108900 -305.569260444176 43.7161867272737
+109800 -305.09411444398 43.735974348498
+110700 -304.860899887452 43.7457008114215
+111600 -304.803118772419 43.7481120787489
+112500 -305.071770149727 43.7369058284777
+113400 -305.242001549813 43.729811379681
+114300 -305.503024151414 43.7189428177929
+115200 -305.848840146299 43.7045615318714
+116100 -305.778673478093 43.7074778559261
+117000 -305.866707495671 43.703819033689
+117900 -306.083754981794 43.6948038662143
+118800 -306.395696306616 43.6818612831071
+119700 -305.615571041483 43.7142601365969
+120600 -305.517365169979 43.7183460096555
+121500 -305.598045704889 43.7149891580559
+122400 -305.792114423096 43.7069191501552
+123300 -303.185109299583 43.815867355087
+124200 -302.440596202642 43.8471968427864
+125100 -302.028084357051 43.8645972626296
+126000 -301.796871627329 43.8743632395577
+126900 -303.586612774154 43.7990120397042
+127800 -305.102734106124 43.7356152150737
+128700 -306.472897434088 43.6786608798818
+129600 -307.775965120466 43.6247913326437
+130500 -311.38797688078 43.4769543760129
+131400 -314.190799118921 43.3637127360142
+132300 -316.745220134767 43.2616075159404
+133200 -319.170111343871 43.1656331280106
+134100 -324.579489845277 42.9548037324132
+135000 -328.829989535941 42.7922182267504
+135900 -332.755140874761 42.6444105810106
+136800 -336.512235577012 42.5049743017252
+137700 -341.878020214017 42.3092027641569
+138600 -347.340220953344 42.1138518985334
+139500 -352.601235261742 41.9293267341184
+140400 -357.7549751342 41.7519038379588
+141300 -364.039303269564 41.5398795575519
+142200 -370.41797612686 41.3293500930529
+143100 -376.681280678039 41.1270429078182
+144000 -382.905672935763 40.9301663235865
+144900 -395.325329595722 40.5491840765486
+145800 -406.070125034214 40.2316133576512
+146700 -416.414748674072 39.9357834135837
+147600 -426.670540575482 39.6515625542784
+148500 -444.134553883424 39.1870177630158
+149400 -459.925927114639 38.7865281765371
+150300 -475.546453532946 38.4072321133291
+151200 -491.389011319019 38.0384228339413
+152100 -510.350717154221 37.6164472869229
+153000 -529.568791040551 37.208703339168
+153900 -549.419804441681 36.8069113583729
+154800 -570.154623891813 36.4065785739287
+155700 -591.328086226433 36.0165506415152
+156600 -612.949168307929 35.6363070510616
+157500 -635.938446092876 35.2504045151321
+158400 -660.412668924004 34.8587525987671
+159300 -693.851822629553 34.3527533705215
+160200 -726.559353313197 33.8872260486473
+161100 -761.339878096629 33.4208448930449
+162000 -798.879981660234 32.9472441082916
+162900 -870.94111451351 32.1136622351899
+163800 -946.184354234451 31.3330618718718
+164700 -1029.85634414353 30.5538905470446
+165600 -1125.91818639184 29.7542761807741
+166500 -1172.57073553285 29.3970148984723
+167400 -1242.84550372881 28.8922072993239
+168300 -1329.57263803996 28.3178051380785
+169200 -1433.21750846102 27.6917750265697
+170100 -1457.12128375137 27.5556316809963
+171000 -1502.71883266687 27.3038359617923
+171900 -1566.40458503548 26.9682310287882
+172800 -1645.21388947526 26.5765756407804
+173700 -1703.65730076588 26.3014678893932
+174600 -1759.13588076944 26.0513993805833
+175500 -1827.97258120371 25.754949929674
+176400 -1910.24661990752 25.4190430920445
+177300 -2223.83142983842 24.2923486148942
+178200 -2549.2534410422 23.3222271182103
+179100 -2932.39413276352 22.367521251008
+180000 -3403.36457986195 21.3945492360693
+180900 -3091.70291761274 22.016943092556
+181800 -2860.55814130498 22.5336801735742
+182700 -2722.4122315342 22.869111529505
+183600 -2639.55387933684 23.0810776679208
+184500 -1996.51763234505 25.0865911885176
+185400 -1686.56882549697 26.3807241443406
+186300 -1504.78660799101 27.2926983940567
+187200 -1382.58714926804 27.9900068608824
+188100 -1191.77595498525 29.2553090177677
+189000 -1084.86093065439 30.0848261904891
+189900 -1009.17565137726 30.7386630011105
+190800 -951.112132579085 31.2847196771594
+191700 -890.026167597447 31.9076354206445
+192600 -843.49897049527 32.420251449759
+193500 -805.685788619939 32.8644410974027
+194400 -773.949381553402 33.2584707804435
+195300 -817.939881767384 32.71759264637
+196200 -825.986609911875 32.6226993123747
+197100 -827.74726240769 32.6020951275239
+198000 -826.962745653355 32.6112689843238
+198900 -864.86088099456 32.1804734078261
+199800 -882.699834509623 31.9860154503483
+200700 -896.232755818885 31.8418422531754
+201600 -907.639085254622 31.7224855132548
+202500 -925.274581053325 31.5417002490797
+203400 -936.398140011848 31.4299373452589
+204300 -946.373600361659 31.3311553248906
+205200 -955.757937517951 31.2394442110212
+206100 -965.756441028261 31.1429993717799
+207000 -974.363323202959 31.0610031149734
+207900 -982.784676705945 30.9816731196571
+208800 -991.148880050421 30.9037442319498
+209700 -1009.34677294506 30.7370899862207
+210600 -1031.96250131364 30.5352942186663
+211500 -1053.94941328435 30.3445043074584
+212400 -1075.70560472981 30.1607045822514
+213300 -1085.38831894137 30.0804391526509
+214200 -1109.49299981334 29.8845728871385
+215100 -1135.30933729897 29.68079799823
+216000 -1162.17941345712 29.4749625399446
+216900 -1184.81551609343 29.3062732250632
+217800 -1217.43162721188 29.070394062134
+218700 -1251.91719568127 28.8297117343085
+219600 -1288.00335556788 28.5868607116444
+220500 -1461.62886186878 27.5303513438645
+221400 -1615.67706574746 26.7205022815941
+222300 -1778.56504051844 25.9662682075892
+223200 -1959.65015230786 25.2262502952317
+224100 -2166.16093441669 24.4834850718358
+225000 -2405.83969223893 23.72871329866
+225900 -2687.90822033207 22.95640712014
+226800 -3023.73561849973 22.1635840822396
+227700 -3427.42985006051 21.3495452473685
+228600 -3916.35825152473 20.5159626130292
+229500 -4511.50990439366 19.6670324704335
+230400 -5291.04851096236 18.7524686663002
+231300 -6227.01600318852 17.8616254729969
+232200 -7352.2352566384 16.9966068704997
+233100 -8697.27661146164 16.1642247813438
+234000 -10280.7697619881 15.3759449690743
+234900 -12100.7942080041 14.6447344562046
+235800 -14122.8283445527 13.9836404222792
+236700 -16271.0177741047 13.4040695959206
+237600 -18432.811228112 12.9133751749709
+238500 -20483.3656088319 12.5124978299202
+239400 -22321.4224152686 12.1951212771137
+240300 -23895.5144135701 11.9491786717043
+241200 -25205.9463031835 11.7599581650165
+242100 -34157.1643128206 10.7387268402868
+243000 -40590.0430328008 10.1986535090242
+243900 -43807.3910089374 9.96867002214029
+244800 -45761.0608943052 9.83946893822348
+245700 -47293.3565868469 9.74304889796404
+246600 -48657.1279697439 9.660585694569
+247500 -49938.1949277898 9.58581298783479
+248400 -51177.9204162303 9.51578838248102
+249300 -52403.9599273188 9.448670893853
+250200 -53638.6299798632 9.38311131085309
+251100 -54900.6499847719 9.3180948531686
+252000 -56203.8031805534 9.25296565328475
+252900 -57553.8373512176 9.18753026497752
+253800 -58945.0006226622 9.12215490619588
+254700 -60358.1828113044 9.0577653891903
+255600 -61762.6681369416 8.99568358969075
+256500 -63122.1500831646 8.93731324407662
+257400 -64403.1835362112 8.88378631477564
+258300 -65582.4789736248 8.83571892657042
+259200 -66650.0997024295 8.79316173064961
+260100 -67608.1730369907 8.75571834888333
+261000 -68466.9363975746 8.72273730438051
+261900 -69240.4047569539 8.69348871283944
+262800 -69943.0872350481 8.66728245228421
+263700 -46595.8138309391 9.78649704820898
+264600 -40490.8746045362 10.2061187347069
+265500 -36452.402012338 10.5318136908799
+266400 -33285.8288975372 10.821883819099
+267300 -30583.335067866 11.0993530375628
+268200 -28125.4224867588 11.3808899112256
+269100 -25794.5307128989 11.6790953746238
+270000 -23548.3312820173 12.0015921082361
+270900 -21392.9373126548 12.3510208077715
+271800 -19354.4425071521 12.7263772955587
+272700 -17458.7773254396 13.1246668797101
+273600 -15723.0845757943 13.5420222280982
+274500 -14154.6054787443 13.9742149557541
+275400 -12752.3877349663 14.4168764261537
+276300 -11509.4693908364 14.8656643288713
+277200 -10414.8861562329 15.316432151717
+278100 -9455.39266045147 15.7653721896055
+279000 -8616.84936334532 16.2091030909955
+279900 -7898.00546049103 16.6366529262478
+280800 -7276.52831485286 17.0491872387885
+281700 -6724.4855127268 17.4559698981714
+282600 -6238.36753804133 17.8518238492028
+283500 -5811.47008824421 18.2339962003767
+284400 -5436.68959992294 18.6008489874805
+285300 -5700.93250938473 18.3389156515966
+286200 -5817.4995912277 18.228329172477
+287100 -5864.56541166647 18.1844907081404
+288000 -5873.82315833683 18.1759215522646
+288900 -5860.85135805185 18.1879333987961
+289800 -5834.5779196367 18.2123685545375
+290700 -5800.54923170194 18.2442294392206
+291600 -5762.37404232206 18.2802626710778
+292500 -5722.46475621208 18.3182654829532
+293400 -5682.45802584063 18.3567079277631
+294300 -5643.47044938187 18.3945105578603
+295200 -5606.26185381423 18.4309057479046
+296100 -5571.34337056631 18.4653472093274
+297000 -5539.05090745318 18.4974488193047
+297900 -5509.59611876935 18.5269420796291
+298800 -5483.1023184916 18.5536458472971
+299700 -5459.63008803585 18.5774443922065
+300600 -5439.19570166736 18.59827124738
+301500 -5421.78447213107 18.6160971737691
+302400 -5407.36046011943 18.6309211000115
+303300 -5395.87355508823 18.642763245847
+304200 -5387.26464030408 18.6516598690886
+305100 -5381.46935239563 18.6576592330407
+306000 -5378.42080428859 18.6608184999533
+306900 -5362.62307101576 18.6772355289635
+307800 -5718.62451335823 18.3219636704454
+308700 -6224.65471644535 17.8635779463098
+309600 -6838.03431573745 17.3688473330842
+310500 -7581.52515000046 16.8412595470652
+311400 -8403.07920163146 16.331274274881
+312300 -9295.32280070768 15.8460381471976
+313200 -10249.7858337629 15.3897634219419
+314100 -11252.4809850008 14.9663425488695
+315000 -12285.6087331607 14.578472045316
+315900 -13329.2485700985 14.2274459277437
+316800 -14363.4022288615 13.9131582578214
+317700 -15370.0831043739 13.6342413434659
+318600 -16334.98762215 13.3883136899323
+319500 -17248.395483762 13.1722986213811
+320400 -18105.2101740302 12.9827596998198
+321300 -18904.3143419186 12.8162004146669
+322200 -19646.0198383919 12.6695884563525
+323100 -20307.9902532789 12.5446833647078
+324000 -20939.0124173986 12.4304448992765
+324900 -21535.7657218293 12.3264506552063
+325800 -22098.9017473303 12.2316908797874
+326700 -22630.7696987562 12.1450289622304
+327600 -23134.2745194728 12.0653918472584
+328500 -35020.7383747882 10.6588711893044
+329400 -41128.2940034457 10.1585572378041
+330300 -44159.2708813832 9.94485387304003
+331200 -46373.7928770098 9.80041814034127
+332100 -48360.7820227508 9.6782492400161
+333000 -50287.5132125563 9.56585720731734
+333900 -52204.020208396 9.45947786609962
+334800 -54097.438091256 9.3592480750135
+335700 -55916.9812397402 9.26713187755728
+336600 -57603.5545227092 9.18515905239155
+337500 -59116.1998618211 9.11424827631485
+338400 -60443.26033269 9.05395131095668
+339300 -61597.6768220154 9.00288071860841
+340200 -62605.3193318094 8.95930918651069
+341100 -63494.743336441 8.92159974840832
+342000 -64291.4642049519 8.88839872095559
+342900 -65016.0426244295 8.85866477262662
+343800 -65684.2499675396 8.83162311414318
+344700 -66307.9883074204 8.80670158705288
+345600 -66896.2794995177 8.78347382734716
+346500 -67456.0721121702 8.7616163408337
+347400 -67992.8254193831 8.7408785836154
+348300 -68510.9051606796 8.72106298990156
+349200 -69013.8403586854 8.70201196298937
+350100 -53506.1911928085 9.39006979522529
+351000 -49672.0567999598 9.60114548451327
+351900 -47368.4522606989 9.73842969315096
+352800 -45657.886388377 9.84611107327462
+353700 -44254.6766488499 9.9384341651637
+354600 -43042.5595973416 10.0212997734964
+355500 -41966.6627811824 10.0974333386208
+356400 -40997.5202075377 10.1682156874806
+357300 -40117.1189353526 10.2344270216694
+358200 -39313.0387051443 10.2965691278805
+359100 -38575.866012983 10.3550086535298
+360000 -37898.0016328357 10.4100413277806
+360900 -37273.0785053209 10.4619207648296
+361800 -36695.6535054729 10.5108713974972
+362700 -36161.0256955904 10.5570943900841
+363600 -35665.1152912583 10.6007705631032
+364500 -35207.7965392124 10.6417527917034
+365400 -34785.1878056335 10.680244009651
+366300 -34389.4357472466 10.7168439199622
+367200 -34018.7412321465 10.7516261479073
+368100 -33671.7607465102 10.7846323053708
+369000 -33347.1368013365 10.8159143191218
+369900 -33043.5418877382 10.8455299387532
+370800 -32759.7189567838 10.8735382338904
+371700 -28002.7152121795 11.3958062859686
+372600 -24789.403232546 11.8187174263366
+373500 -22313.3654725375 12.1964493282687
+374400 -20172.0475026267 12.5699230041148
+375300 -18226.1999191817 12.9569578069016
+376200 -16428.7207196166 13.3654541833021
+377100 -14767.2319732404 13.7983295185414
+378000 -13241.1913633175 14.2556828267789
+378900 -11852.0374701587 14.7359074290131
+379800 -10599.3200288463 15.2362854128885
+380700 -9479.69259810328 15.7532933272224
+381600 -8487.15267146196 16.2827579411543
+382500 -7613.70064841729 16.8199597872936
+383400 -6850.0286126203 17.3597582681406
+384300 -6204.10563295005 17.8812437569957
+385200 -5636.16260498551 18.4016686654175
+386100 -5141.43508535264 18.9138052202768
+387000 -4713.32383646691 19.4115236199332
+387900 -4343.88258295539 19.8906913214577
+388800 -4025.1134873919 20.34873425576
+389700 -3749.54144658568 20.7843772672969
+390600 -3510.48165964072 21.197377303641
+391500 -3302.13713068162 21.5882408921124
+392400 -3119.59046516294 21.9579607223901
+393300 -3671.04410569192 20.9163096778159
+394200 -4508.73906499878 19.6707258873828
+395100 -5514.18466731578 18.5224924478539
+396000 -6725.84977316676 17.4550335957592
+396900 -8159.76128353935 16.4754199500349
+397800 -9803.23407167826 15.5961189756809
+398700 -11608.487990716 14.8276951443612
+399600 -13495.1549517631 14.1749732847213
+400500 -15366.0988777991 13.6353274791038
+401400 -17132.1618210668 13.1989723835541
+402300 -18733.3282686458 12.8510742038454
+403200 -20145.7631459644 12.5748080663922
+404100 -21374.8555588149 12.3541256194031
+405000 -22442.3485683275 12.1754283867274
+405900 -23375.1401235794 12.0280895240072
+406800 -24198.6604219144 11.9042205498741
+407700 -24934.2162148041 11.798124980443
+408600 -25575.7546810092 11.7088565333017
+409500 -26171.7814572027 11.6284892179607
+410400 -26726.3028053456 11.5558247009337
+411300 -27243.3529299162 11.4898131475389
+412200 -27727.2570627058 11.4294909374613
+413100 -28182.0283406152 11.3740338239019
+414000 -28611.1693969051 11.3227578631141
+414900 -46899.8166303822 9.76752905442979
+415800 -53673.4503257513 9.38130582495513
+416700 -58175.5297266555 9.15807434540782
+417600 -62678.62493156 8.95618440312583
+418500 -66996.9158306254 8.77953365655243
+419400 -70651.417619242 8.64121318230782
+420300 -73500.0175823252 8.53968688890533
+421200 -75714.0140716504 8.46424508197743
+422100 -77530.3559508246 8.40446203389792
+423000 -79128.9262372869 8.35333273659149
+423900 -80623.2544690695 8.30673652072382
+424800 -82079.2715574072 8.26240163710659
+425700 -83528.7165983373 8.21927011307504
+426600 -84976.200660071 8.17715641773243
+427500 -86405.8522906477 8.13646638746828
+428400 -87790.6500451129 8.09787824196288
+429300 -89103.0560778101 8.06203013839652
+430200 -90323.3224918158 8.02930880029707
+431100 -91443.0057308028 7.99978581543723
+432000 -92463.9946400904 7.97327155906461
+432900 -93395.1713585117 7.94941913781016
+433800 -94248.8325225649 7.92782215060584
+434700 -95038.0242641427 7.9080810323422
+435600 -95775.0102439514 7.88983713788037
+436500 -75474.4030082849 8.47228626549231
+437400 -70288.0435310375 8.65454776598584
+438300 -67050.7049195563 8.7774235404467
+439200 -64610.7190998936 8.87524627074561
+440100 -62607.4799567056 8.95921797111636
+441000 -60881.6410024981 9.03441022832306
+441900 -59350.2430644677 9.10348729012122
+442800 -57965.33810245 9.16798036482938
+443700 -56696.7627870302 9.22883757019127
+444600 -55524.001081168 9.28669293811845
+445500 -54432.0481441335 9.34200713601525
+446400 -53409.2188080364 9.3951432250148
+447300 -52445.9647275611 9.44640716510739
+448200 -51534.2375451293 9.4960682868234
+449100 -50667.1537367932 9.54436813586022
+450000 -49838.8238853511 9.59152271572713
+450900 -49044.264733101 9.63772138358314
+451800 -48279.3437065839 9.68312462796841
+452700 -47540.7255436887 9.72786224463083
+453600 -46825.8050169352 9.77203283338609
+454500 -46132.6207063609 9.81570500771513
+455400 -45459.7527246898 9.85892025804612
+456300 -44806.2120757857 9.90169708337331
+457200 -44171.3309783596 9.94403583491633
+458100 -42344.0689600496 10.0704431631837
+459000 -40880.7444129566 10.1768922872156
+459900 -39680.7735329246 10.267947228191
+460800 -38619.3206342896 10.3515244371229
+461700 -37648.6705070222 10.4306067099818
+462600 -36745.7022124577 10.5065898307444
+463500 -35896.9740952533 10.5802533495859
+464400 -35093.6801804574 10.6520879284177
+465300 -34329.5210922208 10.7224334286463
+466200 -33599.6737349249 10.7915457760604
+467100 -32900.2579059424 10.859631137708
+468000 -32228.0518269132 10.9268632420221
+468900 -31580.3382355144 10.9933915302879
+469800 -30954.8192254498 11.059344313821
+470700 -30349.5657664194 11.1248293824059
+471600 -29762.9826773838 11.1899335654581
+472500 -29197.2164681263 11.2543258990319
+473400 -28652.8343218897 11.3178331062597
+474300 -28121.6941592244 11.3813244034444
+475200 -27603.3370345329 11.4448076257442
+476100 -27097.9316745402 11.5082134531706
+477000 -26605.6662071178 11.5714650609586
+477900 -26126.6743005804 11.6344875090847
+478800 -25661.0454651091 11.6972070666593
+479700 -35578.4426948021 10.6086068799332
+480600 -41422.7745858166 10.1369117586815
+481500 -44658.6426706869 9.91147560467139
+482400 -47102.2772390172 9.75485243295382
+483300 -49265.3114756292 9.62477491858106
+484200 -51260.0876834764 9.51122691289134
+485100 -53093.7350833342 9.41180148914298
+486000 -54749.9771766416 9.32575517681205
+486900 -56219.1393345691 9.25221097263961
+487800 -57506.8669381479 9.18977304635728
+488700 -58631.4562460243 9.13671275041208
+489600 -59617.3572611147 9.09127215524345
+490500 -60489.5469146694 9.05187886645898
+491400 -61270.3011086918 9.01723613574956
+492300 -61978.0332492021 8.98632533756108
+493200 -62627.3460834542 8.95836667486195
+494100 -63229.5932893257 8.93276913595588
+495000 -63793.5441430035 8.9090848273694
+495900 -64325.9734435699 8.88697259944834
+496800 -64832.1272860653 8.86617093806916
+497700 -65316.0719928371 8.84647834770104
+498600 -65780.9513824189 8.82773922246924
+499500 -66229.1782778775 8.8098335321375
+500400 -66662.5810545249 8.79266909311879
+501300 -85842.2384658103 8.15241441331367
+502200 -91155.5257426532 8.00732427646954
+503100 -94935.3647086779 7.91063910974357
+504000 -98221.6821772305 7.83055569553277
+504900 -101057.683121484 7.76419404393253
+505800 -103428.62826372 7.71054448892534
+506700 -105411.664927674 7.66688493910189
+507600 -107126.061475288 7.6299911647101
+508500 -108681.927518247 7.59716679432509
+509400 -110158.868248593 7.56656740987097
+510300 -111602.044264016 7.5371780443985
+511200 -113025.649746519 7.50866694403692
+512100 -114420.924604519 7.48117229210664
+513000 -115767.196200707 7.45505300854813
+513900 -117042.906817113 7.4306642127752
+514800 -118233.279089252 7.40821631155187
+515700 -119333.200911267 7.38773353697725
+516600 -120346.277402552 7.3690837915773
+517500 -121282.059409282 7.35203725574928
+518400 -122153.119757434 7.3363225476533
+519300 -122972.782320872 7.32166746791154
+520200 -123753.62471887 7.30782400707835
+521100 -124506.571246006 7.29458214567392
+522000 -125240.363538673 7.28177685229967
+522900 -99133.8094297071 7.80895178884337
+523800 -94178.5559197224 7.92959249803363
+524700 -91584.2598546617 7.99609531377824
+525600 -89886.8630907097 8.0409462309248
+526500 -88645.4463874573 8.07445121755108
+527400 -87672.8747753733 8.10112901893185
+528300 -86874.8361022644 8.12330815056377
+529200 -86198.3587437378 8.14231712897768
+530100 -85611.2599452667 8.1589723291499
+531000 -85092.7516398218 8.17380556662161
+531900 -84628.7229519127 8.18718017861995
+532800 -84209.1938289478 8.19935444417233
+533700 -83826.85730481 8.21051824074494
+534600 -83476.2028167046 8.22081526159379
+535500 -83152.9664926829 8.23035703599466
+536400 -82853.7740059816 8.23923208584561
+537300 -82572.2417988977 8.247621373104
+538200 -82314.1666890875 8.25534437558072
+539100 -82074.0823682055 8.26255728980945
+540000 -81849.5051155038 8.26932917426684
+540900 -81638.8782738799 8.27570236883694
+541800 -81441.0340558361 8.28170826790853
+542700 -81255.0045181102 8.28737282589128
+543600 -81079.9474025305 8.29271868232298
+544500 -76004.7024677272 8.45455524179871
+545400 -73386.9133185727 8.54361933488377
+546300 -71578.4346142602 8.60759600491688
+547200 -70160.9732105766 8.65922632261231
+548100 -68977.166520307 8.70339542677113
+549000 -67949.6627139235 8.74253858929905
+549900 -67034.5860580823 8.77805169205282
+550800 -66204.6050309081 8.81081128455519
+551700 -65441.4859101718 8.84140607212043
+552600 -64732.4006055272 8.87025283366197
+553500 -64067.9362574467 8.89765934765112
+554400 -63440.9532969215 8.92386061549695
+555300 -62845.8974554439 8.94904066432844
+556200 -62278.367745858 8.97334616113709
+557100 -61734.8343297067 8.99689521910354
+558000 -61212.4464424066 9.01978332903841
+558900 -60708.8953981657 9.04208756142226
+559800 -60222.3118348067 9.06386972845727
+560700 -59751.184780201 9.08517891724477
+561600 -59294.2952788546 9.10605362989034
+562500 -58850.6604811936 9.12652365571864
+563400 -58419.4859804773 9.14661173358436
+564300 -58000.1252229218 9.16633502506826
+565200 -57592.0453157248 9.18570640247121
+566100 -61330.7387909552 9.01458294680413
+567000 -63692.6570768863 8.91330326828759
+567900 -65274.3612542842 8.84816887549169
+568800 -66476.6184675206 8.80001654181591
+569700 -67456.1817021851 8.76161229308362
+570600 -68288.2232025689 8.7295563644017
+571500 -69013.676468352 8.70201822692802
+572400 -69657.5726235848 8.67788913341791
+573300 -70236.681609307 8.65643401800678
+574200 -70762.9901486465 8.63713345272172
+575100 -71245.4599688033 8.61960363212314
+576000 -71691.0088478398 8.60355168816983
+576900 -72105.1043946769 8.58874868415799
+577800 -72492.1470840207 8.57501226206485
+578700 -72857.0842989271 8.56214735894506
+579600 -73198.3572746818 8.55019218905559
+580500 -73520.968823163 8.53895713487152
+581400 -73828.0323198736 8.52832287135374
+582300 -74121.41396174 8.51821597306892
+583200 -74402.5417649709 8.50857985079142
+584100 -74672.6120357319 8.49936718137083
+585000 -74932.6596406094 8.49053721648924
+585900 -75183.5901465934 8.48205447944571
+586800 -75426.1994508567 8.47388793601806
+587700 -107596.09752662 7.62002449995971
+588600 -114559.710994778 7.47846402752707
+589500 -118621.269172659 7.40096418217724
+590400 -121731.802736131 7.343906033009
+591300 -124414.575389718 7.29619504618813
+592200 -126758.878560604 7.25558478323545
+593100 -128779.701949974 7.22135336426621
+594000 -130523.915971355 7.19236385029768
+594900 -132064.560908295 7.16717320355483
+595800 -133474.453113352 7.14445272680762
+596700 -134808.577582258 7.12323850382415
+597600 -136097.792227837 7.10299592017434
+598500 -137350.885779894 7.08355779508249
+599400 -138561.735008775 7.06499257465101
+600300 -139718.092081575 7.04745852697657
+601200 -140808.875972252 7.03109068999783
+602100 -141828.283443003 7.01594210020199
+603000 -142776.777432025 7.00197377824416
+603900 -143660.045860721 6.98907398630809
+604800 -144487.13215712 6.97708777454593
+605700 -145268.538959388 6.96584515129853
+606600 -146014.664294389 6.95518322125355
+607500 -146734.658584553 6.94496158165304
+608400 -147435.689231497 6.93507157348637
+609300 -122272.321119951 7.33418724044722
+610200 -118602.249463613 7.40131827472681
+611100 -116960.895516872 7.4322216730571
+612000 -116018.584490115 7.4502193421585
+612900 -115407.121118918 7.46199991782428
+613800 -114978.571895424 7.47030487636551
+614700 -114659.787889619 7.47650879650072
+615600 -114415.013582359 7.48128762667893
+616500 -114223.864123037 7.48502876208765
+617400 -114070.978960553 7.48802685581442
+618300 -113947.071891596 7.49046051833629
+619200 -113845.97411633 7.49244873099646
+620100 -113763.354016905 7.49407526117037
+621000 -113696.037335114 7.4954016500253
+621900 -113641.617494135 7.49647466910897
+622800 -113598.21901234 7.4973308538981
+623700 -113564.346917932 7.49799939311596
+624600 -113538.787015951 7.49850404469854
+625500 -113520.537550001 7.49886445023586
+626400 -113508.760976811 7.49909706369518
+627300 -113502.749048454 7.49921582471218
+628200 -113501.896953708 7.49923265784917
+629100 -113505.683784411 7.49915785024053
+630000 -113513.65751882 7.49900034231013
+630900 -89885.2950275891 8.04100546212191
+631800 -83418.4548544333 8.22252212744942
+632700 -79538.9582043989 8.34043625533194
+633600 -76772.6035777303 8.42917998297179
+634500 -74626.5499798537 8.50093657638745
+635400 -72873.837052896 8.56155963800237
+636300 -71391.1994049863 8.61433931922075
+637200 -70104.3531881282 8.66131671176869
+638100 -68965.2097172206 8.70384654688861
+639000 -67940.9808280926 8.74287260769149
+639900 -67008.4211255648 8.77907639177192
+640800 -66150.5407690288 8.81296373320396
+641700 -65354.6089863597 8.84491852053243
+642600 -64610.8790343957 8.87523776571041
+643500 -63911.7405894532 8.90415545755244
+644400 -63251.1388991716 8.9318592841936
+645300 -62624.168296427 8.9585025808851
+646200 -62026.7842078547 8.98421293479515
+647100 -61455.5981188701 9.00909836871862
+648000 -60907.7317241785 9.03325173571059
+648900 -60380.7136028646 9.05675378531856
+649800 -59872.4062679747 9.07967525533188
+650700 -59380.954470135 9.10207827125651
+651600 -58904.7478117395 9.12401728230887
+652500 -65337.9147148042 8.84560334321603
+653400 -68851.9099398371 8.70812894737441
+654300 -71130.0995622991 8.62378227299458
+655200 -72784.3250524119 8.56470627786217
+656100 -74063.5557128964 8.52020545690312
+657000 -75096.4382831882 8.48499674834343
+657900 -75957.3961028567 8.45612589709696
+658800 -76692.7163734591 8.43180264510952
+659700 -77332.8625359916 8.41087297763019
+660600 -77898.8299593908 8.39255517842125
+661500 -78405.6376268134 8.37629822675088
+662400 -78864.3574639267 8.36170104960024
+663300 -79283.3559412877 8.34846392196756
+664200 -79668.4306315742 8.33637841096873
+665100 -80026.9051054984 8.32519574669098
+666000 -80360.1017138087 8.3148598217659
+666900 -80671.9760670694 8.30523563802975
+667800 -80965.5902379195 8.29621901444328
+668700 -81243.2878250986 8.28773017137799
+669600 -81506.9539137075 8.27970506202271
+670500 -81758.1513071599 8.27209076333014
+671400 -81998.1996658547 8.26484275645944
+672300 -82228.2267847023 8.257923143993
+673200 -82449.204773284 8.25129938411619
+674100 -105100.37115848 7.67367485222498
+675000 -109954.579449813 7.57076928261332
+675900 -112645.415605002 7.51623654170301
+676800 -114503.8129278 7.4795527348363
+677700 -115942.078783536 7.45168903630898
+678600 -117141.432444608 7.42879496076876
+679500 -118192.759950769 7.40897554606462
+680400 -119142.841330368 7.39126079320517
+681300 -120016.034222175 7.37514073938797
+682200 -120825.654113495 7.36032984241009
+683100 -121579.883688288 7.34664776366459
+684000 -122284.691166568 7.333961511701
+684900 -122945.161658291 7.322159217274
+685800 -123566.025199613 7.31113953733364
+686700 -124151.804192886 7.30080831363661
+687600 -124706.799444871 7.2910782629589
+688500 -125235.022944547 7.28186967186249
+689400 -125740.1270018 7.27311119240879
+690300 -126225.349871765 7.26474038482946
+691200 -126693.484006802 7.25670390552014
+692100 -127146.866972035 7.24895734479796
+693000 -127587.392636201 7.24146475874626
+693900 -128016.539341163 7.23419795309721
+694800 -128435.411371838 7.22713558204393
+695700 -116704.783393645 7.4370957309408
+696600 -114600.211137218 7.47767093554525
+697500 -113589.522965226 7.49750253393063
+698400 -113001.564723028 7.50914519425802
+699300 -112626.11373777 7.516621078395
+700200 -112375.730277122 7.521624670474
+701100 -112204.516691014 7.52505450037464
+702000 -112086.063001348 7.5274314014248
+702900 -112004.718136189 7.52906556471469
+703800 -111950.572189214 7.53015417512866
+704700 -111917.030574393 7.53082887627401
+705600 -111899.52280497 7.53118115545134
+706500 -111894.770530018 7.53127678978529
+707400 -111900.352032672 7.53116446868745
+708300 -111914.432480732 7.53088114875734
+709200 -111935.590919643 7.53045549598539
+710100 -111962.705840042 7.52991016705172
+711000 -111994.877374303 7.5292633631577
+711900 -112031.373069801 7.52852991476862
+712800 -112071.589238455 7.52772205594859
+713700 -112115.022843564 7.52684998840086
+714600 -112161.250670774 7.52592229994132
+715500 -112209.913635065 7.52494628020395
+716400 -112260.704775553 7.52392816246647
+717300 -90524.7277579065 8.02397020426472
+718200 -86802.6404574042 8.12532893688747
+719100 -84930.3195870527 8.17847696611847
+720000 -83746.6828093645 8.21286784351192
+720900 -82910.4978245252 8.23754638311241
+721800 -82277.2533630871 8.25645165894821
+722700 -81773.6805388802 8.27162107746074
+723600 -81358.2871419386 8.28422584496493
+724500 -81005.7411817029 8.29498932420378
+725400 -80699.6995082605 8.30438245295989
+726300 -80429.156215493 8.3127246699581
+727200 -80186.4374975203 8.32023999523894
+728100 -79966.034944225 8.32708998730007
+729000 -79763.8946090344 8.33339399534156
+729900 -79572.6780332122 8.3393764619494
+730800 -79398.1212029744 8.34485403340139
+731700 -79235.4553226963 8.34997256772656
+732600 -79082.6980737894 8.35479175490039
+733500 -78938.4576160944 8.35935336676966
+734400 -78801.6799995997 8.36368897851677
+735300 -78671.5386013627 8.36782331877942
+736200 -78547.367130535 8.3717762964017
+737100 -78428.6165730918 8.37556430109886
+738000 -78314.8265089713 8.37920106830593
+738900 -85776.4744608824 8.1542725766597
+739800 -87862.5994187659 8.09589504026774
+740700 -89009.7575039965 8.06455569132096
+741600 -89764.0022421515 8.04423495806569
+742500 -90309.1696677035 8.0296847679994
+743400 -90728.312558953 8.01857546845249
+744300 -91065.1149542585 8.009696789085
+745200 -91348.6304494203 8.00225584657557
+746100 -91587.9550022443 7.99599801953608
+747000 -91795.6452296669 7.99058455388503
+747900 -91979.5046868755 7.98580549958397
+748800 -92144.8204827035 7.9815190332191
+749700 -92295.3514928707 7.97762460143862
+750600 -92433.8574096154 7.97404855588356
+751500 -92562.4167240401 7.97073554208958
+752400 -92682.6287952807 7.96764304252617
+753300 -92795.7473169631 7.96473778160734
+754200 -92902.7711489682 7.96199328478566
+755100 -93004.507670882 7.959388179568
+756000 -93101.6179109257 7.95690498745234
+756900 -93194.6492996366 7.95452924852909
+757800 -93284.0598485181 7.95224887617102
+758700 -93370.2362791543 7.95005367378746
+759600 -93453.5078138664 7.94793496764179
+760500 -119588.4704391 7.38302318289239
+761400 -125405.856750039 7.27890388076788
+762300 -128584.017129272 7.22463779836796
+763200 -130745.297084471 7.18872048913439
+764100 -132395.619353293 7.16180997472578
+765000 -133752.01432461 7.14001650973401
+765900 -134920.734713113 7.12146745910935
+766800 -135956.765110643 7.10519804424723
+767700 -136890.695223521 7.09066939683404
+768600 -137741.933336904 7.07753886484291
+769500 -138524.84084192 7.06555506765967
+770400 -139251.236394125 7.05451470795004
+771300 -139931.210048321 7.04424748786619
+772200 -140573.267946079 7.03461208944023
+773100 -141184.299395233 7.02549524924795
+774000 -141769.57886491 7.01681057079019
+774900 -142332.87386705 7.0084959793107
+775800 -142876.658338952 7.00050982510065
+776700 -143402.396994979 6.99282614655035
+777600 -143910.854654578 6.98542975831036
+778500 -144402.388020032 6.97831176171078
+779400 -144877.189465594 6.97146588467779
+780300 -145335.467337811 6.96488583493391
+781200 -145777.56062007 6.95856365799086
+782100 -93135.0363269435 7.95608552304576
+783000 -84680.5688982999 8.18568867937207
+783900 -80479.3116563618 8.31117819514005
+784800 -77850.1789638779 8.39412428739874
+785700 -76008.1079356462 8.45443920917204
+786600 -74627.7861892035 8.5008937443929
+787500 -73544.7748333139 8.53813090473799
+788400 -72665.7231796023 8.56888300243666
+789300 -71933.215193255 8.59488000606683
+790200 -71309.7923986832 8.61727790727498
+791100 -70769.886169073 8.63688180420059
+792000 -70295.4075141554 8.6542711119286
+792900 -69873.1813483333 8.6698741010972
+793800 -69493.3770076035 8.68401442884894
+794700 -69148.5078321874 8.69694133875301
+795600 -68832.7712736735 8.70884990477892
+796500 -68541.6008890016 8.71989497448664
+797400 -68271.3546118051 8.73020099674306
+798300 -68019.0931740834 8.73986908847302
+799200 -67782.4196185275 8.74898220651442
+800100 -67559.3610788623 8.75760899335336
+801000 -67348.2803410798 8.7658066789251
+801900 -67147.808729115 8.77362330034652
+802800 -66956.7944858959 8.78109942199813
+803700 -56090.9239497266 9.25854162642601
+804600 -52801.4340051622 9.4273515156177
+805500 -50813.4162901996 9.53614736141843
+806400 -49388.102266566 9.61761167671994
+807300 -48278.4857783913 9.68317645543193
+808200 -47370.1901497049 9.73832003361143
+809100 -46600.8372716663 9.78611378629176
+810000 -45932.7142142475 9.82845810613157
+810900 -45341.3208071428 9.86661248968543
+811800 -44809.869708948 9.90145525776314
+812700 -44326.3754057708 9.93362345216743
+813600 -43881.9959434131 9.96359378382517
+814500 -43470.0321585363 9.99173217861745
+815400 -43085.2949554494 10.0183255050655
+816300 -42723.6896708725 10.0436026593663
+817200 -42381.9341386978 10.0677490190719
+818100 -42057.3621161931 10.0909166174829
+819000 -41747.7828807024 10.1132314751205
+819900 -41451.3787458384 10.1347989962041
+820800 -41166.6287481992 10.1557080207066
+821700 -40892.25075722 10.1760339250352
+822600 -40627.1567995708 10.1958410375008
+823500 -40370.4180415563 10.2151845511021
+824400 -40121.2369692078 10.2341120599435
+825300 -39878.9250427821 10.2526648074409
+826200 -39642.8846012174 10.2708787084934
+827100 -39412.5941302915 10.2887851902366
+828000 -39187.5962370408 10.3064118842647
+828900 -38967.4878276867 10.3237831955104
+829800 -38751.9120913885 10.3409207679696
+830700 -38536.8799591658 10.358138938654
+831600 -38328.588614806 10.3749367604906
+832500 -38124.7250635403 10.3914927148501
+833400 -37924.6639177047 10.4078520487496
+834300 -37728.0335474711 10.4240404391656
+835200 -37534.5578417115 10.4400764326408
+836100 -37344.0184908012 10.4559743318172
+837000 -37156.2370853411 10.4717455408217
+837900 -36971.0644491864 10.4873993581412
+838800 -36788.3736922978 10.502943488242
+839700 -36608.0554416176 10.5183843896141
+840600 -36430.0144195114 10.5337275224076
+841500 -36254.1668853438 10.5489775324778
+842400 -36080.4386503625 10.5641383938045
+843300 -35908.7634915202 10.5792135223858
+844200 -35739.0818590317 10.5942058693606
+845100 -35571.3398134817 10.6091179979347
+846000 -35405.4881519458 10.6239521468482
+846900 -35241.4816956113 10.6387102821362
+847800 -35079.2787180648 10.6533941384479
+848700 -34918.8404963981 10.6680052510146
+849600 -34760.1309684428 10.6825449793278
+850500 -34603.1164797019 10.6970145236408
+851400 -34447.7656037036 10.7114149354636
+852300 -34294.0490198221 10.7257471232642
+853200 -34141.9394333678 10.7400118545863
+854100 -33991.4115238408 10.7542097557576
+855000 -33842.4419088521 10.7683413102703
+855900 -33695.0091129994 10.7824068568
+856800 -33549.093533085 10.7964065876737
+857700 -33404.6773931484 10.8103405484323
+858600 -33261.744684916 10.8242086389562
+859500 -33120.281091225 10.8380106164488
+860400 -32980.2738917544 10.8517461004089
+861300 -32841.7118518724 10.8654145795813
+862200 -32704.5850966312 10.8790154207482
+863100 -32568.8849727996 10.892547879129
+864000 -32434.6039024037 10.9060111100879
+864900 -32301.7352315224 10.9194041818013
+865800 -32170.2730781089 10.9327260885209
+866700 -32040.2121824377 10.9459757640687
+867600 -31911.5477634006 10.9591520952228
+868500 -31784.2753834336 10.972253934683
+869400 -31658.390824298 10.9852801133527
+870300 -31533.8899753771 10.9982294517223
+871200 -31410.7687355831 11.0111007701885
+872100 -31289.0229294077 11.0238928982033
+873000 -31168.6482372173 11.0366046821848
+873900 -31049.6401394 11.0492349921779
+874800 -30931.9938736905 11.0617827272828
+875700 -30815.7044046896 11.0742468199071
+876600 -30700.7664043985 11.0866262389204
+877500 -30587.1742424833 11.0989199918103
+878400 -30474.9219848827 11.1111271259541
+879300 -30364.0033993841 11.1232467291226
+880200 -30254.4119668186 11.1352779293424
+881100 -30146.140896583 11.1472198942344
+882000 -30039.1831453011 11.1590718299478
+882900 -29933.5314375551 11.1708329797948
+883800 -29829.1782877089 11.1825026226906
+884700 -29726.116022043 11.1940800714811
+885600 -29624.3368004753 11.2055646712399
+886500 -29523.8326373328 11.2169557975985
+887400 -29424.5954207361 11.2282528551616
+888300 -29326.6169302626 11.2394552760526
+889200 -29229.8888526987 11.2505625186167
+890100 -29134.4027957279 11.261574066307
+891000 -29040.1502995224 11.2724894267641
+891900 -28947.1228462724 11.2833081310939
+892800 -28855.3118677087 11.2940297333435
+893700 -28764.7087507624 11.3046538101647
+894600 -28675.3048415061 11.3151799606569
+895500 -28587.0914475613 11.3256078063703
+896400 -28500.0598391699 11.3359369914533
+897300 -28414.2012491275 11.3461671829232
+898200 -28329.5068717941 11.3562980710388
+899100 -28245.9678613693 11.3663293697556
+9e+05 -28163.5753296314 11.3762608172399
+900900 -28082.3203433258 11.3860921764224
+901800 -28002.1939213558 11.3958232355735
+902700 -27923.1870319259 11.4054538088802
+903600 -27845.2905897827 11.4149837370095
+904500 -27768.4954536438 11.4244128876439
+905400 -27692.7924239355 11.4337411559755
+906300 -27618.172240883 11.4429684651497
+907200 -27544.6255830491 11.4520947666474
+908100 -27472.1430663404 11.4611200406
+909000 -27400.7152435201 11.4700442960321
+909900 -27330.332604247 11.4788675710265
+910800 -27260.9855756349 11.4875899328116
+911700 -27192.6645233442 11.4962114777682
+912600 -27125.3597531714 11.504732331357
+913500 -27059.0615131415 11.5131526479674
+914400 -26993.7599960411 11.5214726106916
+915300 -26929.445342395 11.5296924310246
+916200 -26866.1076438348 11.5378123484942
+917100 -26803.7369468109 11.5458326302283
+918000 -26742.3232566334 11.5537535704585
+918900 -26681.8565417808 11.5615754899696
+919800 -26622.326738447 11.5692987354969
+920700 -26563.7237552815 11.5769236790783
+921600 -26506.0374782835 11.5844507173649
+922500 -26449.2577758196 11.5918802708963
+923400 -26393.3745037244 11.5992127833435
+924300 -26338.377510445 11.6064487207275
+925200 -26284.2566422167 11.6135885706141
+926100 -26231.0017482156 11.620632841293
+927000 -26178.6026856841 11.627582060943
+927900 -26127.0493249944 11.6344367767875
+928800 -26076.3315546299 11.6411975542456
+929700 -26026.439286061 11.6478649760798
+930600 -25977.3624585157 11.654439641545
+931500 -25929.0910436102 11.6609221655404
+932400 -25881.615049831 11.6673131777691
+933300 -25834.9245268722 11.6736133219054
+934200 -25789.009569806 11.6798232547717
+935100 -25743.8603230796 11.68594364553
+936000 -25699.4669843345 11.6919751748867
+936900 -25655.819808062 11.6979185343114
+937800 -25612.9091090581 11.7037744252748
+938700 -25570.7252657018 11.7095435585038
+939600 -25529.2587230564 11.715226653254
+940500 -25488.4999957811 11.7208244366031
+941400 -25448.4396708638 11.7263376427635
+942300 -25409.0684101774 11.7317670124158
+943200 -25370.3769528544 11.7371132920629
+944100 -25332.3561174939 11.7423772334052
+945000 -25294.9968042093 11.7475595927355
+945900 -25258.2899964886 11.752661130358
+946800 -25222.2267629232 11.7576826100249
+947700 -25186.7982587604 11.7626247983971
+948600 -25151.9957273256 11.7674884645223
+949500 -25117.8105012849 11.7722743793371
+950400 -25084.2340037798 11.7769833151867
+951300 -25051.2577494281 11.7816160453654
+952200 -25018.8733451947 11.7861733436769
+953100 -24987.0724911413 11.7906559840132
+954000 -24955.8469810656 11.7950647399526
+954900 -24925.1887030236 11.7994003843753
+955800 -24895.089639746 11.8036636890982
+956700 -24865.5418689653 11.8078554245251
+957600 -24836.537563632 11.8119763593155
+958500 -24808.0689920578 11.8160272600685
+959400 -24780.1285179592 11.820008891024
+960300 -24752.7086004314 11.8239220137775
+961200 -24725.8017938431 11.8277673870112
+962100 -24699.4007476557 11.8315457662396
+963000 -24673.4982061876 11.8352579035675
+963900 -24648.0870083012 11.8389045474634
+964800 -24623.1600870431 11.8424864425447
+965700 -24598.7104692202 11.8460043293759
+966600 -24574.7312749388 11.849458944278
+967500 -24551.2157170686 11.8528510191521
+968400 -24528.1571007014 11.8561812813102
+969300 -24505.5488225335 11.8594504533203
+970200 -24483.3843702257 11.8626592528602
+971100 -24461.6573217306 11.8658083925815
+972000 -24440.3613445797 11.8688985799835
+972900 -24419.4901951473 11.8719305172952
+973800 -24399.0377178812 11.8749049013679
+974700 -24378.9978445137 11.8778224235744
+975600 -24359.3645932478 11.8806837697175
+976500 -24340.1320679243 11.8834896199453
+977400 -24321.2944571636 11.8862406486755
+978300 -24302.8460335043 11.8889375245245
+979200 -24284.7811525155 11.8915809102449
+980100 -24267.0942519015 11.8941714626692
+981000 -24249.7798505899 11.89670983266
+981900 -24232.8325478237 11.8991966650638
+982800 -24216.2470222221 11.9016325986749
+983700 -24200.0180308589 11.9040182661999
+984600 -24184.140408319 11.9063542942303
+985500 -24168.6090657532 11.9086413032194
+986400 -24153.4189899345 11.9108799074631
+987300 -24138.5652423079 11.9130707150861
+988200 -24124.04295804 11.9152143280315
+989100 -24109.8473450693 11.9173113420548
+990000 -24095.9736831538 11.9193623467219
+990900 -24082.4173229233 11.9213679254102
+991800 -24069.1736849322 11.9233286553135
+992700 -24056.2382587141 11.9252451074501
+993600 -24043.6066018424 11.9271178466737
+994500 -24031.2743389903 11.928947431688
+995400 -24019.2371610015 11.9307344150627
+996300 -24007.4908239617 11.9324793432536
+997200 -23996.0311482751 11.934182756624
+998100 -23984.8540177518 11.935845189469
+999000 -23973.9553786955 11.9374671700421
+999900 -23963.3312390017 11.9390492205832
+1000800 -23952.9776672648 11.9405918573492
+1001700 -23942.8907918857 11.9420955906462
+1002600 -23933.0668001965 11.943560924863
+1003500 -23923.5019375834 11.9449883585076
+1004400 -23914.19250663 11.9463783842423
+1005300 -23905.1348662543 11.9477314889242
+1006200 -23896.3254308664 11.9490481536432
+1007100 -23887.7606695324 11.9503288537637
+1008000 -23879.437105144 11.951574058966
+1008900 -23871.351313594 11.9527842332904
+1009800 -23863.4999229773 11.9539598351796
+1010700 -23855.8796127817 11.9551013175249
+1011600 -23848.4871131003 11.9562091277108
+1012500 -23841.3192038486 11.9572837076622
+1013400 -23834.3727139905 11.9583254938917
+1014300 -23827.6445207829 11.9593349175457
+1015200 -23821.1315490146 11.9603124044548
+1016100 -23814.8307702714 11.9612583751803
+1017000 -23808.7392021943 11.9621732450658
+1017900 -23802.8539077645 11.9630574242845
+1018800 -23797.1719945883 11.9639113178899
+1019700 -23791.6906141843 11.9647353258672
+1020600 -23786.4069613031 11.9655298431815
+1021500 -23781.3182732351 11.9662952598297
+1022400 -23776.421829134 11.9670319608917
+1023300 -23771.7149493549 11.9677403265804
+1024200 -23767.1949948006 11.9684207322927
+1025100 -23762.8593662709 11.9690735486612
+1026000 -23758.7055038279 11.9696991416049
+1026900 -23754.7308861711 11.9702978723798
+1027800 -23750.9330300142 11.9708700976308
+1028700 -23747.3094894822 11.9714161694419
+1029600 -23743.8578555039 11.9719364353877
+1030500 -23740.5757552342 11.9724312385827
+1031400 -23737.4608514588 11.9729009177337
+1032300 -23734.5108420296 11.9733458071892
+1033200 -23731.7234592969 11.9737662369896
+1034100 -23729.0964695632 11.9741625329166
+1035000 -23726.6276725215 11.9745350165451
+1035900 -23724.314900731 11.9748840052902
+1036800 -23722.1560190832 11.9752098124576
+1037700 -23720.1489242782 11.975512747293
+1038600 -23718.2915443177 11.9757931150295
+1039500 -23716.5818379947 11.9760512169373
+1040400 -23715.0177944015 11.9762873503709
+1041300 -23713.5974324392 11.9765018088171
+1042200 -23712.3188003359 11.9766948819425
+1043100 -23711.1799751792 11.9768668556399
+1044000 -23710.1790624424 11.977018012076
+1044900 -23709.3141955336 11.9771486297371
+1045800 -23708.5835353466 11.9772589834744
+1046700 -23707.9852698109 11.977349344551
+1047600 -23707.5176134617 11.9774199806858
+1048500 -23707.1788070122 11.9774711560987
+1049400 -23706.9671169294 11.9775031315548
+1050300 -23706.8808350184 11.977516164409
+1051200 -23706.9182780194 11.9775105086485
+1052100 -23707.0777872031 11.9774864149367
+1053000 -23707.3577279788 11.9774441306555
+1053900 -23707.756489506 11.9773838999477
+1054800 -23708.272484313 11.9773059637589
+1055700 -23708.9041479221 11.9772105598787
+1056600 -23709.649938483 11.9770979229819
+1057500 -23710.5083364066 11.976968284669
+1058400 -23711.4778440108 11.9768218735065
+1059300 -23712.5569851725 11.9766589150663
+1060200 -23713.7443049794 11.9764796319649
+1061100 -23715.0383693935 11.9762842439026
+1062000 -23716.4377649163 11.976072967702
+1062900 -23717.9410982656 11.9758460173448
+1063800 -23719.5469960469 11.9756036040113
+1064700 -23721.2541044419 11.975345936116
+1065600 -23723.0610888999 11.9750732193441
+1066500 -23724.9666338256 11.9747856566889
+1067400 -23726.9694422795 11.9744834484871
+1068300 -23729.0682356862 11.9741667924541
+1069200 -23731.2617535421 11.9738358837187
+1070100 -23733.5487531292 11.973490914858
+1071000 -23735.9280092313 11.9731320759319
+1071900 -23738.3983138643 11.9727595545161
+1072800 -23740.9584759978 11.9723735357359
+1073700 -23743.6073212943 11.9719742022986
+1074600 -23746.343691843 11.9715617345266
+1075500 -23749.1664459035 11.9711363103887
+1076400 -23752.07445765 11.9706981055327
+1077300 -23755.0666169249 11.9702472933161
+1078200 -23758.1418289927 11.9697840448368
+1079100 -23761.2990142974 11.9693085289641
+1080000 -23764.5371082288 11.9688209123684
+1080900 -23767.8550608889 11.9683213595507
+1081800 -23771.2518368582 11.9678100328727
+1082700 -23774.7264149761 11.9672870925854
+1083600 -23778.2777881201 11.9667526968568
+1084500 -23781.9049629832 11.9662070018013
+1085400 -23785.6069598624 11.9656501615073
+1086300 -23789.3828124531 11.9650823280635
+1087200 -23793.2315676319 11.9645036515878
+1088100 -23797.1522852659 11.9639142802522
+1089000 -23801.1440380021 11.9633143603106
+1089900 -23805.2059110753 11.9627040361244
+1090800 -23809.3370021191 11.9620834501873
+1091700 -23813.5364209663 11.961452743152
+1092600 -23817.8032894711 11.9608120538544
+1093500 -23822.1367413219 11.9601615193379
+1094400 -23826.5359218588 11.9595012748787
+1095300 -23830.9999878999 11.9588314540092
+1096200 -23835.5281075645 11.9581521885414
+1097100 -23840.1194601026 11.9574636085906
+1098000 -23844.7732357243 11.9567658425987
+1098900 -23849.4886354359 11.9560590173561
+1099800 -23854.2648708771 11.9553432580246
+1100700 -23859.1011641567 11.9546186881596
+1101600 -23863.9967476983 11.9538854297317
+1102500 -23868.9508640861 11.9531436031478
+1103400 -23873.9627659105 11.9523933272726
+1104300 -23879.0317156164 11.95163471945
+1105200 -23884.1569853565 11.950867895523
+1106100 -23889.3378568501 11.9500929698539
+1107000 -23894.5736212363 11.9493100553448
+1107900 -23899.8635789307 11.9485192634577
+1108800 -23905.2070394969 11.9477207042329
+1109700 -23910.6033215023 11.9469144863088
+1110600 -23916.0517523866 11.9461007169412
+1111500 -23921.5516683307 11.9452795020215
+1112400 -23927.1024141305 11.944450946095
+1113300 -23932.7033430642 11.9436151523795
+1114200 -23938.3538167719 11.9427722227831
+1115100 -23944.05320513 11.9419222579216
+1116000 -23949.8008861324 11.9410653571358
+1116900 -23955.5962457696 11.9402016185095
+1117800 -23961.4386779119 11.9393311388853
+1118700 -23967.3275841975 11.938454013882
+1119600 -23973.262373913 11.9375703379111
+1120500 -23979.2424638874 11.9366802041924
+1121400 -23985.2672783815 11.9357837047707
+1122300 -23991.3362489776 11.9348809305311
+1123200 -23997.448814478 11.9339719712144
+1124100 -24003.6044207953 11.9330569154332
+1125000 -24009.8025208539 11.932135850686
+1125900 -24016.0425744861 11.931208863373
+1126800 -24022.3240483342 11.9302760388105
+1127700 -24028.646415754 11.9293374612447
+1128600 -24035.0091567163 11.9283932138668
+1129500 -24041.411757712 11.9274433788272
+1130400 -24047.8537116637 11.9264880372482
+1131300 -24054.3345178245 11.9255272692394
+1132200 -24060.8536816984 11.9245611539096
+1133100 -24067.4107149459 11.9235897693809
+1134000 -24074.0051352972 11.9226131928016
+1134900 -24080.6364664639 11.9216315003597
+1135800 -24087.3042380624 11.9206447672945
+1136700 -24094.007985519 11.9196530679104
+1137600 -24100.7472500012 11.9186564755879
+1138500 -24107.5215783255 11.9176550627974
+1139400 -24114.3305228804 11.9166489011104
+1140300 -24121.1736415596 11.9156380612106
+1141200 -24128.0504976694 11.914622612907
+1142100 -24134.9606598592 11.9136026251451
+1143000 -24141.9037020502 11.9125781660176
+1143900 -24148.8792033582 11.9115493027764
+1144800 -24155.8867480239 11.9105161018429
+1145700 -24162.9259253395 11.9094786288197
+1146600 -24169.9963295811 11.9084369485005
+1147500 -24177.0975599367 11.9073911248818
+1148400 -24184.2292204414 11.9063412211724
+1149300 -24191.3909199086 11.9052872998042
+1150200 -24198.5822718678 11.9042294224417
+1151100 -24205.8028944953 11.9031676499931
+1152000 -24213.0524105535 11.9021020426192
+1152900 -24220.330447327 11.9010326597438
+1153800 -24227.6366365623 11.8999595600628
+1154700 -24234.9706144033 11.8988828015542
+1155600 -24242.3320213381 11.8978024414866
+1156500 -24249.7205021321 11.8967185364297
+1157400 -24257.1357057766 11.895631142262
+1158300 -24264.5772854299 11.8945403141805
+1159200 -24272.0448983575 11.8934461067094
+1160100 -24279.5382058808 11.8923485737091
+1161000 -24287.0568733234 11.8912477683838
+1161900 -24294.6005699521 11.8901437432912
+1162800 -24302.1689689299 11.8890365503498
+1163700 -24309.7617472586 11.8879262408481
+1164600 -24317.3785857313 11.8868128654519
+1165500 -24325.0191688834 11.8856964742124
+1166400 -24332.6831849346 11.8845771165747
+1167300 -24340.3703257492 11.8834548413849
+1168200 -24348.0802867835 11.8823296968981
+1169100 -24355.8127670385 11.8812017307859
+1170000 -24363.5674690117 11.880070990144
+1170900 -24371.3440986552 11.8789375214991
+1171800 -24379.1423653245 11.8778013708169
+1172700 -24386.961981738 11.8766625835087
+1173600 -24394.8026639323 11.8755212044384
+1174500 -24402.6641312175 11.8743772779298
+1175400 -24410.5461061353 11.8732308477733
+1176300 -24418.4483144132 11.872081957233
+1177200 -24426.3704849304 11.8709306490527
+1178100 -24434.3123496697 11.8697769654631
+1179000 -24442.273643681 11.8686209481879
+1179900 -24450.2541050417 11.8674626384502
+1180800 -24458.2534748136 11.8663020769795
+1181700 -24466.2714970095 11.8651393040169
+1182600 -24474.3079185529 11.863974359322
+1183500 -24482.3624892382 11.8628072821787
+1184400 -24490.4349616974 11.8616381114011
+1185300 -24498.5250913628 11.8604668853397
+1186200 -24506.6326364303 11.8592936418867
+1187100 -24514.7573578235 11.8581184184824
+1188000 -24522.899019161 11.8569412521201
+1188900 -24531.0573867232 11.8557621793521
+1189800 -24539.2322294108 11.8545812362957
+1190700 -24547.4233187227 11.8533984586374
+1191600 -24555.6304287134 11.8522138816395
+1192500 -24563.8533359673 11.8510275401446
+1193400 -24572.0918195619 11.8498394685812
+1194300 -24580.3456610398 11.8486497009686
+1195200 -24588.6146443761 11.8474582709222
+1196100 -24596.8985559492 11.8462652116584
+1197000 -24605.1971845085 11.8450705559993
+1197900 -24613.5103211459 11.8438743363782
+1198800 -24621.837759267 11.8426765848438
+1199700 -24630.1792945628 11.8414773330649
+1200600 -24638.5347249766 11.840276612336
+1201500 -24646.9038506836 11.8390744535806
+1202400 -24655.2864740585 11.8378708873566

+ 4 - 0
connector-fetch-drutes/src/test/resources/data/710010001/current/predict.times

@@ -0,0 +1,4 @@
+# sensor data from:
+2022-03-08 20:00:00+01
+# meteo data from
+2022-03-08 23:00:00

+ 1 - 0
connector-fetch-drutes/src/test/resources/data/710010001/current/sensors.success

@@ -0,0 +1 @@
+1

+ 1338 - 0
connector-fetch-drutes/src/test/resources/data/710010002/current/710010002.predict

@@ -0,0 +1,1338 @@
+# time [s]     hpress [kPa]    sat deg [%]  
+0 -118.699997 57.1507874307272
+900 -126.342596253468 56.1830598896092
+1800 -129.887969565097 55.7570617391187
+2700 -132.761323593157 55.4216934629577
+3600 -135.293113734529 55.133189753404
+4500 -136.332560229901 55.0165786098767
+5400 -137.570582185753 54.8790521007438
+6300 -138.81468183444 54.742315236393
+7200 -140.036771655714 54.6094010964342
+8100 -139.219868429985 54.6980940381994
+9000 -139.144445557101 54.7063139154098
+9900 -139.232574736659 54.6967097633534
+10800 -139.398499335112 54.6786471060771
+11700 -138.868275524402 54.7364571315399
+12600 -138.692610220852 54.7556673939219
+13500 -138.609522221882 54.7647636945441
+14400 -138.578766012458 54.7681324559696
+15300 -138.762864261637 54.747981158541
+16200 -138.938853599289 54.7287469758185
+17100 -139.115115258955 54.7095118911566
+18000 -139.29525360832 54.6898835141688
+18900 -139.359722040337 54.6828661333773
+19800 -139.421149649512 54.6761833342331
+20700 -139.499852462162 54.6676262292923
+21600 -139.591256011455 54.6576953802773
+22500 -139.07162622993 54.7142551102486
+23400 -138.839488861992 54.7396031801288
+24300 -138.678974448095 54.7571597711522
+25200 -138.559560940544 54.7702364633105
+26100 -137.843927092549 54.8488841411688
+27000 -137.441603727139 54.8933112712747
+27900 -137.120292701496 54.9289029891344
+28800 -136.847433978212 54.9592050505882
+29700 -136.780881993211 54.9666067203174
+30600 -136.6184605059 54.9846885617279
+31500 -136.459486373129 55.0024112058785
+32400 -136.31021078002 55.0190748393944
+33300 -137.002060876354 54.9420244550074
+34200 -137.441642765124 54.8933069681009
+35100 -137.804262333485 54.8532573177306
+36000 -138.124837781463 54.8179548120686
+36900 -138.489526317759 54.7779121079289
+37800 -138.961275506179 54.7262986077754
+38700 -139.407082142471 54.6777135446997
+39600 -139.830662308291 54.6317207803498
+40500 -140.310189614914 54.5798519098315
+41400 -140.878826558014 54.5186155878618
+42300 -141.420187627863 54.4605880564913
+43200 -141.939124790496 54.4052106997834
+44100 -142.424396887899 54.3536426559684
+45000 -143.005416068541 54.2921733291671
+45900 -143.568383701364 54.2328958167652
+46800 -144.114773837556 54.1756271212745
+47700 -145.100874783556 54.0729212506599
+48600 -146.001190199084 53.979871795622
+49500 -146.829796257709 53.8948348015128
+50400 -147.613982793867 53.8148808480522
+51300 -148.990158007948 53.6757850372945
+52200 -150.178383290802 53.5569120237611
+53100 -151.26718687849 53.4489665567141
+54000 -152.296380361724 53.3477804798934
+54900 -155.99179921601 52.9910918509171
+55800 -158.642028840123 52.7414578297408
+56700 -160.97563957383 52.5257555270034
+57600 -163.141282002247 52.3289143517746
+58500 -171.443976543566 51.6024376923591
+59400 -176.522949835657 51.1786647878774
+60300 -181.055486017601 50.812779504181
+61200 -185.333410115558 50.4775124462112
+62100 -188.079665457433 50.2672072485542
+63000 -191.463467665194 50.0131705347214
+63900 -194.902102027965 49.7605693941422
+64800 -198.359730435833 49.5120057840132
+65700 -201.973272081964 49.2578377693327
+66600 -205.718316105338 49.0002336977633
+67500 -209.460736080188 48.7484953847719
+68400 -213.219828858531 48.5011383351845
+69300 -218.372309043007 48.170678222144
+70200 -223.150394073548 47.8727021221001
+71100 -227.855266704396 47.5868870525576
+72000 -232.565526006982 47.3079580603326
+72900 -233.673572897014 47.2433536283539
+73800 -236.08328782134 47.1041626709799
+74700 -238.896377026116 46.9438807549596
+75600 -241.930946778021 46.773581226207
+76500 -244.926136635491 46.6080697887257
+77400 -248.170869818264 46.4315802936415
+78300 -251.535761068374 46.2515570096861
+79200 -255.004161976856 46.0691022897317
+80100 -257.962216741472 45.91591599152
+81000 -261.082584315767 45.7566767934861
+81900 -264.36471562094 45.5917204915558
+82800 -267.769999378059 45.4232511934333
+83700 -270.174968342715 45.3058713977172
+84600 -272.906641921027 45.1741184439459
+85500 -275.857407093263 45.0336356081237
+86400 -278.960232622157 44.8879238152975
+87300 -279.820670895038 44.8478742063661
+88200 -281.504104903685 44.7699631888397
+89100 -283.538497099296 44.6765832185034
+90000 -285.789028501065 44.5742537480802
+90900 -287.26472713221 44.507700623415
+91800 -289.162208948903 44.4227519578931
+92700 -291.274076239925 44.3290222594861
+93600 -293.537249119743 44.22951743191
+94500 -296.096698300847 44.1181379296447
+95400 -298.391534979545 44.0192948522363
+96300 -300.791767117556 43.9169268611248
+97200 -303.289714391876 43.8114737593279
+98100 -304.063936928145 43.7790097185575
+99000 -305.165416928017 43.7330026074211
+99900 -306.583109742812 43.674093572487
+100800 -308.201020969589 43.6072813116912
+101700 -307.938986097825 43.6180719606728
+102600 -308.327877625292 43.6020611049345
+103500 -309.064782074357 43.5717917995275
+104400 -310.021136813181 43.5326431432118
+105300 -307.883271700691 43.6203680063351
+106200 -306.907798957745 43.6606497693667
+107100 -306.431875921147 43.6803612420531
+108000 -306.258396099424 43.687555881091
+108900 -305.569260444176 43.7161867272737
+109800 -305.09411444398 43.735974348498
+110700 -304.860899887452 43.7457008114215
+111600 -304.803118772419 43.7481120787489
+112500 -305.071770149727 43.7369058284777
+113400 -305.242001549813 43.729811379681
+114300 -305.503024151414 43.7189428177929
+115200 -305.848840146299 43.7045615318714
+116100 -305.778673478093 43.7074778559261
+117000 -305.866707495671 43.703819033689
+117900 -306.083754981794 43.6948038662143
+118800 -306.395696306616 43.6818612831071
+119700 -305.615571041483 43.7142601365969
+120600 -305.517365169979 43.7183460096555
+121500 -305.598045704889 43.7149891580559
+122400 -305.792114423096 43.7069191501552
+123300 -303.185109299583 43.815867355087
+124200 -302.440596202642 43.8471968427864
+125100 -302.028084357051 43.8645972626296
+126000 -301.796871627329 43.8743632395577
+126900 -303.586612774154 43.7990120397042
+127800 -305.102734106124 43.7356152150737
+128700 -306.472897434088 43.6786608798818
+129600 -307.775965120466 43.6247913326437
+130500 -311.38797688078 43.4769543760129
+131400 -314.190799118921 43.3637127360142
+132300 -316.745220134767 43.2616075159404
+133200 -319.170111343871 43.1656331280106
+134100 -324.579489845277 42.9548037324132
+135000 -328.829989535941 42.7922182267504
+135900 -332.755140874761 42.6444105810106
+136800 -336.512235577012 42.5049743017252
+137700 -341.878020214017 42.3092027641569
+138600 -347.340220953344 42.1138518985334
+139500 -352.601235261742 41.9293267341184
+140400 -357.7549751342 41.7519038379588
+141300 -364.039303269564 41.5398795575519
+142200 -370.41797612686 41.3293500930529
+143100 -376.681280678039 41.1270429078182
+144000 -382.905672935763 40.9301663235865
+144900 -395.325329595722 40.5491840765486
+145800 -406.070125034214 40.2316133576512
+146700 -416.414748674072 39.9357834135837
+147600 -426.670540575482 39.6515625542784
+148500 -444.134553883424 39.1870177630158
+149400 -459.925927114639 38.7865281765371
+150300 -475.546453532946 38.4072321133291
+151200 -491.389011319019 38.0384228339413
+152100 -510.350717154221 37.6164472869229
+153000 -529.568791040551 37.208703339168
+153900 -549.419804441681 36.8069113583729
+154800 -570.154623891813 36.4065785739287
+155700 -591.328086226433 36.0165506415152
+156600 -612.949168307929 35.6363070510616
+157500 -635.938446092876 35.2504045151321
+158400 -660.412668924004 34.8587525987671
+159300 -693.851822629553 34.3527533705215
+160200 -726.559353313197 33.8872260486473
+161100 -761.339878096629 33.4208448930449
+162000 -798.879981660234 32.9472441082916
+162900 -870.94111451351 32.1136622351899
+163800 -946.184354234451 31.3330618718718
+164700 -1029.85634414353 30.5538905470446
+165600 -1125.91818639184 29.7542761807741
+166500 -1172.57073553285 29.3970148984723
+167400 -1242.84550372881 28.8922072993239
+168300 -1329.57263803996 28.3178051380785
+169200 -1433.21750846102 27.6917750265697
+170100 -1457.12128375137 27.5556316809963
+171000 -1502.71883266687 27.3038359617923
+171900 -1566.40458503548 26.9682310287882
+172800 -1645.21388947526 26.5765756407804
+173700 -1703.65730076588 26.3014678893932
+174600 -1759.13588076944 26.0513993805833
+175500 -1827.97258120371 25.754949929674
+176400 -1910.24661990752 25.4190430920445
+177300 -2223.83142983842 24.2923486148942
+178200 -2549.2534410422 23.3222271182103
+179100 -2932.39413276352 22.367521251008
+180000 -3403.36457986195 21.3945492360693
+180900 -3091.70291761274 22.016943092556
+181800 -2860.55814130498 22.5336801735742
+182700 -2722.4122315342 22.869111529505
+183600 -2639.55387933684 23.0810776679208
+184500 -1996.51763234505 25.0865911885176
+185400 -1686.56882549697 26.3807241443406
+186300 -1504.78660799101 27.2926983940567
+187200 -1382.58714926804 27.9900068608824
+188100 -1191.77595498525 29.2553090177677
+189000 -1084.86093065439 30.0848261904891
+189900 -1009.17565137726 30.7386630011105
+190800 -951.112132579085 31.2847196771594
+191700 -890.026167597447 31.9076354206445
+192600 -843.49897049527 32.420251449759
+193500 -805.685788619939 32.8644410974027
+194400 -773.949381553402 33.2584707804435
+195300 -817.939881767384 32.71759264637
+196200 -825.986609911875 32.6226993123747
+197100 -827.74726240769 32.6020951275239
+198000 -826.962745653355 32.6112689843238
+198900 -864.86088099456 32.1804734078261
+199800 -882.699834509623 31.9860154503483
+200700 -896.232755818885 31.8418422531754
+201600 -907.639085254622 31.7224855132548
+202500 -925.274581053325 31.5417002490797
+203400 -936.398140011848 31.4299373452589
+204300 -946.373600361659 31.3311553248906
+205200 -955.757937517951 31.2394442110212
+206100 -965.756441028261 31.1429993717799
+207000 -974.363323202959 31.0610031149734
+207900 -982.784676705945 30.9816731196571
+208800 -991.148880050421 30.9037442319498
+209700 -1009.34677294506 30.7370899862207
+210600 -1031.96250131364 30.5352942186663
+211500 -1053.94941328435 30.3445043074584
+212400 -1075.70560472981 30.1607045822514
+213300 -1085.38831894137 30.0804391526509
+214200 -1109.49299981334 29.8845728871385
+215100 -1135.30933729897 29.68079799823
+216000 -1162.17941345712 29.4749625399446
+216900 -1184.81551609343 29.3062732250632
+217800 -1217.43162721188 29.070394062134
+218700 -1251.91719568127 28.8297117343085
+219600 -1288.00335556788 28.5868607116444
+220500 -1461.62886186878 27.5303513438645
+221400 -1615.67706574746 26.7205022815941
+222300 -1778.56504051844 25.9662682075892
+223200 -1959.65015230786 25.2262502952317
+224100 -2166.16093441669 24.4834850718358
+225000 -2405.83969223893 23.72871329866
+225900 -2687.90822033207 22.95640712014
+226800 -3023.73561849973 22.1635840822396
+227700 -3427.42985006051 21.3495452473685
+228600 -3916.35825152473 20.5159626130292
+229500 -4511.50990439366 19.6670324704335
+230400 -5291.04851096236 18.7524686663002
+231300 -6227.01600318852 17.8616254729969
+232200 -7352.2352566384 16.9966068704997
+233100 -8697.27661146164 16.1642247813438
+234000 -10280.7697619881 15.3759449690743
+234900 -12100.7942080041 14.6447344562046
+235800 -14122.8283445527 13.9836404222792
+236700 -16271.0177741047 13.4040695959206
+237600 -18432.811228112 12.9133751749709
+238500 -20483.3656088319 12.5124978299202
+239400 -22321.4224152686 12.1951212771137
+240300 -23895.5144135701 11.9491786717043
+241200 -25205.9463031835 11.7599581650165
+242100 -34157.1643128206 10.7387268402868
+243000 -40590.0430328008 10.1986535090242
+243900 -43807.3910089374 9.96867002214029
+244800 -45761.0608943052 9.83946893822348
+245700 -47293.3565868469 9.74304889796404
+246600 -48657.1279697439 9.660585694569
+247500 -49938.1949277898 9.58581298783479
+248400 -51177.9204162303 9.51578838248102
+249300 -52403.9599273188 9.448670893853
+250200 -53638.6299798632 9.38311131085309
+251100 -54900.6499847719 9.3180948531686
+252000 -56203.8031805534 9.25296565328475
+252900 -57553.8373512176 9.18753026497752
+253800 -58945.0006226622 9.12215490619588
+254700 -60358.1828113044 9.0577653891903
+255600 -61762.6681369416 8.99568358969075
+256500 -63122.1500831646 8.93731324407662
+257400 -64403.1835362112 8.88378631477564
+258300 -65582.4789736248 8.83571892657042
+259200 -66650.0997024295 8.79316173064961
+260100 -67608.1730369907 8.75571834888333
+261000 -68466.9363975746 8.72273730438051
+261900 -69240.4047569539 8.69348871283944
+262800 -69943.0872350481 8.66728245228421
+263700 -46595.8138309391 9.78649704820898
+264600 -40490.8746045362 10.2061187347069
+265500 -36452.402012338 10.5318136908799
+266400 -33285.8288975372 10.821883819099
+267300 -30583.335067866 11.0993530375628
+268200 -28125.4224867588 11.3808899112256
+269100 -25794.5307128989 11.6790953746238
+270000 -23548.3312820173 12.0015921082361
+270900 -21392.9373126548 12.3510208077715
+271800 -19354.4425071521 12.7263772955587
+272700 -17458.7773254396 13.1246668797101
+273600 -15723.0845757943 13.5420222280982
+274500 -14154.6054787443 13.9742149557541
+275400 -12752.3877349663 14.4168764261537
+276300 -11509.4693908364 14.8656643288713
+277200 -10414.8861562329 15.316432151717
+278100 -9455.39266045147 15.7653721896055
+279000 -8616.84936334532 16.2091030909955
+279900 -7898.00546049103 16.6366529262478
+280800 -7276.52831485286 17.0491872387885
+281700 -6724.4855127268 17.4559698981714
+282600 -6238.36753804133 17.8518238492028
+283500 -5811.47008824421 18.2339962003767
+284400 -5436.68959992294 18.6008489874805
+285300 -5700.93250938473 18.3389156515966
+286200 -5817.4995912277 18.228329172477
+287100 -5864.56541166647 18.1844907081404
+288000 -5873.82315833683 18.1759215522646
+288900 -5860.85135805185 18.1879333987961
+289800 -5834.5779196367 18.2123685545375
+290700 -5800.54923170194 18.2442294392206
+291600 -5762.37404232206 18.2802626710778
+292500 -5722.46475621208 18.3182654829532
+293400 -5682.45802584063 18.3567079277631
+294300 -5643.47044938187 18.3945105578603
+295200 -5606.26185381423 18.4309057479046
+296100 -5571.34337056631 18.4653472093274
+297000 -5539.05090745318 18.4974488193047
+297900 -5509.59611876935 18.5269420796291
+298800 -5483.1023184916 18.5536458472971
+299700 -5459.63008803585 18.5774443922065
+300600 -5439.19570166736 18.59827124738
+301500 -5421.78447213107 18.6160971737691
+302400 -5407.36046011943 18.6309211000115
+303300 -5395.87355508823 18.642763245847
+304200 -5387.26464030408 18.6516598690886
+305100 -5381.46935239563 18.6576592330407
+306000 -5378.42080428859 18.6608184999533
+306900 -5362.62307101576 18.6772355289635
+307800 -5718.62451335823 18.3219636704454
+308700 -6224.65471644535 17.8635779463098
+309600 -6838.03431573745 17.3688473330842
+310500 -7581.52515000046 16.8412595470652
+311400 -8403.07920163146 16.331274274881
+312300 -9295.32280070768 15.8460381471976
+313200 -10249.7858337629 15.3897634219419
+314100 -11252.4809850008 14.9663425488695
+315000 -12285.6087331607 14.578472045316
+315900 -13329.2485700985 14.2274459277437
+316800 -14363.4022288615 13.9131582578214
+317700 -15370.0831043739 13.6342413434659
+318600 -16334.98762215 13.3883136899323
+319500 -17248.395483762 13.1722986213811
+320400 -18105.2101740302 12.9827596998198
+321300 -18904.3143419186 12.8162004146669
+322200 -19646.0198383919 12.6695884563525
+323100 -20307.9902532789 12.5446833647078
+324000 -20939.0124173986 12.4304448992765
+324900 -21535.7657218293 12.3264506552063
+325800 -22098.9017473303 12.2316908797874
+326700 -22630.7696987562 12.1450289622304
+327600 -23134.2745194728 12.0653918472584
+328500 -35020.7383747882 10.6588711893044
+329400 -41128.2940034457 10.1585572378041
+330300 -44159.2708813832 9.94485387304003
+331200 -46373.7928770098 9.80041814034127
+332100 -48360.7820227508 9.6782492400161
+333000 -50287.5132125563 9.56585720731734
+333900 -52204.020208396 9.45947786609962
+334800 -54097.438091256 9.3592480750135
+335700 -55916.9812397402 9.26713187755728
+336600 -57603.5545227092 9.18515905239155
+337500 -59116.1998618211 9.11424827631485
+338400 -60443.26033269 9.05395131095668
+339300 -61597.6768220154 9.00288071860841
+340200 -62605.3193318094 8.95930918651069
+341100 -63494.743336441 8.92159974840832
+342000 -64291.4642049519 8.88839872095559
+342900 -65016.0426244295 8.85866477262662
+343800 -65684.2499675396 8.83162311414318
+344700 -66307.9883074204 8.80670158705288
+345600 -66896.2794995177 8.78347382734716
+346500 -67456.0721121702 8.7616163408337
+347400 -67992.8254193831 8.7408785836154
+348300 -68510.9051606796 8.72106298990156
+349200 -69013.8403586854 8.70201196298937
+350100 -53506.1911928085 9.39006979522529
+351000 -49672.0567999598 9.60114548451327
+351900 -47368.4522606989 9.73842969315096
+352800 -45657.886388377 9.84611107327462
+353700 -44254.6766488499 9.9384341651637
+354600 -43042.5595973416 10.0212997734964
+355500 -41966.6627811824 10.0974333386208
+356400 -40997.5202075377 10.1682156874806
+357300 -40117.1189353526 10.2344270216694
+358200 -39313.0387051443 10.2965691278805
+359100 -38575.866012983 10.3550086535298
+360000 -37898.0016328357 10.4100413277806
+360900 -37273.0785053209 10.4619207648296
+361800 -36695.6535054729 10.5108713974972
+362700 -36161.0256955904 10.5570943900841
+363600 -35665.1152912583 10.6007705631032
+364500 -35207.7965392124 10.6417527917034
+365400 -34785.1878056335 10.680244009651
+366300 -34389.4357472466 10.7168439199622
+367200 -34018.7412321465 10.7516261479073
+368100 -33671.7607465102 10.7846323053708
+369000 -33347.1368013365 10.8159143191218
+369900 -33043.5418877382 10.8455299387532
+370800 -32759.7189567838 10.8735382338904
+371700 -28002.7152121795 11.3958062859686
+372600 -24789.403232546 11.8187174263366
+373500 -22313.3654725375 12.1964493282687
+374400 -20172.0475026267 12.5699230041148
+375300 -18226.1999191817 12.9569578069016
+376200 -16428.7207196166 13.3654541833021
+377100 -14767.2319732404 13.7983295185414
+378000 -13241.1913633175 14.2556828267789
+378900 -11852.0374701587 14.7359074290131
+379800 -10599.3200288463 15.2362854128885
+380700 -9479.69259810328 15.7532933272224
+381600 -8487.15267146196 16.2827579411543
+382500 -7613.70064841729 16.8199597872936
+383400 -6850.0286126203 17.3597582681406
+384300 -6204.10563295005 17.8812437569957
+385200 -5636.16260498551 18.4016686654175
+386100 -5141.43508535264 18.9138052202768
+387000 -4713.32383646691 19.4115236199332
+387900 -4343.88258295539 19.8906913214577
+388800 -4025.1134873919 20.34873425576
+389700 -3749.54144658568 20.7843772672969
+390600 -3510.48165964072 21.197377303641
+391500 -3302.13713068162 21.5882408921124
+392400 -3119.59046516294 21.9579607223901
+393300 -3671.04410569192 20.9163096778159
+394200 -4508.73906499878 19.6707258873828
+395100 -5514.18466731578 18.5224924478539
+396000 -6725.84977316676 17.4550335957592
+396900 -8159.76128353935 16.4754199500349
+397800 -9803.23407167826 15.5961189756809
+398700 -11608.487990716 14.8276951443612
+399600 -13495.1549517631 14.1749732847213
+400500 -15366.0988777991 13.6353274791038
+401400 -17132.1618210668 13.1989723835541
+402300 -18733.3282686458 12.8510742038454
+403200 -20145.7631459644 12.5748080663922
+404100 -21374.8555588149 12.3541256194031
+405000 -22442.3485683275 12.1754283867274
+405900 -23375.1401235794 12.0280895240072
+406800 -24198.6604219144 11.9042205498741
+407700 -24934.2162148041 11.798124980443
+408600 -25575.7546810092 11.7088565333017
+409500 -26171.7814572027 11.6284892179607
+410400 -26726.3028053456 11.5558247009337
+411300 -27243.3529299162 11.4898131475389
+412200 -27727.2570627058 11.4294909374613
+413100 -28182.0283406152 11.3740338239019
+414000 -28611.1693969051 11.3227578631141
+414900 -46899.8166303822 9.76752905442979
+415800 -53673.4503257513 9.38130582495513
+416700 -58175.5297266555 9.15807434540782
+417600 -62678.62493156 8.95618440312583
+418500 -66996.9158306254 8.77953365655243
+419400 -70651.417619242 8.64121318230782
+420300 -73500.0175823252 8.53968688890533
+421200 -75714.0140716504 8.46424508197743
+422100 -77530.3559508246 8.40446203389792
+423000 -79128.9262372869 8.35333273659149
+423900 -80623.2544690695 8.30673652072382
+424800 -82079.2715574072 8.26240163710659
+425700 -83528.7165983373 8.21927011307504
+426600 -84976.200660071 8.17715641773243
+427500 -86405.8522906477 8.13646638746828
+428400 -87790.6500451129 8.09787824196288
+429300 -89103.0560778101 8.06203013839652
+430200 -90323.3224918158 8.02930880029707
+431100 -91443.0057308028 7.99978581543723
+432000 -92463.9946400904 7.97327155906461
+432900 -93395.1713585117 7.94941913781016
+433800 -94248.8325225649 7.92782215060584
+434700 -95038.0242641427 7.9080810323422
+435600 -95775.0102439514 7.88983713788037
+436500 -75474.4030082849 8.47228626549231
+437400 -70288.0435310375 8.65454776598584
+438300 -67050.7049195563 8.7774235404467
+439200 -64610.7190998936 8.87524627074561
+440100 -62607.4799567056 8.95921797111636
+441000 -60881.6410024981 9.03441022832306
+441900 -59350.2430644677 9.10348729012122
+442800 -57965.33810245 9.16798036482938
+443700 -56696.7627870302 9.22883757019127
+444600 -55524.001081168 9.28669293811845
+445500 -54432.0481441335 9.34200713601525
+446400 -53409.2188080364 9.3951432250148
+447300 -52445.9647275611 9.44640716510739
+448200 -51534.2375451293 9.4960682868234
+449100 -50667.1537367932 9.54436813586022
+450000 -49838.8238853511 9.59152271572713
+450900 -49044.264733101 9.63772138358314
+451800 -48279.3437065839 9.68312462796841
+452700 -47540.7255436887 9.72786224463083
+453600 -46825.8050169352 9.77203283338609
+454500 -46132.6207063609 9.81570500771513
+455400 -45459.7527246898 9.85892025804612
+456300 -44806.2120757857 9.90169708337331
+457200 -44171.3309783596 9.94403583491633
+458100 -42344.0689600496 10.0704431631837
+459000 -40880.7444129566 10.1768922872156
+459900 -39680.7735329246 10.267947228191
+460800 -38619.3206342896 10.3515244371229
+461700 -37648.6705070222 10.4306067099818
+462600 -36745.7022124577 10.5065898307444
+463500 -35896.9740952533 10.5802533495859
+464400 -35093.6801804574 10.6520879284177
+465300 -34329.5210922208 10.7224334286463
+466200 -33599.6737349249 10.7915457760604
+467100 -32900.2579059424 10.859631137708
+468000 -32228.0518269132 10.9268632420221
+468900 -31580.3382355144 10.9933915302879
+469800 -30954.8192254498 11.059344313821
+470700 -30349.5657664194 11.1248293824059
+471600 -29762.9826773838 11.1899335654581
+472500 -29197.2164681263 11.2543258990319
+473400 -28652.8343218897 11.3178331062597
+474300 -28121.6941592244 11.3813244034444
+475200 -27603.3370345329 11.4448076257442
+476100 -27097.9316745402 11.5082134531706
+477000 -26605.6662071178 11.5714650609586
+477900 -26126.6743005804 11.6344875090847
+478800 -25661.0454651091 11.6972070666593
+479700 -35578.4426948021 10.6086068799332
+480600 -41422.7745858166 10.1369117586815
+481500 -44658.6426706869 9.91147560467139
+482400 -47102.2772390172 9.75485243295382
+483300 -49265.3114756292 9.62477491858106
+484200 -51260.0876834764 9.51122691289134
+485100 -53093.7350833342 9.41180148914298
+486000 -54749.9771766416 9.32575517681205
+486900 -56219.1393345691 9.25221097263961
+487800 -57506.8669381479 9.18977304635728
+488700 -58631.4562460243 9.13671275041208
+489600 -59617.3572611147 9.09127215524345
+490500 -60489.5469146694 9.05187886645898
+491400 -61270.3011086918 9.01723613574956
+492300 -61978.0332492021 8.98632533756108
+493200 -62627.3460834542 8.95836667486195
+494100 -63229.5932893257 8.93276913595588
+495000 -63793.5441430035 8.9090848273694
+495900 -64325.9734435699 8.88697259944834
+496800 -64832.1272860653 8.86617093806916
+497700 -65316.0719928371 8.84647834770104
+498600 -65780.9513824189 8.82773922246924
+499500 -66229.1782778775 8.8098335321375
+500400 -66662.5810545249 8.79266909311879
+501300 -85842.2384658103 8.15241441331367
+502200 -91155.5257426532 8.00732427646954
+503100 -94935.3647086779 7.91063910974357
+504000 -98221.6821772305 7.83055569553277
+504900 -101057.683121484 7.76419404393253
+505800 -103428.62826372 7.71054448892534
+506700 -105411.664927674 7.66688493910189
+507600 -107126.061475288 7.6299911647101
+508500 -108681.927518247 7.59716679432509
+509400 -110158.868248593 7.56656740987097
+510300 -111602.044264016 7.5371780443985
+511200 -113025.649746519 7.50866694403692
+512100 -114420.924604519 7.48117229210664
+513000 -115767.196200707 7.45505300854813
+513900 -117042.906817113 7.4306642127752
+514800 -118233.279089252 7.40821631155187
+515700 -119333.200911267 7.38773353697725
+516600 -120346.277402552 7.3690837915773
+517500 -121282.059409282 7.35203725574928
+518400 -122153.119757434 7.3363225476533
+519300 -122972.782320872 7.32166746791154
+520200 -123753.62471887 7.30782400707835
+521100 -124506.571246006 7.29458214567392
+522000 -125240.363538673 7.28177685229967
+522900 -99133.8094297071 7.80895178884337
+523800 -94178.5559197224 7.92959249803363
+524700 -91584.2598546617 7.99609531377824
+525600 -89886.8630907097 8.0409462309248
+526500 -88645.4463874573 8.07445121755108
+527400 -87672.8747753733 8.10112901893185
+528300 -86874.8361022644 8.12330815056377
+529200 -86198.3587437378 8.14231712897768
+530100 -85611.2599452667 8.1589723291499
+531000 -85092.7516398218 8.17380556662161
+531900 -84628.7229519127 8.18718017861995
+532800 -84209.1938289478 8.19935444417233
+533700 -83826.85730481 8.21051824074494
+534600 -83476.2028167046 8.22081526159379
+535500 -83152.9664926829 8.23035703599466
+536400 -82853.7740059816 8.23923208584561
+537300 -82572.2417988977 8.247621373104
+538200 -82314.1666890875 8.25534437558072
+539100 -82074.0823682055 8.26255728980945
+540000 -81849.5051155038 8.26932917426684
+540900 -81638.8782738799 8.27570236883694
+541800 -81441.0340558361 8.28170826790853
+542700 -81255.0045181102 8.28737282589128
+543600 -81079.9474025305 8.29271868232298
+544500 -76004.7024677272 8.45455524179871
+545400 -73386.9133185727 8.54361933488377
+546300 -71578.4346142602 8.60759600491688
+547200 -70160.9732105766 8.65922632261231
+548100 -68977.166520307 8.70339542677113
+549000 -67949.6627139235 8.74253858929905
+549900 -67034.5860580823 8.77805169205282
+550800 -66204.6050309081 8.81081128455519
+551700 -65441.4859101718 8.84140607212043
+552600 -64732.4006055272 8.87025283366197
+553500 -64067.9362574467 8.89765934765112
+554400 -63440.9532969215 8.92386061549695
+555300 -62845.8974554439 8.94904066432844
+556200 -62278.367745858 8.97334616113709
+557100 -61734.8343297067 8.99689521910354
+558000 -61212.4464424066 9.01978332903841
+558900 -60708.8953981657 9.04208756142226
+559800 -60222.3118348067 9.06386972845727
+560700 -59751.184780201 9.08517891724477
+561600 -59294.2952788546 9.10605362989034
+562500 -58850.6604811936 9.12652365571864
+563400 -58419.4859804773 9.14661173358436
+564300 -58000.1252229218 9.16633502506826
+565200 -57592.0453157248 9.18570640247121
+566100 -61330.7387909552 9.01458294680413
+567000 -63692.6570768863 8.91330326828759
+567900 -65274.3612542842 8.84816887549169
+568800 -66476.6184675206 8.80001654181591
+569700 -67456.1817021851 8.76161229308362
+570600 -68288.2232025689 8.7295563644017
+571500 -69013.676468352 8.70201822692802
+572400 -69657.5726235848 8.67788913341791
+573300 -70236.681609307 8.65643401800678
+574200 -70762.9901486465 8.63713345272172
+575100 -71245.4599688033 8.61960363212314
+576000 -71691.0088478398 8.60355168816983
+576900 -72105.1043946769 8.58874868415799
+577800 -72492.1470840207 8.57501226206485
+578700 -72857.0842989271 8.56214735894506
+579600 -73198.3572746818 8.55019218905559
+580500 -73520.968823163 8.53895713487152
+581400 -73828.0323198736 8.52832287135374
+582300 -74121.41396174 8.51821597306892
+583200 -74402.5417649709 8.50857985079142
+584100 -74672.6120357319 8.49936718137083
+585000 -74932.6596406094 8.49053721648924
+585900 -75183.5901465934 8.48205447944571
+586800 -75426.1994508567 8.47388793601806
+587700 -107596.09752662 7.62002449995971
+588600 -114559.710994778 7.47846402752707
+589500 -118621.269172659 7.40096418217724
+590400 -121731.802736131 7.343906033009
+591300 -124414.575389718 7.29619504618813
+592200 -126758.878560604 7.25558478323545
+593100 -128779.701949974 7.22135336426621
+594000 -130523.915971355 7.19236385029768
+594900 -132064.560908295 7.16717320355483
+595800 -133474.453113352 7.14445272680762
+596700 -134808.577582258 7.12323850382415
+597600 -136097.792227837 7.10299592017434
+598500 -137350.885779894 7.08355779508249
+599400 -138561.735008775 7.06499257465101
+600300 -139718.092081575 7.04745852697657
+601200 -140808.875972252 7.03109068999783
+602100 -141828.283443003 7.01594210020199
+603000 -142776.777432025 7.00197377824416
+603900 -143660.045860721 6.98907398630809
+604800 -144487.13215712 6.97708777454593
+605700 -145268.538959388 6.96584515129853
+606600 -146014.664294389 6.95518322125355
+607500 -146734.658584553 6.94496158165304
+608400 -147435.689231497 6.93507157348637
+609300 -122272.321119951 7.33418724044722
+610200 -118602.249463613 7.40131827472681
+611100 -116960.895516872 7.4322216730571
+612000 -116018.584490115 7.4502193421585
+612900 -115407.121118918 7.46199991782428
+613800 -114978.571895424 7.47030487636551
+614700 -114659.787889619 7.47650879650072
+615600 -114415.013582359 7.48128762667893
+616500 -114223.864123037 7.48502876208765
+617400 -114070.978960553 7.48802685581442
+618300 -113947.071891596 7.49046051833629
+619200 -113845.97411633 7.49244873099646
+620100 -113763.354016905 7.49407526117037
+621000 -113696.037335114 7.4954016500253
+621900 -113641.617494135 7.49647466910897
+622800 -113598.21901234 7.4973308538981
+623700 -113564.346917932 7.49799939311596
+624600 -113538.787015951 7.49850404469854
+625500 -113520.537550001 7.49886445023586
+626400 -113508.760976811 7.49909706369518
+627300 -113502.749048454 7.49921582471218
+628200 -113501.896953708 7.49923265784917
+629100 -113505.683784411 7.49915785024053
+630000 -113513.65751882 7.49900034231013
+630900 -89885.2950275891 8.04100546212191
+631800 -83418.4548544333 8.22252212744942
+632700 -79538.9582043989 8.34043625533194
+633600 -76772.6035777303 8.42917998297179
+634500 -74626.5499798537 8.50093657638745
+635400 -72873.837052896 8.56155963800237
+636300 -71391.1994049863 8.61433931922075
+637200 -70104.3531881282 8.66131671176869
+638100 -68965.2097172206 8.70384654688861
+639000 -67940.9808280926 8.74287260769149
+639900 -67008.4211255648 8.77907639177192
+640800 -66150.5407690288 8.81296373320396
+641700 -65354.6089863597 8.84491852053243
+642600 -64610.8790343957 8.87523776571041
+643500 -63911.7405894532 8.90415545755244
+644400 -63251.1388991716 8.9318592841936
+645300 -62624.168296427 8.9585025808851
+646200 -62026.7842078547 8.98421293479515
+647100 -61455.5981188701 9.00909836871862
+648000 -60907.7317241785 9.03325173571059
+648900 -60380.7136028646 9.05675378531856
+649800 -59872.4062679747 9.07967525533188
+650700 -59380.954470135 9.10207827125651
+651600 -58904.7478117395 9.12401728230887
+652500 -65337.9147148042 8.84560334321603
+653400 -68851.9099398371 8.70812894737441
+654300 -71130.0995622991 8.62378227299458
+655200 -72784.3250524119 8.56470627786217
+656100 -74063.5557128964 8.52020545690312
+657000 -75096.4382831882 8.48499674834343
+657900 -75957.3961028567 8.45612589709696
+658800 -76692.7163734591 8.43180264510952
+659700 -77332.8625359916 8.41087297763019
+660600 -77898.8299593908 8.39255517842125
+661500 -78405.6376268134 8.37629822675088
+662400 -78864.3574639267 8.36170104960024
+663300 -79283.3559412877 8.34846392196756
+664200 -79668.4306315742 8.33637841096873
+665100 -80026.9051054984 8.32519574669098
+666000 -80360.1017138087 8.3148598217659
+666900 -80671.9760670694 8.30523563802975
+667800 -80965.5902379195 8.29621901444328
+668700 -81243.2878250986 8.28773017137799
+669600 -81506.9539137075 8.27970506202271
+670500 -81758.1513071599 8.27209076333014
+671400 -81998.1996658547 8.26484275645944
+672300 -82228.2267847023 8.257923143993
+673200 -82449.204773284 8.25129938411619
+674100 -105100.37115848 7.67367485222498
+675000 -109954.579449813 7.57076928261332
+675900 -112645.415605002 7.51623654170301
+676800 -114503.8129278 7.4795527348363
+677700 -115942.078783536 7.45168903630898
+678600 -117141.432444608 7.42879496076876
+679500 -118192.759950769 7.40897554606462
+680400 -119142.841330368 7.39126079320517
+681300 -120016.034222175 7.37514073938797
+682200 -120825.654113495 7.36032984241009
+683100 -121579.883688288 7.34664776366459
+684000 -122284.691166568 7.333961511701
+684900 -122945.161658291 7.322159217274
+685800 -123566.025199613 7.31113953733364
+686700 -124151.804192886 7.30080831363661
+687600 -124706.799444871 7.2910782629589
+688500 -125235.022944547 7.28186967186249
+689400 -125740.1270018 7.27311119240879
+690300 -126225.349871765 7.26474038482946
+691200 -126693.484006802 7.25670390552014
+692100 -127146.866972035 7.24895734479796
+693000 -127587.392636201 7.24146475874626
+693900 -128016.539341163 7.23419795309721
+694800 -128435.411371838 7.22713558204393
+695700 -116704.783393645 7.4370957309408
+696600 -114600.211137218 7.47767093554525
+697500 -113589.522965226 7.49750253393063
+698400 -113001.564723028 7.50914519425802
+699300 -112626.11373777 7.516621078395
+700200 -112375.730277122 7.521624670474
+701100 -112204.516691014 7.52505450037464
+702000 -112086.063001348 7.5274314014248
+702900 -112004.718136189 7.52906556471469
+703800 -111950.572189214 7.53015417512866
+704700 -111917.030574393 7.53082887627401
+705600 -111899.52280497 7.53118115545134
+706500 -111894.770530018 7.53127678978529
+707400 -111900.352032672 7.53116446868745
+708300 -111914.432480732 7.53088114875734
+709200 -111935.590919643 7.53045549598539
+710100 -111962.705840042 7.52991016705172
+711000 -111994.877374303 7.5292633631577
+711900 -112031.373069801 7.52852991476862
+712800 -112071.589238455 7.52772205594859
+713700 -112115.022843564 7.52684998840086
+714600 -112161.250670774 7.52592229994132
+715500 -112209.913635065 7.52494628020395
+716400 -112260.704775553 7.52392816246647
+717300 -90524.7277579065 8.02397020426472
+718200 -86802.6404574042 8.12532893688747
+719100 -84930.3195870527 8.17847696611847
+720000 -83746.6828093645 8.21286784351192
+720900 -82910.4978245252 8.23754638311241
+721800 -82277.2533630871 8.25645165894821
+722700 -81773.6805388802 8.27162107746074
+723600 -81358.2871419386 8.28422584496493
+724500 -81005.7411817029 8.29498932420378
+725400 -80699.6995082605 8.30438245295989
+726300 -80429.156215493 8.3127246699581
+727200 -80186.4374975203 8.32023999523894
+728100 -79966.034944225 8.32708998730007
+729000 -79763.8946090344 8.33339399534156
+729900 -79572.6780332122 8.3393764619494
+730800 -79398.1212029744 8.34485403340139
+731700 -79235.4553226963 8.34997256772656
+732600 -79082.6980737894 8.35479175490039
+733500 -78938.4576160944 8.35935336676966
+734400 -78801.6799995997 8.36368897851677
+735300 -78671.5386013627 8.36782331877942
+736200 -78547.367130535 8.3717762964017
+737100 -78428.6165730918 8.37556430109886
+738000 -78314.8265089713 8.37920106830593
+738900 -85776.4744608824 8.1542725766597
+739800 -87862.5994187659 8.09589504026774
+740700 -89009.7575039965 8.06455569132096
+741600 -89764.0022421515 8.04423495806569
+742500 -90309.1696677035 8.0296847679994
+743400 -90728.312558953 8.01857546845249
+744300 -91065.1149542585 8.009696789085
+745200 -91348.6304494203 8.00225584657557
+746100 -91587.9550022443 7.99599801953608
+747000 -91795.6452296669 7.99058455388503
+747900 -91979.5046868755 7.98580549958397
+748800 -92144.8204827035 7.9815190332191
+749700 -92295.3514928707 7.97762460143862
+750600 -92433.8574096154 7.97404855588356
+751500 -92562.4167240401 7.97073554208958
+752400 -92682.6287952807 7.96764304252617
+753300 -92795.7473169631 7.96473778160734
+754200 -92902.7711489682 7.96199328478566
+755100 -93004.507670882 7.959388179568
+756000 -93101.6179109257 7.95690498745234
+756900 -93194.6492996366 7.95452924852909
+757800 -93284.0598485181 7.95224887617102
+758700 -93370.2362791543 7.95005367378746
+759600 -93453.5078138664 7.94793496764179
+760500 -119588.4704391 7.38302318289239
+761400 -125405.856750039 7.27890388076788
+762300 -128584.017129272 7.22463779836796
+763200 -130745.297084471 7.18872048913439
+764100 -132395.619353293 7.16180997472578
+765000 -133752.01432461 7.14001650973401
+765900 -134920.734713113 7.12146745910935
+766800 -135956.765110643 7.10519804424723
+767700 -136890.695223521 7.09066939683404
+768600 -137741.933336904 7.07753886484291
+769500 -138524.84084192 7.06555506765967
+770400 -139251.236394125 7.05451470795004
+771300 -139931.210048321 7.04424748786619
+772200 -140573.267946079 7.03461208944023
+773100 -141184.299395233 7.02549524924795
+774000 -141769.57886491 7.01681057079019
+774900 -142332.87386705 7.0084959793107
+775800 -142876.658338952 7.00050982510065
+776700 -143402.396994979 6.99282614655035
+777600 -143910.854654578 6.98542975831036
+778500 -144402.388020032 6.97831176171078
+779400 -144877.189465594 6.97146588467779
+780300 -145335.467337811 6.96488583493391
+781200 -145777.56062007 6.95856365799086
+782100 -93135.0363269435 7.95608552304576
+783000 -84680.5688982999 8.18568867937207
+783900 -80479.3116563618 8.31117819514005
+784800 -77850.1789638779 8.39412428739874
+785700 -76008.1079356462 8.45443920917204
+786600 -74627.7861892035 8.5008937443929
+787500 -73544.7748333139 8.53813090473799
+788400 -72665.7231796023 8.56888300243666
+789300 -71933.215193255 8.59488000606683
+790200 -71309.7923986832 8.61727790727498
+791100 -70769.886169073 8.63688180420059
+792000 -70295.4075141554 8.6542711119286
+792900 -69873.1813483333 8.6698741010972
+793800 -69493.3770076035 8.68401442884894
+794700 -69148.5078321874 8.69694133875301
+795600 -68832.7712736735 8.70884990477892
+796500 -68541.6008890016 8.71989497448664
+797400 -68271.3546118051 8.73020099674306
+798300 -68019.0931740834 8.73986908847302
+799200 -67782.4196185275 8.74898220651442
+800100 -67559.3610788623 8.75760899335336
+801000 -67348.2803410798 8.7658066789251
+801900 -67147.808729115 8.77362330034652
+802800 -66956.7944858959 8.78109942199813
+803700 -56090.9239497266 9.25854162642601
+804600 -52801.4340051622 9.4273515156177
+805500 -50813.4162901996 9.53614736141843
+806400 -49388.102266566 9.61761167671994
+807300 -48278.4857783913 9.68317645543193
+808200 -47370.1901497049 9.73832003361143
+809100 -46600.8372716663 9.78611378629176
+810000 -45932.7142142475 9.82845810613157
+810900 -45341.3208071428 9.86661248968543
+811800 -44809.869708948 9.90145525776314
+812700 -44326.3754057708 9.93362345216743
+813600 -43881.9959434131 9.96359378382517
+814500 -43470.0321585363 9.99173217861745
+815400 -43085.2949554494 10.0183255050655
+816300 -42723.6896708725 10.0436026593663
+817200 -42381.9341386978 10.0677490190719
+818100 -42057.3621161931 10.0909166174829
+819000 -41747.7828807024 10.1132314751205
+819900 -41451.3787458384 10.1347989962041
+820800 -41166.6287481992 10.1557080207066
+821700 -40892.25075722 10.1760339250352
+822600 -40627.1567995708 10.1958410375008
+823500 -40370.4180415563 10.2151845511021
+824400 -40121.2369692078 10.2341120599435
+825300 -39878.9250427821 10.2526648074409
+826200 -39642.8846012174 10.2708787084934
+827100 -39412.5941302915 10.2887851902366
+828000 -39187.5962370408 10.3064118842647
+828900 -38967.4878276867 10.3237831955104
+829800 -38751.9120913885 10.3409207679696
+830700 -38536.8799591658 10.358138938654
+831600 -38328.588614806 10.3749367604906
+832500 -38124.7250635403 10.3914927148501
+833400 -37924.6639177047 10.4078520487496
+834300 -37728.0335474711 10.4240404391656
+835200 -37534.5578417115 10.4400764326408
+836100 -37344.0184908012 10.4559743318172
+837000 -37156.2370853411 10.4717455408217
+837900 -36971.0644491864 10.4873993581412
+838800 -36788.3736922978 10.502943488242
+839700 -36608.0554416176 10.5183843896141
+840600 -36430.0144195114 10.5337275224076
+841500 -36254.1668853438 10.5489775324778
+842400 -36080.4386503625 10.5641383938045
+843300 -35908.7634915202 10.5792135223858
+844200 -35739.0818590317 10.5942058693606
+845100 -35571.3398134817 10.6091179979347
+846000 -35405.4881519458 10.6239521468482
+846900 -35241.4816956113 10.6387102821362
+847800 -35079.2787180648 10.6533941384479
+848700 -34918.8404963981 10.6680052510146
+849600 -34760.1309684428 10.6825449793278
+850500 -34603.1164797019 10.6970145236408
+851400 -34447.7656037036 10.7114149354636
+852300 -34294.0490198221 10.7257471232642
+853200 -34141.9394333678 10.7400118545863
+854100 -33991.4115238408 10.7542097557576
+855000 -33842.4419088521 10.7683413102703
+855900 -33695.0091129994 10.7824068568
+856800 -33549.093533085 10.7964065876737
+857700 -33404.6773931484 10.8103405484323
+858600 -33261.744684916 10.8242086389562
+859500 -33120.281091225 10.8380106164488
+860400 -32980.2738917544 10.8517461004089
+861300 -32841.7118518724 10.8654145795813
+862200 -32704.5850966312 10.8790154207482
+863100 -32568.8849727996 10.892547879129
+864000 -32434.6039024037 10.9060111100879
+864900 -32301.7352315224 10.9194041818013
+865800 -32170.2730781089 10.9327260885209
+866700 -32040.2121824377 10.9459757640687
+867600 -31911.5477634006 10.9591520952228
+868500 -31784.2753834336 10.972253934683
+869400 -31658.390824298 10.9852801133527
+870300 -31533.8899753771 10.9982294517223
+871200 -31410.7687355831 11.0111007701885
+872100 -31289.0229294077 11.0238928982033
+873000 -31168.6482372173 11.0366046821848
+873900 -31049.6401394 11.0492349921779
+874800 -30931.9938736905 11.0617827272828
+875700 -30815.7044046896 11.0742468199071
+876600 -30700.7664043985 11.0866262389204
+877500 -30587.1742424833 11.0989199918103
+878400 -30474.9219848827 11.1111271259541
+879300 -30364.0033993841 11.1232467291226
+880200 -30254.4119668186 11.1352779293424
+881100 -30146.140896583 11.1472198942344
+882000 -30039.1831453011 11.1590718299478
+882900 -29933.5314375551 11.1708329797948
+883800 -29829.1782877089 11.1825026226906
+884700 -29726.116022043 11.1940800714811
+885600 -29624.3368004753 11.2055646712399
+886500 -29523.8326373328 11.2169557975985
+887400 -29424.5954207361 11.2282528551616
+888300 -29326.6169302626 11.2394552760526
+889200 -29229.8888526987 11.2505625186167
+890100 -29134.4027957279 11.261574066307
+891000 -29040.1502995224 11.2724894267641
+891900 -28947.1228462724 11.2833081310939
+892800 -28855.3118677087 11.2940297333435
+893700 -28764.7087507624 11.3046538101647
+894600 -28675.3048415061 11.3151799606569
+895500 -28587.0914475613 11.3256078063703
+896400 -28500.0598391699 11.3359369914533
+897300 -28414.2012491275 11.3461671829232
+898200 -28329.5068717941 11.3562980710388
+899100 -28245.9678613693 11.3663293697556
+9e+05 -28163.5753296314 11.3762608172399
+900900 -28082.3203433258 11.3860921764224
+901800 -28002.1939213558 11.3958232355735
+902700 -27923.1870319259 11.4054538088802
+903600 -27845.2905897827 11.4149837370095
+904500 -27768.4954536438 11.4244128876439
+905400 -27692.7924239355 11.4337411559755
+906300 -27618.172240883 11.4429684651497
+907200 -27544.6255830491 11.4520947666474
+908100 -27472.1430663404 11.4611200406
+909000 -27400.7152435201 11.4700442960321
+909900 -27330.332604247 11.4788675710265
+910800 -27260.9855756349 11.4875899328116
+911700 -27192.6645233442 11.4962114777682
+912600 -27125.3597531714 11.504732331357
+913500 -27059.0615131415 11.5131526479674
+914400 -26993.7599960411 11.5214726106916
+915300 -26929.445342395 11.5296924310246
+916200 -26866.1076438348 11.5378123484942
+917100 -26803.7369468109 11.5458326302283
+918000 -26742.3232566334 11.5537535704585
+918900 -26681.8565417808 11.5615754899696
+919800 -26622.326738447 11.5692987354969
+920700 -26563.7237552815 11.5769236790783
+921600 -26506.0374782835 11.5844507173649
+922500 -26449.2577758196 11.5918802708963
+923400 -26393.3745037244 11.5992127833435
+924300 -26338.377510445 11.6064487207275
+925200 -26284.2566422167 11.6135885706141
+926100 -26231.0017482156 11.620632841293
+927000 -26178.6026856841 11.627582060943
+927900 -26127.0493249944 11.6344367767875
+928800 -26076.3315546299 11.6411975542456
+929700 -26026.439286061 11.6478649760798
+930600 -25977.3624585157 11.654439641545
+931500 -25929.0910436102 11.6609221655404
+932400 -25881.615049831 11.6673131777691
+933300 -25834.9245268722 11.6736133219054
+934200 -25789.009569806 11.6798232547717
+935100 -25743.8603230796 11.68594364553
+936000 -25699.4669843345 11.6919751748867
+936900 -25655.819808062 11.6979185343114
+937800 -25612.9091090581 11.7037744252748
+938700 -25570.7252657018 11.7095435585038
+939600 -25529.2587230564 11.715226653254
+940500 -25488.4999957811 11.7208244366031
+941400 -25448.4396708638 11.7263376427635
+942300 -25409.0684101774 11.7317670124158
+943200 -25370.3769528544 11.7371132920629
+944100 -25332.3561174939 11.7423772334052
+945000 -25294.9968042093 11.7475595927355
+945900 -25258.2899964886 11.752661130358
+946800 -25222.2267629232 11.7576826100249
+947700 -25186.7982587604 11.7626247983971
+948600 -25151.9957273256 11.7674884645223
+949500 -25117.8105012849 11.7722743793371
+950400 -25084.2340037798 11.7769833151867
+951300 -25051.2577494281 11.7816160453654
+952200 -25018.8733451947 11.7861733436769
+953100 -24987.0724911413 11.7906559840132
+954000 -24955.8469810656 11.7950647399526
+954900 -24925.1887030236 11.7994003843753
+955800 -24895.089639746 11.8036636890982
+956700 -24865.5418689653 11.8078554245251
+957600 -24836.537563632 11.8119763593155
+958500 -24808.0689920578 11.8160272600685
+959400 -24780.1285179592 11.820008891024
+960300 -24752.7086004314 11.8239220137775
+961200 -24725.8017938431 11.8277673870112
+962100 -24699.4007476557 11.8315457662396
+963000 -24673.4982061876 11.8352579035675
+963900 -24648.0870083012 11.8389045474634
+964800 -24623.1600870431 11.8424864425447
+965700 -24598.7104692202 11.8460043293759
+966600 -24574.7312749388 11.849458944278
+967500 -24551.2157170686 11.8528510191521
+968400 -24528.1571007014 11.8561812813102
+969300 -24505.5488225335 11.8594504533203
+970200 -24483.3843702257 11.8626592528602
+971100 -24461.6573217306 11.8658083925815
+972000 -24440.3613445797 11.8688985799835
+972900 -24419.4901951473 11.8719305172952
+973800 -24399.0377178812 11.8749049013679
+974700 -24378.9978445137 11.8778224235744
+975600 -24359.3645932478 11.8806837697175
+976500 -24340.1320679243 11.8834896199453
+977400 -24321.2944571636 11.8862406486755
+978300 -24302.8460335043 11.8889375245245
+979200 -24284.7811525155 11.8915809102449
+980100 -24267.0942519015 11.8941714626692
+981000 -24249.7798505899 11.89670983266
+981900 -24232.8325478237 11.8991966650638
+982800 -24216.2470222221 11.9016325986749
+983700 -24200.0180308589 11.9040182661999
+984600 -24184.140408319 11.9063542942303
+985500 -24168.6090657532 11.9086413032194
+986400 -24153.4189899345 11.9108799074631
+987300 -24138.5652423079 11.9130707150861
+988200 -24124.04295804 11.9152143280315
+989100 -24109.8473450693 11.9173113420548
+990000 -24095.9736831538 11.9193623467219
+990900 -24082.4173229233 11.9213679254102
+991800 -24069.1736849322 11.9233286553135
+992700 -24056.2382587141 11.9252451074501
+993600 -24043.6066018424 11.9271178466737
+994500 -24031.2743389903 11.928947431688
+995400 -24019.2371610015 11.9307344150627
+996300 -24007.4908239617 11.9324793432536
+997200 -23996.0311482751 11.934182756624
+998100 -23984.8540177518 11.935845189469
+999000 -23973.9553786955 11.9374671700421
+999900 -23963.3312390017 11.9390492205832
+1000800 -23952.9776672648 11.9405918573492
+1001700 -23942.8907918857 11.9420955906462
+1002600 -23933.0668001965 11.943560924863
+1003500 -23923.5019375834 11.9449883585076
+1004400 -23914.19250663 11.9463783842423
+1005300 -23905.1348662543 11.9477314889242
+1006200 -23896.3254308664 11.9490481536432
+1007100 -23887.7606695324 11.9503288537637
+1008000 -23879.437105144 11.951574058966
+1008900 -23871.351313594 11.9527842332904
+1009800 -23863.4999229773 11.9539598351796
+1010700 -23855.8796127817 11.9551013175249
+1011600 -23848.4871131003 11.9562091277108
+1012500 -23841.3192038486 11.9572837076622
+1013400 -23834.3727139905 11.9583254938917
+1014300 -23827.6445207829 11.9593349175457
+1015200 -23821.1315490146 11.9603124044548
+1016100 -23814.8307702714 11.9612583751803
+1017000 -23808.7392021943 11.9621732450658
+1017900 -23802.8539077645 11.9630574242845
+1018800 -23797.1719945883 11.9639113178899
+1019700 -23791.6906141843 11.9647353258672
+1020600 -23786.4069613031 11.9655298431815
+1021500 -23781.3182732351 11.9662952598297
+1022400 -23776.421829134 11.9670319608917
+1023300 -23771.7149493549 11.9677403265804
+1024200 -23767.1949948006 11.9684207322927
+1025100 -23762.8593662709 11.9690735486612
+1026000 -23758.7055038279 11.9696991416049
+1026900 -23754.7308861711 11.9702978723798
+1027800 -23750.9330300142 11.9708700976308
+1028700 -23747.3094894822 11.9714161694419
+1029600 -23743.8578555039 11.9719364353877
+1030500 -23740.5757552342 11.9724312385827
+1031400 -23737.4608514588 11.9729009177337
+1032300 -23734.5108420296 11.9733458071892
+1033200 -23731.7234592969 11.9737662369896
+1034100 -23729.0964695632 11.9741625329166
+1035000 -23726.6276725215 11.9745350165451
+1035900 -23724.314900731 11.9748840052902
+1036800 -23722.1560190832 11.9752098124576
+1037700 -23720.1489242782 11.975512747293
+1038600 -23718.2915443177 11.9757931150295
+1039500 -23716.5818379947 11.9760512169373
+1040400 -23715.0177944015 11.9762873503709
+1041300 -23713.5974324392 11.9765018088171
+1042200 -23712.3188003359 11.9766948819425
+1043100 -23711.1799751792 11.9768668556399
+1044000 -23710.1790624424 11.977018012076
+1044900 -23709.3141955336 11.9771486297371
+1045800 -23708.5835353466 11.9772589834744
+1046700 -23707.9852698109 11.977349344551
+1047600 -23707.5176134617 11.9774199806858
+1048500 -23707.1788070122 11.9774711560987
+1049400 -23706.9671169294 11.9775031315548
+1050300 -23706.8808350184 11.977516164409
+1051200 -23706.9182780194 11.9775105086485
+1052100 -23707.0777872031 11.9774864149367
+1053000 -23707.3577279788 11.9774441306555
+1053900 -23707.756489506 11.9773838999477
+1054800 -23708.272484313 11.9773059637589
+1055700 -23708.9041479221 11.9772105598787
+1056600 -23709.649938483 11.9770979229819
+1057500 -23710.5083364066 11.976968284669
+1058400 -23711.4778440108 11.9768218735065
+1059300 -23712.5569851725 11.9766589150663
+1060200 -23713.7443049794 11.9764796319649
+1061100 -23715.0383693935 11.9762842439026
+1062000 -23716.4377649163 11.976072967702
+1062900 -23717.9410982656 11.9758460173448
+1063800 -23719.5469960469 11.9756036040113
+1064700 -23721.2541044419 11.975345936116
+1065600 -23723.0610888999 11.9750732193441
+1066500 -23724.9666338256 11.9747856566889
+1067400 -23726.9694422795 11.9744834484871
+1068300 -23729.0682356862 11.9741667924541
+1069200 -23731.2617535421 11.9738358837187
+1070100 -23733.5487531292 11.973490914858
+1071000 -23735.9280092313 11.9731320759319
+1071900 -23738.3983138643 11.9727595545161
+1072800 -23740.9584759978 11.9723735357359
+1073700 -23743.6073212943 11.9719742022986
+1074600 -23746.343691843 11.9715617345266
+1075500 -23749.1664459035 11.9711363103887
+1076400 -23752.07445765 11.9706981055327
+1077300 -23755.0666169249 11.9702472933161
+1078200 -23758.1418289927 11.9697840448368
+1079100 -23761.2990142974 11.9693085289641
+1080000 -23764.5371082288 11.9688209123684
+1080900 -23767.8550608889 11.9683213595507
+1081800 -23771.2518368582 11.9678100328727
+1082700 -23774.7264149761 11.9672870925854
+1083600 -23778.2777881201 11.9667526968568
+1084500 -23781.9049629832 11.9662070018013
+1085400 -23785.6069598624 11.9656501615073
+1086300 -23789.3828124531 11.9650823280635
+1087200 -23793.2315676319 11.9645036515878
+1088100 -23797.1522852659 11.9639142802522
+1089000 -23801.1440380021 11.9633143603106
+1089900 -23805.2059110753 11.9627040361244
+1090800 -23809.3370021191 11.9620834501873
+1091700 -23813.5364209663 11.961452743152
+1092600 -23817.8032894711 11.9608120538544
+1093500 -23822.1367413219 11.9601615193379
+1094400 -23826.5359218588 11.9595012748787
+1095300 -23830.9999878999 11.9588314540092
+1096200 -23835.5281075645 11.9581521885414
+1097100 -23840.1194601026 11.9574636085906
+1098000 -23844.7732357243 11.9567658425987
+1098900 -23849.4886354359 11.9560590173561
+1099800 -23854.2648708771 11.9553432580246
+1100700 -23859.1011641567 11.9546186881596
+1101600 -23863.9967476983 11.9538854297317
+1102500 -23868.9508640861 11.9531436031478
+1103400 -23873.9627659105 11.9523933272726
+1104300 -23879.0317156164 11.95163471945
+1105200 -23884.1569853565 11.950867895523
+1106100 -23889.3378568501 11.9500929698539
+1107000 -23894.5736212363 11.9493100553448
+1107900 -23899.8635789307 11.9485192634577
+1108800 -23905.2070394969 11.9477207042329
+1109700 -23910.6033215023 11.9469144863088
+1110600 -23916.0517523866 11.9461007169412
+1111500 -23921.5516683307 11.9452795020215
+1112400 -23927.1024141305 11.944450946095
+1113300 -23932.7033430642 11.9436151523795
+1114200 -23938.3538167719 11.9427722227831
+1115100 -23944.05320513 11.9419222579216
+1116000 -23949.8008861324 11.9410653571358
+1116900 -23955.5962457696 11.9402016185095
+1117800 -23961.4386779119 11.9393311388853
+1118700 -23967.3275841975 11.938454013882
+1119600 -23973.262373913 11.9375703379111
+1120500 -23979.2424638874 11.9366802041924
+1121400 -23985.2672783815 11.9357837047707
+1122300 -23991.3362489776 11.9348809305311
+1123200 -23997.448814478 11.9339719712144
+1124100 -24003.6044207953 11.9330569154332
+1125000 -24009.8025208539 11.932135850686
+1125900 -24016.0425744861 11.931208863373
+1126800 -24022.3240483342 11.9302760388105
+1127700 -24028.646415754 11.9293374612447
+1128600 -24035.0091567163 11.9283932138668
+1129500 -24041.411757712 11.9274433788272
+1130400 -24047.8537116637 11.9264880372482
+1131300 -24054.3345178245 11.9255272692394
+1132200 -24060.8536816984 11.9245611539096
+1133100 -24067.4107149459 11.9235897693809
+1134000 -24074.0051352972 11.9226131928016
+1134900 -24080.6364664639 11.9216315003597
+1135800 -24087.3042380624 11.9206447672945
+1136700 -24094.007985519 11.9196530679104
+1137600 -24100.7472500012 11.9186564755879
+1138500 -24107.5215783255 11.9176550627974
+1139400 -24114.3305228804 11.9166489011104
+1140300 -24121.1736415596 11.9156380612106
+1141200 -24128.0504976694 11.914622612907
+1142100 -24134.9606598592 11.9136026251451
+1143000 -24141.9037020502 11.9125781660176
+1143900 -24148.8792033582 11.9115493027764
+1144800 -24155.8867480239 11.9105161018429
+1145700 -24162.9259253395 11.9094786288197
+1146600 -24169.9963295811 11.9084369485005
+1147500 -24177.0975599367 11.9073911248818
+1148400 -24184.2292204414 11.9063412211724
+1149300 -24191.3909199086 11.9052872998042
+1150200 -24198.5822718678 11.9042294224417
+1151100 -24205.8028944953 11.9031676499931
+1152000 -24213.0524105535 11.9021020426192
+1152900 -24220.330447327 11.9010326597438
+1153800 -24227.6366365623 11.8999595600628
+1154700 -24234.9706144033 11.8988828015542
+1155600 -24242.3320213381 11.8978024414866
+1156500 -24249.7205021321 11.8967185364297
+1157400 -24257.1357057766 11.895631142262
+1158300 -24264.5772854299 11.8945403141805
+1159200 -24272.0448983575 11.8934461067094
+1160100 -24279.5382058808 11.8923485737091
+1161000 -24287.0568733234 11.8912477683838
+1161900 -24294.6005699521 11.8901437432912
+1162800 -24302.1689689299 11.8890365503498
+1163700 -24309.7617472586 11.8879262408481
+1164600 -24317.3785857313 11.8868128654519
+1165500 -24325.0191688834 11.8856964742124
+1166400 -24332.6831849346 11.8845771165747
+1167300 -24340.3703257492 11.8834548413849
+1168200 -24348.0802867835 11.8823296968981
+1169100 -24355.8127670385 11.8812017307859
+1170000 -24363.5674690117 11.880070990144
+1170900 -24371.3440986552 11.8789375214991
+1171800 -24379.1423653245 11.8778013708169
+1172700 -24386.961981738 11.8766625835087
+1173600 -24394.8026639323 11.8755212044384
+1174500 -24402.6641312175 11.8743772779298
+1175400 -24410.5461061353 11.8732308477733
+1176300 -24418.4483144132 11.872081957233
+1177200 -24426.3704849304 11.8709306490527
+1178100 -24434.3123496697 11.8697769654631
+1179000 -24442.273643681 11.8686209481879
+1179900 -24450.2541050417 11.8674626384502
+1180800 -24458.2534748136 11.8663020769795
+1181700 -24466.2714970095 11.8651393040169
+1182600 -24474.3079185529 11.863974359322
+1183500 -24482.3624892382 11.8628072821787
+1184400 -24490.4349616974 11.8616381114011
+1185300 -24498.5250913628 11.8604668853397
+1186200 -24506.6326364303 11.8592936418867
+1187100 -24514.7573578235 11.8581184184824
+1188000 -24522.899019161 11.8569412521201
+1188900 -24531.0573867232 11.8557621793521
+1189800 -24539.2322294108 11.8545812362957
+1190700 -24547.4233187227 11.8533984586374
+1191600 -24555.6304287134 11.8522138816395
+1192500 -24563.8533359673 11.8510275401446
+1193400 -24572.0918195619 11.8498394685812
+1194300 -24580.3456610398 11.8486497009686
+1195200 -24588.6146443761 11.8474582709222
+1196100 -24596.8985559492 11.8462652116584
+1197000 -24605.1971845085 11.8450705559993
+1197900 -24613.5103211459 11.8438743363782
+1198800 -24621.837759267 11.8426765848438
+1199700 -24630.1792945628 11.8414773330649
+1200600 -24638.5347249766 11.840276612336
+1201500 -24646.9038506836 11.8390744535806
+1202400 -24655.2864740585 11.8378708873566

+ 4 - 0
connector-fetch-drutes/src/test/resources/data/710010002/current/predict.times

@@ -0,0 +1,4 @@
+# sensor data from:
+2022-03-08 20:00:00+01
+# meteo data from
+2022-03-08 23:00:00

+ 1 - 0
connector-fetch-drutes/src/test/resources/data/710010002/current/sensors.success

@@ -0,0 +1 @@
+1

+ 0 - 674
connector-fetch-drutes/src/test/resources/predictions/4151559_20220301/340260001.predict

@@ -1,674 +0,0 @@
-# time [s]     T [dg. C] 
-0 21.6
-900 21.5999999470766
-1800 21.599912067281
-2700 21.5985505602282
-3600 21.5936708729096
-4500 21.5842271702778
-5400 21.570564778852
-6300 21.5536091032395
-7200 21.534338220682
-8100 21.513588980774
-9000 21.4920203158029
-9900 21.4701328410521
-10800 21.4483020444323
-11700 21.4268068947869
-12600 21.4058555163429
-13500 21.3856025091892
-14400 21.3661614295896
-15300 21.3476138845899
-16200 21.3300162713161
-17100 21.3134048310124
-18000 21.29779946818
-18900 21.2832066842331
-19800 21.2696218829756
-20700 21.2570311847408
-21600 21.2454127727675
-22500 21.2347379338312
-23400 21.2249720189714
-24300 21.2160754402999
-25200 21.2080047387741
-26100 21.2007136634769
-27000 21.1941541716104
-27900 21.188277246062
-28800 21.1830333962834
-29700 21.1783728737782
-30600 21.174245738493
-31500 21.170601660272
-32400 21.1673892669296
-33300 21.1645552389338
-34200 21.1620436225871
-35100 21.1597954980049
-36000 21.1577488603942
-36900 21.1558387040642
-37800 21.1539974380714
-38700 21.1521556362243
-39600 21.1502429345315
-40500 21.1481890046441
-41400 21.1459246081972
-42300 21.1433828254756
-43200 21.1405004351271
-44100 21.1372193577016
-45000 21.1334879043634
-45900 21.1292615855503
-46800 21.1245033815998
-47700 21.1191835227192
-48600 21.1132790193536
-49500 21.1067730082788
-50400 21.0996541060439
-51300 21.0919157276221
-52200 21.0835555819365
-53100 21.0745753114408
-54000 21.0649802953115
-54900 21.0547796338519
-55800 21.0439859830619
-56700 21.0326152380618
-57600 21.0206857605681
-58500 21.0082173158048
-59400 20.9952301244917
-60300 20.9817441013806
-61200 20.9677786855211
-62100 20.9533529623546
-63000 20.9384860309097
-63900 20.9231977983877
-64800 20.9075100006948
-65700 20.8914474946952
-66600 20.8750392601181
-67500 20.8583188669658
-68400 20.8413245225085
-69300 20.824098834199
-70200 20.806688051292
-71100 20.7891413644219
-72000 20.7715100919406
-72900 20.753847004446
-73800 20.7362058004386
-74700 20.7186409336125
-75600 20.7012079477743
-76500 20.6839644201381
-77400 20.6669705150208
-78300 20.6502892459418
-79200 20.6339865520169
-80100 20.6181312355987
-81000 20.6027942268794
-81900 20.58804775589
-82800 20.57396416207
-83700 20.5606147796704
-84600 20.5480686574855
-85500 20.5363911202687
-86400 20.5256437152412
-87300 20.5158818577644
-88200 20.5071547789848
-89100 20.4995049145857
-90000 20.4929675856944
-90900 20.4875708131724
-91800 20.4833354197312
-92700 20.4802749419041
-93600 20.4783957587827
-94500 20.4776978324186
-95400 20.4781734742893
-96300 20.4798088088413
-97200 20.4825867133374
-98100 20.4864842333006
-99000 20.491474629719
-99900 20.4975276909046
-100800 20.5046097614631
-101700 20.512683476152
-102600 20.5217073791145
-103500 20.5316360082233
-104400 20.5424173634011
-105300 20.5539899712508
-106200 20.5662890701803
-107100 20.5792385559048
-108000 20.5927557378641
-108900 20.6067549967417
-109800 20.6211464548904
-110700 20.6358431077113
-111600 20.6507680478971
-112500 20.665850719419
-113400 20.6810326074144
-114300 20.6962677753012
-115200 20.7115222844214
-116100 20.7267725500519
-117000 20.7420029962637
-117900 20.7572031633185
-118800 20.772364175151
-119700 20.7874750152871
-120600 20.8025193938817
-121500 20.8174736476401
-122400 20.8323056870138
-123300 20.8469748271007
-124200 20.8614325454376
-125100 20.8756243697741
-126000 20.8894929701299
-126900 20.9029819346306
-127800 20.9160394017071
-128700 20.928620764824
-129600 20.9406900369343
-130500 20.9522199836689
-131400 20.9631914632253
-132300 20.9735919780282
-133200 20.983412920836
-134100 20.9926487035243
-135000 21.0012943299454
-135900 21.0093442836016
-136800 21.0167922732499
-137700 21.0236316442157
-138600 21.0298561083676
-139500 21.0354604710163
-140400 21.0404411044554
-141300 21.0447961229579
-142200 21.0485253229157
-143100 21.0516299271053
-144000 21.0541121049592
-144900 21.0559743748256
-145800 21.0572191287981
-146700 21.0578484566526
-147600 21.0578642836773
-148500 21.0572687698824
-149400 21.0560649739371
-150300 21.0542579917222
-151200 21.0518566688291
-152100 21.0488754668153
-153000 21.0453356954917
-153900 21.0412654882943
-154800 21.0366984671352
-155700 21.0316715849744
-156600 21.0262228336669
-157500 21.0203893266659
-158400 21.014205969326
-159300 21.0077046742917
-160200 21.0009138379355
-161100 20.9938575256665
-162000 20.9865540490471
-162900 20.9790143388759
-163800 20.9712408716203
-164700 20.9632274874478
-165600 20.9549599445602
-166500 20.9464170302906
-167400 20.937572192977
-168300 20.9283956296522
-169200 20.918856603187
-170100 20.9089256682924
-171000 20.898576498072
-171900 20.8877871166294
-172800 20.8765404948794
-173700 20.8648246354632
-174600 20.8526323960311
-175500 20.839961538124
-176400 20.8268140223716
-177300 20.813196636514
-178200 20.7991208382023
-179100 20.7846025012982
-180000 20.7696616780164
-180900 20.7543222692229
-181800 20.7386115359692
-182700 20.7225594779039
-183600 20.7061981758356
-184500 20.6895611588894
-185400 20.6726828238685
-186300 20.6555979952245
-187200 20.6383417132567
-188100 20.6209491714441
-189000 20.6034555934613
-189900 20.585895862066
-190800 20.5683039136422
-191700 20.5507117468308
-192600 20.5331489765491
-193500 20.5156420621491
-194400 20.4982141597202
-195300 20.4808849007535
-196200 20.4636710671878
-197100 20.4465857336107
-198000 20.4296392892888
-198900 20.4128390659559
-199800 20.3961901029766
-200700 20.3796946745665
-201600 20.3633527984909
-202500 20.3471620672591
-203400 20.3311190615528
-204300 20.3152183286078
-205200 20.2994526926577
-206100 20.2838129379693
-207000 20.2682876760593
-207900 20.2528632857465
-208800 20.2375240357571
-209700 20.2222526072768
-210600 20.2070295866552
-211500 20.1918350089805
-212400 20.1766484308884
-213300 20.1614491482829
-214200 20.146217660163
-215100 20.1309352304001
-216000 20.1155843213039
-216900 20.1001494664851
-217800 20.084617835961
-218700 20.0689791655496
-219600 20.0532259244528
-220500 20.0373532095897
-221400 20.0213585464248
-222300 20.0052415668293
-223200 19.989003569683
-224100 19.972646636515
-225000 19.9561747662994
-225900 19.9395911459281
-226800 19.9228992160596
-227700 19.9061023502305
-228600 19.8892035663163
-229500 19.8722054850084
-230400 19.8551103332039
-231300 19.8379199730011
-232200 19.8206359649624
-233100 19.8032596764213
-234000 19.7857924290791
-234900 19.7682356634251
-235800 19.7505910937243
-236700 19.7328608330278
-237600 19.7150474783781
-238500 19.6971541549367
-239400 19.6791845230882
-240300 19.6611427556634
-241200 19.6430334933634
-242100 19.6248617862097
-243000 19.6066330266773
-243900 19.5883528795969
-244800 19.5700272133502
-245700 19.5516614671859
-246600 19.5332624094888
-247500 19.5148361176233
-248400 19.4963886494042
-249300 19.4779260710391
-250200 19.4594548705936
-251100 19.4409836339594
-252000 19.4225265846354
-252900 19.4041081796637
-253800 19.3857668780745
-254700 19.3675565465739
-255600 19.3495451394861
-256500 19.331811278086
-257400 19.3144397505792
-258300 19.2975168760358
-259200 19.28112638419
-260100 19.2653461507369
-261000 19.2502458846454
-261900 19.2358857096117
-262800 19.2223155025572
-263700 19.2095748249429
-264600 19.1976932862787
-265500 19.1866912001745
-266400 19.1765804189828
-267300 19.1673652586365
-268200 19.1590434492938
-269100 19.1516070648664
-270000 19.1450434028041
-270900 19.1393357810013
-271800 19.1344641542367
-272700 19.1304053313508
-273600 19.1271326557256
-274500 19.1246153791111
-275400 19.1228182158976
-276300 19.1217014499987
-277200 19.1212216585775
-278100 19.1213328755669
-279000 19.1219879348295
-279900 19.123139767191
-280800 19.1247425067021
-281700 19.126752341131
-282600 19.1291280998036
-283500 19.131831606118
-284400 19.1348278371953
-285300 19.1380849364077
-286200 19.1415741209279
-287100 19.145269519546
-288000 19.1491479685849
-288900 19.1531887867854
-289800 19.1573735444474
-290700 19.1616858364044
-291600 19.1661110649681
-292500 19.1706362047606
-293400 19.1752493380032
-294300 19.179938416398
-295200 19.1846888380797
-296100 19.1894803150498
-297000 19.1942842284157
-297900 19.1990624897174
-298800 19.2037681870263
-299700 19.2083476432731
-300600 19.2127432349272
-301500 19.2168963526354
-302400 19.2207500669536
-303300 19.2242512638964
-304200 19.2273521754266
-305100 19.2300113337835
-306000 19.232194033232
-306900 19.233872402818
-307800 19.2350251926384
-308700 19.2356373641386
-309600 19.2356996202806
-310500 19.2352075586142
-311400 19.2341614375926
-312300 19.2325653139536
-313200 19.2304265193592
-314100 19.227755103221
-315000 19.2245631495024
-315900 19.2208635880852
-316800 19.2166681785963
-317700 19.2119849455102
-318600 19.2068158828877
-319500 19.2011556843919
-320400 19.1949917707771
-321300 19.1883054203316
-322200 19.1810735765949
-323100 19.1732708951017
-324000 19.1648716950986
-324900 19.155851615006
-325800 19.1461888842829
-326700 19.135865203772
-327600 19.1248662731692
-328500 19.1131820259207
-329400 19.1008066371952
-330300 19.0877385459584
-331200 19.0739797517156
-332100 19.059535403778
-333000 19.0444144403601
-333900 19.0286282412022
-334800 19.0121905080611
-335700 18.9951169939126
-336600 18.9774257895534
-337500 18.9591392952636
-338400 18.9402885531831
-339300 18.9209187291214
-340200 18.9010932782717
-341100 18.8808949756482
-342000 18.8604235697304
-342900 18.839791013519
-343800 18.8191156164133
-344700 18.7985162716903
-345600 18.7781075030728
-346500 18.7579956749865
-347400 18.7382764202148
-348300 18.7190331659775
-349200 18.7003365598096
-350100 18.6822445780489
-351000 18.6648031155127
-351900 18.6480468864005
-352800 18.6320005021351
-353700 18.6166796255382
-354600 18.6020921298686
-355500 18.5882392139833
-356400 18.5751164458166
-357300 18.5627147559778
-358200 18.5510216308427
-359100 18.5400231163916
-360000 18.5297070103189
-360900 18.5200665793135
-361800 18.5111034386899
-362700 18.5028285895814
-363600 18.4952614931542
-364500 18.4884277342935
-365400 18.4823560447013
-366300 18.4770753441818
-367200 18.4726122212993
-368100 18.4689890456288
-369000 18.4662227383104
-369900 18.4643241308171
-370800 18.4632977985436
-371700 18.4631422471381
-372600 18.4638503398591
-373500 18.4654098729592
-374400 18.4678042267349
-375300 18.4710130390159
-376200 18.4750128643163
-377100 18.4797777940694
-378000 18.485280022508
-378900 18.4914903099012
-379800 18.4983780659489
-380700 18.5059103635534
-381600 18.5140493884145
-382500 18.5227489724732
-383400 18.5319517483024
-384300 18.5415881894704
-385200 18.5515778436902
-386100 18.5618322516246
-387000 18.5722587160088
-387900 18.5827641498046
-388800 18.5932584734012
-389700 18.6036572888456
-390600 18.6138837589077
-391500 18.6238697446011
-392400 18.6335564049106
-393300 18.6428939929373
-394200 18.6518416833438
-395100 18.660367048993
-396000 18.6684452979601
-396900 18.6760583876221
-397800 18.683194551165
-398700 18.689847166398
-399600 18.6960141288061
-400500 18.7016971363687
-401400 18.7069008401313
-402300 18.7116314369825
-403200 18.7158943759076
-404100 18.7196915416985
-405000 18.7230188499998
-405900 18.7258650556548
-406800 18.7282120020834
-407700 18.7300360278459
-408600 18.7313100222143
-409500 18.7320056414667
-410400 18.7320953354596
-411300 18.7315539904753
-412200 18.7303601202839
-413100 18.728496620055
-414000 18.7259511424164
-414900 18.7227161724256
-415800 18.7187888789021
-416700 18.7141708113618
-417600 18.7088674999302
-418500 18.7028880031582
-419400 18.6962444374163
-420300 18.6889515115203
-421200 18.6810260865258
-422100 18.672486842658
-423000 18.6633545478879
-423900 18.6536541679377
-424800 18.6434197555463
-425700 18.6327010674685
-426600 18.6215692320524
-427500 18.6101191580815
-428400 18.5984679957051
-429300 18.5867504113891
-430200 18.5751120875729
-431100 18.5637028183581
-432000 18.5526701944565
-432900 18.5421544323179
-433800 18.5322845448004
-434700 18.5231758134239
-435600 18.5149283928616
-436500 18.5076268271863
-437400 18.5013402548553
-438300 18.4961231025847
-439200 18.4920161018147
-440100 18.4890474963996
-441000 18.4872343422148
-441900 18.4865838254692
-442800 18.4870945500868
-443700 18.48875777373
-444600 18.4915586668213
-445500 18.4954778130708
-446400 18.500493087135
-447300 18.506581649161
-448200 18.5137215298014
-449100 18.5218924249208
-450000 18.5310756694916
-450900 18.541253624221
-451800 18.5524087900749
-452700 18.5645229166494
-453600 18.5775762718042
-454500 18.5915471464001
-455400 18.6064116011836
-456300 18.6221434245982
-457200 18.6387142539458
-458100 18.6560938101829
-459000 18.674250202144
-459900 18.6931502644298
-460800 18.7127599021932
-461700 18.7330444241753
-462600 18.753968851923
-463500 18.7754981984205
-464400 18.7975977109253
-465300 18.8202330388269
-466200 18.8433700684089
-467100 18.8669737925692
-468000 18.8910058057
-468900 18.9154210932017
-469800 18.9401655466986
-470700 18.9651753647901
-471600 18.990378158678
-472500 19.0156958846309
-473400 19.041048162912
-474300 19.0663555920074
-475200 19.0915425714244
-476100 19.116539423078
-477000 19.1412837851475
-477900 19.1657213560031
-478800 19.1898061122919
-479700 19.2135001342215
-480600 19.2367731594041
-481500 19.2596019661654
-482400 19.2819696649715
-483300 19.3038649994283
-484200 19.3252814846692
-485100 19.3462168241544
-486000 19.3666722275368
-486900 19.3866517756976
-487800 19.4061615490526
-488700 19.4252078387828
-489600 19.4437939061867
-490500 19.4619158548817
-491400 19.4795591067615
-492300 19.4966967771693
-493200 19.5132903255276
-494100 19.5292920299463
-495000 19.5446484688836
-495900 19.5593042242399
-496800 19.5732052439187
-497700 19.586301555925
-498600 19.5985492302022
-499500 19.6099116178577
-500400 19.6203599688205
-501300 19.6298735561466
-502200 19.6384394351817
-503100 19.6460519515423
-504000 19.6527120918886
-504900 19.6584267508284
-505800 19.6632079681679
-506700 19.6670721754916
-507600 19.6700394797486
-508500 19.6721330508066
-509400 19.6733789759301
-510300 19.6738075305965
-511200 19.6734566885312
-512100 19.6723772310763
-513000 19.6706374452386
-513900 19.668325491118
-514800 19.6655486843519
-515700 19.6624301080745
-516600 19.6591035745844
-517500 19.6557080171938
-518400 19.6523821512298
-519300 19.6492599188342
-520200 19.6464669474393
-521100 19.6441180494606
-522000 19.6423156696035
-522900 19.6411491278307
-523800 19.6406944895952
-524700 19.6410149030804
-525600 19.6421612635734
-526500 19.6441730899
-527400 19.647079522126
-528300 19.6509003726465
-529200 19.6556471801052
-530100 19.6613242338656
-531000 19.6679295596509
-531900 19.6754558877941
-532800 19.6838916204786
-533700 19.6932217527423
-534600 19.7034286544697
-535500 19.7144926444037
-536400 19.7263923536629
-537300 19.7391049301153
-538200 19.7526061534063
-539100 19.7668705212038
-540000 19.7818713461948
-540900 19.7975808824192
-541800 19.8139704840222
-542700 19.8310107903224
-543600 19.8486719270283
-544500 19.866923712791
-545400 19.8857358615582
-546300 19.9050781733623
-547200 19.9249207082975
-548100 19.9452339406759
-549000 19.9659888917505
-549900 19.9871572420894
-550800 20.0087114209762
-551700 20.0306246367039
-552600 20.052870586981
-553500 20.0754222052874
-554400 20.0982490186164
-555300 20.1213137938772
-556200 20.1445698555227
-557100 20.1679606030651
-558000 20.1914205561939
-558900 20.2148782029573
-559800 20.238259438273
-560700 20.2614909376908
-561600 20.2845030216203
-562500 20.3072318038907
-563400 20.3296205993295
-564300 20.3516206708991
-565200 20.3731914436083
-566100 20.3943003209326
-567000 20.4149222270683
-567900 20.4350389777303
-568800 20.4546385597265
-569700 20.4737145518546
-570600 20.4922648467622
-571500 20.5102914895747
-572400 20.5277998430973
-573300 20.544797942189
-574200 20.5612955771704
-575100 20.5773023446437
-576000 20.5928241075011
-576900 20.6078585623195
-577800 20.6223916033736
-578700 20.6363958703217
-579600 20.6498317948633
-580500 20.6626505558324
-581400 20.6747979969407
-582300 20.6862186461808
-583200 20.6968592536629
-584100 20.7066715543857
-585000 20.7156141827754
-585900 20.7236538020001
-586800 20.7307655781306
-587700 20.7369331495047
-588600 20.7421482347601
-589500 20.7464100028614
-590400 20.7497243039547
-591300 20.7521028363464
-592200 20.7535623037414
-593100 20.7541236002497
-594000 20.7538110480633
-594900 20.752651734685
-595800 20.7506751740034
-596700 20.7479136508187
-597600 20.7444044977378
-598500 20.7401918570628
-599400 20.7353286796815
-600300 20.7298770424011
-601200 20.7239068335982
-602100 20.7174932720718
-603000 20.7107139228595
-603900 20.703645783607
-604800 20.6963628082469

+ 0 - 674
connector-fetch-drutes/src/test/resources/predictions/4151559_20220301/340260002.predict

@@ -1,674 +0,0 @@
-# time [s]     T [dg. C] 
-0 19.1
-900 19.0999999999988
-1800 19.0999999974016
-2700 19.0999999480343
-3600 19.0999998044213
-4500 19.1000003952088
-5400 19.1000062472125
-6300 19.1000293824789
-7200 19.1000909966296
-8100 19.1002196772179
-9000 19.1004474378445
-9900 19.1008057822724
-10800 19.1013219225037
-11700 19.1020176230411
-12600 19.1029086702844
-13500 19.1040048720787
-14400 19.1053106468461
-15300 19.1068258288795
-16200 19.1085465291783
-17100 19.1104659567036
-18000 19.1125751513365
-18900 19.1148636097075
-19800 19.1173198027152
-20700 19.1199315929197
-21600 19.1226865641694
-22500 19.1255722769269
-23400 19.1285764622093
-24300 19.1316871657201
-25200 19.1348928521217
-26100 19.1381824777735
-27000 19.1415455387646
-27900 19.144972099769
-28800 19.1484528081519
-29700 19.1519788968474
-30600 19.1555421787897
-31500 19.1591350350838
-32400 19.1627503986264
-33300 19.1663817345086
-34200 19.1700230182363
-35100 19.1736687125623
-36000 19.1773137435443
-36900 19.1809534762948
-37800 19.184583690773
-38700 19.1882005578837
-39600 19.191800616077
-40500 19.195380748586
-41400 19.1989381614043
-42300 19.2024703620647
-43200 19.2059751392625
-44100 19.2094505433419
-45000 19.212894867651
-45900 19.2163066307593
-46800 19.2196845595211
-47700 19.223027572962
-48600 19.2263347669611
-49500 19.2296053996957
-50400 19.2328388778176
-51300 19.2360347433247
-52200 19.2391926610955
-53100 19.2423124070526
-54000 19.2453938569282
-54900 19.2484369756014
-55800 19.251441806986
-56700 19.2544084644479
-57600 19.2573371217376
-58500 19.2602280044228
-59400 19.2630813818139
-60300 19.2658975593734
-61200 19.2686768716052
-62100 19.2714196754177
-63000 19.2741263439576
-63900 19.2767972609101
-64800 19.2794328152594
-65700 19.2820333965044
-66600 19.284599390322
-67500 19.2871311746689
-68400 19.2896291163119
-69300 19.2920935677736
-70200 19.2945248646812
-71100 19.2969233235001
-72000 19.2992892396374
-72900 19.3016228858938
-73800 19.3039245112461
-74700 19.306194339938
-75600 19.3084325708596
-76500 19.3106393771956
-77400 19.3128149063237
-78300 19.3149592799456
-79200 19.3170725944369
-80100 19.3191549214007
-81000 19.3212063084153
-81900 19.3232267799654
-82800 19.3252163385468
-83700 19.3271749659384
-84600 19.3291026246315
-85500 19.3309999217905
-86400 19.3328656293897
-87300 19.3347000238525
-88200 19.3365030658057
-89100 19.3382746972126
-90000 19.3400148206347
-90900 19.3417233332294
-91800 19.3434000977144
-92700 19.3450449952824
-93600 19.3466579058964
-94500 19.3482381084249
-95400 19.3497864376924
-96300 19.3513033234167
-97200 19.3527873752221
-98100 19.3542388662804
-99000 19.3556577915878
-99900 19.3570441358941
-100800 19.358397900221
-101700 19.359719108292
-102600 19.3610078139772
-103500 19.3622636617929
-104400 19.3634872482057
-105300 19.364679667403
-106200 19.3658396747929
-107100 19.366967896027
-108000 19.3680646410346
-108900 19.3691295944103
-109800 19.3701642399738
-110700 19.3711692512074
-111600 19.3721439570203
-112500 19.3730892054339
-113400 19.3740055828972
-114300 19.3748936999125
-115200 19.3757542080088
-116100 19.3765878006934
-117000 19.3773952158778
-117900 19.3781772314976
-118800 19.378934666936
-119700 19.3796683800123
-120600 19.3803792669852
-121500 19.3810682568352
-122400 19.3817363110906
-123300 19.382384420174
-124200 19.383013600301
-125100 19.3836248901829
-126000 19.3842193475872
-126900 19.3847980453983
-127800 19.3853620697386
-128700 19.3859125135768
-129600 19.3864504752382
-130500 19.3869770542798
-131400 19.3874930236311
-132300 19.3879997014054
-133200 19.3884984940753
-134100 19.3889903221107
-135000 19.3894762103878
-135900 19.3899571835352
-136800 19.3904342531075
-137700 19.3909084121363
-138600 19.3913806313956
-139500 19.3918518563865
-140400 19.3923230047305
-141300 19.3927949638344
-142200 19.3932685887585
-143100 19.3937447002537
-144000 19.3942240829497
-144900 19.3947074836906
-145800 19.3951956100186
-146700 19.3956891288086
-147600 19.3961886650584
-148500 19.3966948008381
-149400 19.3972080744
-150300 19.3977289794499
-151200 19.3982579645779
-152100 19.3987954328469
-153000 19.3993417415342
-153900 19.3998972020212
-154800 19.4004620798261
-155700 19.4010365947734
-156600 19.4016209212919
-157500 19.4022151888349
-158400 19.4028194824145
-159300 19.4034338432416
-160200 19.4040582694638
-161100 19.4046927169953
-162000 19.405337100432
-162900 19.4059912940489
-163800 19.4066551328776
-164700 19.4073284138644
-165600 19.4080108971103
-166500 19.4087023071966
-167400 19.4094023345984
-168300 19.410110637188
-169200 19.4108268418288
-170100 19.4115505460575
-171000 19.4122813198483
-171900 19.4130187074517
-172800 19.4137622292939
-173700 19.4145113839207
-174600 19.4152656499659
-175500 19.4160249623418
-176400 19.4167880670006
-177300 19.4175545294505
-178200 19.4183238132602
-179100 19.4190953427712
-180000 19.4198685260086
-180900 19.4206427599245
-181800 19.4214174336015
-182700 19.4221919293694
-183600 19.422965624785
-184500 19.423737893535
-185400 19.4245081062672
-186300 19.425275631217
-187200 19.4260398346702
-188100 19.4268000812983
-189000 19.4275557343968
-189900 19.4283061560559
-190800 19.4290502834954
-191700 19.4297881994267
-192600 19.4305188792452
-193500 19.4312418399917
-194400 19.4319564016458
-195300 19.4326623718763
-196200 19.4333579035814
-197100 19.4340433005412
-198000 19.4347177304962
-198900 19.4353810450447
-199800 19.4360317920156
-200700 19.4366693438739
-201600 19.4372932275701
-202500 19.4379035840158
-203400 19.4384989050052
-204300 19.4390787985809
-205200 19.4396426343431
-206100 19.440189959793
-207000 19.4407200899019
-207900 19.4412324832064
-208800 19.4417265890271
-209700 19.4422013890817
-210600 19.4426571274014
-211500 19.4430930723293
-212400 19.4435087092178
-213300 19.4439040285933
-214200 19.444277823374
-215100 19.4446295276102
-216000 19.4449592323325
-216900 19.4452665430082
-217800 19.4455510185613
-218700 19.4458123328817
-219600 19.4460501609946
-220500 19.4462642047558
-221400 19.4464541903648
-222300 19.4466198675015
-223200 19.4467610086848
-224100 19.4468778500888
-225000 19.4469691329015
-225900 19.4470354402571
-226800 19.4470765552077
-227700 19.4470923300509
-228600 19.4470826527455
-229500 19.4470474317379
-230400 19.4469865928094
-231300 19.4469000773701
-232200 19.4467878410776
-233100 19.4466498525762
-234000 19.4464860922994
-234900 19.4462965513249
-235800 19.4460812302786
-236700 19.4458401382922
-237600 19.4455732920181
-238500 19.4452807147061
-239400 19.4449624353452
-240300 19.4446184878725
-241200 19.4442489104494
-242100 19.4438537448059
-243000 19.4434330356498
-243900 19.4429868301395
-244800 19.4425151774163
-245700 19.4420185049948
-246600 19.441496266496
-247500 19.4409486890973
-248400 19.4403758470031
-249300 19.439777802993
-250200 19.4391546163576
-251100 19.4385063446319
-252000 19.4378330442458
-252900 19.4371347708454
-253800 19.4364115794797
-254700 19.4356635247286
-255600 19.4348906608064
-256500 19.4340930416594
-257400 19.433270721068
-258300 19.4324237527582
-259200 19.4315521905265
-260100 19.4306560883802
-261000 19.429735500695
-261900 19.4287904823915
-262800 19.4278210891374
-263700 19.4268273775822
-264600 19.4258094056363
-265500 19.4247672328115
-266400 19.423700920642
-267300 19.4226105331664
-268200 19.4214961377677
-269100 19.4203578056377
-270000 19.4191956130061
-270900 19.4180096421879
-271800 19.4167999829033
-272700 19.4155667337694
-273600 19.4143100039535
-274500 19.4130299149672
-275400 19.4117266025729
-276300 19.4104002187681
-277200 19.409050933811
-278100 19.4076789382457
-279000 19.4062844448866
-279900 19.4048676907227
-280800 19.4034289387039
-281700 19.4019684793759
-282600 19.4004866323339
-283500 19.3989837474697
-284400 19.3974602059921
-285300 19.3959164212048
-286200 19.3943528390289
-287100 19.3927699382635
-288000 19.3911682305794
-288900 19.3895482602387
-289800 19.3879106035936
-290700 19.3862558682136
-291600 19.3845846919116
-292500 19.3828977414375
-293400 19.3811957109811
-294300 19.3794793204746
-295200 19.3777493137188
-296100 19.376006456356
-297000 19.374251533716
-297900 19.3724853485626
-298800 19.370708718765
-299700 19.3689224749238
-300600 19.3671274579743
-301500 19.3653245167923
-302400 19.3635145058255
-303300 19.3616982827684
-304200 19.3598767062992
-305100 19.358050633892
-306000 19.3562209197126
-306900 19.3543884126042
-307800 19.3525539541615
-308700 19.3507183768887
-309600 19.3488823732075
-310500 19.3470470937377
-311400 19.345213051468
-312300 19.3433810883857
-313200 19.3415519700487
-314100 19.3397264399892
-315000 19.3379052203929
-315900 19.3360890108661
-316800 19.3342784869222
-317700 19.3324742984002
-318600 19.3306770678745
-319500 19.328887389084
-320400 19.3271058254047
-321300 19.3253329083897
-322200 19.323569136398
-323100 19.3218149733323
-324000 19.3200708475071
-324900 19.3183371506618
-325800 19.3166142371349
-326700 19.3149024232075
-327600 19.3132019866228
-328500 19.3115131662814
-329400 19.3098361621089
-330300 19.3081710240783
-331200 19.3065180274074
-332100 19.3048773725413
-333000 19.3032488793296
-333900 19.3016326135078
-334800 19.3000285514933
-335700 19.298436629768
-336600 19.2968567481126
-337500 19.2952887707627
-338400 19.2937325272093
-339300 19.2921878128885
-340200 19.2906543898211
-341100 19.2891319872225
-342000 19.2876203020997
-342900 19.2861189998438
-343800 19.2846277148313
-344700 19.2831460510458
-345600 19.2816735827302
-346500 19.2802098550823
-347400 19.2787543850039
-348300 19.2773066619175
-349200 19.275866148663
-350100 19.2744322824932
-351000 19.2730044761861
-351900 19.2715821193004
-352800 19.2701645795974
-353700 19.2687512046697
-354600 19.2673413237403
-355500 19.2659342498087
-356400 19.2645292819472
-357300 19.2631257079222
-358200 19.2617228070633
-359100 19.2603198533806
-360000 19.2589161189051
-360900 19.2575108772156
-361800 19.2561034071099
-362700 19.2546929963702
-363600 19.2532789455677
-364500 19.2518605718529
-365400 19.2504372126743
-366300 19.249008229374
-367200 19.2475730106105
-368100 19.2461309755662
-369000 19.2446815769026
-369900 19.2432243034354
-370800 19.2417586825085
-371700 19.2402842820591
-372600 19.2388007123696
-373500 19.2373076275184
-374400 19.2358047265425
-375300 19.2342917543495
-376200 19.2327685023251
-377100 19.2312348088729
-378000 19.2296905596249
-378900 19.2281356875799
-379800 19.2265701730939
-380700 19.2249940437567
-381600 19.2234073741712
-382500 19.2218102856394
-383400 19.2202029457616
-384300 19.2185855679455
-385200 19.216958410823
-386100 19.2153217775683
-387000 19.2136760151111
-387900 19.2120215132379
-388800 19.2103587035761
-389700 19.208688058454
-390600 19.2070100896353
-391500 19.2053253469226
-392400 19.2036343788584
-393300 19.2019378586224
-394200 19.2002364338664
-395100 19.1985307855475
-396000 19.1968216265222
-396900 19.1951097385988
-397800 19.1933958209817
-398700 19.1916806791724
-399600 19.1899651207832
-400500 19.1882499676545
-401400 19.1865360537435
-402300 19.1848242220598
-403200 19.1831153212936
-404100 19.1814102022884
-405000 19.1797097144267
-405900 19.1780147019794
-406800 19.176326000463
-407700 19.1746444330472
-408600 19.1729708070561
-409500 19.171305910601
-410400 19.1696505093801
-411300 19.1680053436786
-412200 19.1663711255929
-413100 19.1647485365023
-414000 19.1631382247994
-414900 19.1615408038883
-415800 19.1599568504497
-416700 19.158386902965
-417600 19.1568314604879
-418500 19.1552909816441
-419400 19.1537658838291
-420300 19.1522565426066
-421200 19.1507632912423
-422100 19.1492864203838
-423000 19.1478261778527
-423900 19.1463827685324
-424800 19.1449563543417
-425700 19.1435470542835
-426600 19.142154944566
-427500 19.1407800587948
-428400 19.1394223882377
-429300 19.1380818821673
-430200 19.1367584482869
-431100 19.1354519532442
-432000 19.1341622232424
-432900 19.1328890447509
-433800 19.1316321653269
-434700 19.1303912945514
-435600 19.1291661050921
-436500 19.127956233907
-437400 19.1267612836059
-438300 19.1255808239941
-439200 19.1244143938274
-440100 19.1232615028044
-441000 19.1221216338448
-441900 19.1209942456417
-442800 19.1198787755625
-443700 19.1187746428693
-444600 19.1176812522776
-445500 19.1165979978367
-446400 19.1155242671068
-447300 19.1144594455932
-448200 19.1134029213886
-449100 19.1123540899641
-450000 19.1113123590438
-450900 19.1102771534928
-451800 19.1092479201496
-452700 19.108224132533
-453600 19.1072052953583
-454500 19.106190948804
-455400 19.1051806724753
-456300 19.1041740890212
-457200 19.1031708673699
-458100 19.1021707255569
-459000 19.1011734331299
-459900 19.100178813124
-460800 19.0991867436093
-461700 19.0981971588065
-462600 19.0972100498649
-463500 19.0962254651174
-464400 19.0952435101262
-465300 19.0942643473056
-466200 19.0932881952567
-467100 19.092315327817
-468000 19.0913460728484
-468900 19.0903808107894
-469800 19.0894199729928
-470700 19.0884640508097
-471600 19.0875135547149
-472500 19.0865690612739
-473400 19.0856311858098
-474300 19.0847005835542
-475200 19.0837779472213
-476100 19.0828640043806
-477000 19.0819595147689
-477900 19.081065267545
-478800 19.080182078494
-479700 19.0793107871866
-480600 19.0784522541002
-481500 19.0776073577014
-482400 19.0767769914907
-483300 19.0759620453716
-484200 19.0751634586251
-485100 19.074382144764
-486000 19.0736190262163
-486900 19.0728750252657
-487800 19.0721510606081
-488700 19.0714480440482
-489600 19.0707668771883
-490500 19.07010844813
-491400 19.069473628214
-492300 19.0688632688274
-493200 19.0682781983044
-494100 19.0677192189513
-495000 19.0671871042238
-495900 19.0666825960817
-496800 19.0662064025447
-497700 19.0657591954706
-498600 19.0653416085677
-499500 19.0649542356541
-500400 19.0645976291645
-501300 19.0642722989018
-502200 19.0639787110223
-503100 19.0637172872346
-504000 19.0634884041891
-504900 19.0632923930199
-505800 19.0631295390527
-506700 19.063000081525
-507600 19.0629042134577
-508500 19.0628420815132
-509400 19.0628137858798
-510300 19.0628193801543
-511200 19.0628588712172
-512100 19.0629322190985
-513000 19.063039336842
-513900 19.063180090378
-514800 19.0633542984229
-515700 19.0635617324224
-516600 19.0638021165604
-517500 19.064075127854
-518400 19.0643803963541
-519300 19.0647175054718
-520200 19.0650859924459
-521100 19.0654853489691
-522000 19.065915021988
-522900 19.0663744146941
-523800 19.0668628877232
-524700 19.0673797605857
-525600 19.0679243133486
-526500 19.0684957885849
-527400 19.0690933936833
-528300 19.0697163033449
-529200 19.0703636625691
-530100 19.0710345898909
-531000 19.0717281809844
-531900 19.0724435125915
-532800 19.073179646753
-533700 19.0739356353052
-534600 19.0747105245977
-535500 19.0755033603776
-536400 19.0763131927808
-537300 19.0771390813667
-538200 19.0779801001318
-539100 19.078835342437
-540000 19.0797039257884
-540900 19.080584996413
-541800 19.0814777335793
-542700 19.0823813536169
-543600 19.0832951135984
-544500 19.0842183146534
-545400 19.0851503048934
-546300 19.086090481932
-547200 19.0870382949946
-548100 19.0879932466187
-549000 19.0889548939252
-549900 19.0899228495399
-550800 19.0908967820775
-551700 19.0918764162909
-552600 19.0928615328638
-553500 19.0938519678801
-554400 19.0948476119906
-555300 19.0958484093022
-556200 19.0968543526864
-557100 19.0978654939446
-558000 19.098881927398
-558900 19.099903795144
-559800 19.1009312837928
-560700 19.1019646222732
-561600 19.1030040794984
-562500 19.1040499619081
-563400 19.1051026109301
-564300 19.1061624003876
-565200 19.1072297338676
-566100 19.108305042061
-567000 19.1093887800793
-567900 19.1104814247494
-568800 19.1115834718842
-569700 19.1126954426155
-570600 19.1138178481429
-571500 19.1149512282635
-572400 19.1160961270558
-573300 19.117253093344
-574200 19.1184226777406
-575100 19.1196054296284
-576000 19.1208018941535
-576900 19.1220126092294
-577800 19.1232381025686
-578700 19.1244788887664
-579600 19.1257354664668
-580500 19.1270083156364
-581400 19.1282978949783
-582300 19.1296046395078
-583200 19.1309289583162
-584100 19.1322712325397
-585000 19.1336318135489
-585900 19.1350110213671
-586800 19.1364091433199
-587700 19.1378264329121
-588600 19.1392631089178
-589500 19.1407193546665
-590400 19.142195317497
-591300 19.1436911083579
-592200 19.1452068014756
-593100 19.1467424341737
-594000 19.1482980066496
-594900 19.1498734818141
-595800 19.1514687851144
-596700 19.1530837814619
-597600 19.1547183567294
-598500 19.156372313069
-599400 19.158045423032
-600300 19.1597374209064
-601200 19.1614480023125
-602100 19.1631768240296
-603000 19.164923503871
-603900 19.1666876206461
-604800 19.1684687142384

+ 0 - 674
connector-fetch-drutes/src/test/resources/predictions/4151559_20220301/710010001.predict

@@ -1,674 +0,0 @@
-# time [s]     hpress [kPa]    sat deg [%]  
-0 -181.2 24.1129915711394
-900 -181.199999987291 24.1129915720001
-1800 -181.199978884801 24.1129930011504
-2700 -181.199651961429 24.1130151418217
-3600 -181.198480430554 24.1130944834706
-4500 -181.196213889521 24.1132479865846
-5400 -181.192936521422 24.1134699537316
-6300 -181.1888718934 24.1137452481189
-7200 -181.184255929365 24.1140578952321
-8100 -181.179290198849 24.1143942458394
-9000 -181.174133119558 24.1147435718293
-9900 -181.168904752524 24.1150977417392
-10800 -181.163694857313 24.1154506754666
-11700 -181.158569849336 24.1157978733948
-12600 -181.153579012514 24.1161359958119
-13500 -181.148758717773 24.1164625773737
-14400 -181.144135458961 24.1167758216125
-15300 -181.139728066517 24.1170744511026
-16200 -181.13554934805 24.1173575964141
-17100 -181.131607318235 24.1176247128621
-18000 -181.127906127474 24.1178755176421
-18900 -181.124446774142 24.1181099416122
-19800 -181.121227662881 24.1183280914917
-20700 -181.118245042503 24.1185302202079
-21600 -181.115493330069 24.1187167049472
-22500 -181.112965360187 24.1188880302672
-23400 -181.110652613319 24.1190447726269
-24300 -181.10854545062 24.1191875844695
-25200 -181.106633363549 24.1193171773005
-26100 -181.104905224141 24.1194343047188
-27000 -181.103349514257 24.1195397468701
-27900 -181.101954508995 24.1196342980057
-28800 -181.100708381736 24.119718759353
-29700 -181.099599236642 24.1197939369028
-30600 -181.098615098304 24.1198606421018
-31500 -181.097743827978 24.1199196975217
-32400 -181.096972917706 24.1199719508066
-33300 -181.096289203699 24.1200182940935
-34200 -181.095678602601 24.1200596818841
-35100 -181.095125893741 24.1200971457992
-36000 -181.094614503599 24.1201318091851
-36900 -181.094126277918 24.1201649025578
-37800 -181.093641258075 24.1201977787607
-38700 -181.093137447188 24.1202319288194
-39600 -181.092590505763 24.1202690025762
-40500 -181.091973343078 24.1203108363951
-41400 -181.091255588063 24.1203594890413
-42300 -181.090402944327 24.1204172854209
-43200 -181.089376407445 24.1204868696684
-44100 -181.088131309415 24.1205712699644
-45000 -181.086616117263 24.1206739800412
-45900 -181.084770918557 24.1207990619414
-46800 -181.082525565705 24.120951271952
-47700 -181.079797490843 24.1211362089323
-48600 -181.076489252569 24.1213604809111
-49500 -181.072485837009 24.1216318884666
-50400 -181.067651776104 24.1219596206754
-51300 -181.061828102915 24.122354462357
-52200 -181.054829223943 24.1228290072777
-53100 -181.046439718613 24.1233978767407
-54000 -181.036411116612 24.1240779402696
-54900 -181.024458741776 24.1248885325547
-55800 -181.010258607911 24.1258516678755
-56700 -180.993444365518 24.1269922523464
-57600 -180.973604217002 24.1283382999117
-58500 -180.950278124581 24.1299211304959
-59400 -180.922955505703 24.1317755375436
-60300 -180.891073420539 24.13393992514
-61200 -180.854014993533 24.1364564327955
-62100 -180.811108094066 24.1393710468483
-63000 -180.761625938536 24.1427335862264
-63900 -180.704788366213 24.1465976478385
-64800 -180.639763980648 24.1510204991461
-65700 -180.565671133733 24.1560630561436
-66600 -180.481578432193 24.1617899015158
-67500 -180.386513933113 24.1682687190467
-68400 -180.279471596042 24.1755699217382
-69300 -180.15941690339 24.183766344044
-70200 -180.025290712092 24.192933062653
-71100 -179.876001780768 24.2031480010175
-72000 -179.710450251964 24.2144904264848
-72900 -179.527575154966 24.2270377961488
-73800 -179.326302157917 24.2408694406962
-74700 -179.105615271936 24.256061749362
-75600 -178.864471211178 24.2726941702834
-76500 -178.601826202087 24.2908475060684
-77400 -178.316818245925 24.3105914160042
-78300 -178.008749589738 24.3319856263518
-79200 -177.676751774933 24.3551032645585
-80100 -177.32038919738 24.3799889473749
-81000 -176.938786239744 24.4067196925719
-81900 -176.531284887384 24.4353592455233
-82800 -176.097454836932 24.4659572601655
-83700 -175.636982145096 24.4985570321374
-84600 -175.149443394194 24.533211529886
-85500 -174.634597834992 24.569962767016
-86400 -174.092487263637 24.6088344510632
-87300 -173.523052383772 24.649859295968
-88200 -172.92660162467 24.6930452287146
-89100 -172.303422346568 24.7384031226158
-90000 -171.653898302158 24.7859382255016
-90900 -170.978575422315 24.8356451087578
-91800 -170.278162775079 24.8875072256781
-92700 -169.553535700773 24.9414962562922
-93600 -168.80565494199 24.9975777135751
-94500 -168.036026477179 25.0556757915701
-95400 -167.245831420875 25.1157381661863
-96300 -166.435276808515 25.1777865367007
-97200 -165.606134686409 25.2417227220678
-98100 -164.759915884671 25.3074664950475
-99000 -163.898057080333 25.3749413952746
-99900 -163.022037235847 25.4440655125179
-100800 -162.13335792459 25.5147527123711
-101700 -161.233533317583 25.5869131532056
-102600 -160.324080174582 25.660453840772
-103500 -159.406839298552 25.7352520793672
-104400 -158.483736104555 25.8111738974594
-105300 -157.554333981174 25.8882773464247
-106200 -156.621097368705 25.9663785303402
-107100 -155.685428763526 26.0453769096685
-108000 -154.748645020934 26.1251754889776
-108900 -153.812797152692 26.2056102071333
-109800 -152.878538883966 26.2866326129555
-110700 -151.945642355198 26.3682698362907
-111600 -151.016296531546 26.4503354736117
-112500 -150.091512303538 26.5327416217439
-113400 -149.172233817576 26.6154031136943
-114300 -148.259338442168 26.6982377171731
-115200 -147.353637833495 26.7811662461059
-116100 -146.455878634172 26.8641127137922
-117000 -145.566743798744 26.9470044356639
-117900 -144.686853803258 27.0297721470116
-118800 -143.816768483992 27.1123500641693
-119700 -142.956988776508 27.1946759543977
-120600 -142.107958882405 27.2766911627584
-121500 -141.2700686278 27.3583406154534
-122400 -140.443656339607 27.4395727652736
-123300 -139.629011802882 27.520339518599
-124200 -138.826379368549 27.6005961356355
-125100 -138.035961178273 27.6803011055755
-126000 -137.257920499976 27.7594159959761
-126900 -136.492385083972 27.8379052843863
-127800 -135.739450197431 27.915736207158
-128700 -134.99918168656 27.9928785903902
-129600 -134.271618447189 28.0693047278559
-130500 -133.55677473832 28.1449892629348
-131400 -132.854747895835 28.2198977679203
-132300 -132.16569345097 28.2939891061453
-133200 -131.489196871549 28.3672835375824
-134100 -130.825200434939 28.4397635038557
-135000 -130.173629808626 28.5114133999192
-135900 -129.534395668678 28.582219473703
-136800 -128.907395304527 28.6521697181642
-137700 -128.292514183472 28.721253758848
-138600 -127.689627432303 28.7894627420788
-139500 -127.098601202494 28.8567892281562
-140400 -126.519293897477 28.9232270927603
-141300 -125.951557266245 28.9887714369186
-142200 -125.3952373791 29.0534185045139
-143100 -124.850175497431 29.1171656066636
-144000 -124.316208840944 29.1800110532242
-144900 -123.793171272136 29.2419540897004
-145800 -123.280893932335 29.3029948359767
-146700 -122.779205853207 29.3631342243341
-147600 -122.287934546705 29.422373936613
-148500 -121.806906569104 29.4807163412538
-149400 -121.335948062745 29.5381644300006
-150300 -120.874885303615 29.5947217510157
-151200 -120.423545266422 29.6503923370364
-152100 -119.981756156056 29.7051806349567
-153000 -119.549347815946 29.7590914482857
-153900 -119.126151950831 29.8121299010042
-154800 -118.712002172139 29.8643014227006
-155700 -118.306733935097 29.9156117470583
-156600 -117.910184453141 29.9660669132736
-157500 -117.522192648031 30.0156732630252
-158400 -117.142599156405 30.064437430174
-159300 -116.771246383956 30.1123663241065
-160200 -116.407978572339 30.1594671110767
-161100 -116.052641816723 30.2057472016279
-162000 -115.705084003483 30.2512142483161
-162900 -115.365154719884 30.2958761472447
-163800 -115.032705221481 30.3397410321876
-164700 -114.707588489645 30.3828172567765
-165600 -114.389659356074 30.4251133675089
-166500 -114.078774671402 30.4666380704156
-167400 -113.774793512577 30.5074001919801
-168300 -113.477577420641 30.5474086353436
-169200 -113.186990643641 30.5866723351563
-170100 -112.90290035115 30.625200215668
-171000 -112.62517679039 30.6630011562974
-171900 -112.353693367854 30.7000839671287
-172800 -112.088326657018 30.7364573745324
-173700 -111.828956350148 30.7721300146946
-174600 -111.575465183568 30.80711043118
-175500 -111.327814190143 30.8413966273008
-176400 -111.085853025959 30.8750022741494
-177300 -110.849441627174 30.9079399750514
-178200 -110.618473710615 30.9402179464902
-179100 -110.39284577227 30.971844292233
-180000 -110.172457005562 31.0028270041329
-180900 -109.957209236056 31.0331739610336
-181800 -109.747006718479 31.0628929475419
-182700 -109.541756172199 31.0919916396334
-183600 -109.341366564841 31.1204776262241
-184500 -109.145749028853 31.1483584124529
-185400 -108.954816760509 31.1756414258419
-186300 -108.76848493558 31.2023340204538
-187200 -108.586670649525 31.2284434778711
-188100 -108.409292872789 31.2539770062765
-189000 -108.236272399687 31.278941740709
-189900 -108.067531772933 31.3033447470969
-190800 -107.902917802425 31.3272042583886
-191700 -107.742437255094 31.3505155162789
-192600 -107.585964129538 31.3732931739828
-193500 -107.433475531843 31.3955370539057
-194400 -107.284901437209 31.4172539716791
-195300 -107.140286824285 31.4384340342598
-196200 -106.999337368167 31.4591172050749
-197100 -106.862099793345 31.4792936543863
-198000 -106.728509024381 31.498970046186
-198900 -106.598618714844 31.5181356427851
-199800 -106.47225255777 31.5368137349251
-200700 -106.349316825703 31.5550156172639
-201600 -106.229687592127 31.5727572177694
-202500 -106.113513896508 31.590014059607
-203400 -106.000624957947 31.6068092016521
-204300 -105.890960217959 31.6231494799019
-205200 -105.784459515892 31.6390417785399
-206100 -105.681073140687 31.6544915232778
-207000 -105.580750156509 31.6695044162363
-207900 -105.48343420071 31.6840870647131
-208800 -105.389073452273 31.6982454875681
-209700 -105.297504008344 31.7120026405046
-210600 -105.208785898068 31.725347941174
-211500 -105.122873796881 31.7382866827015
-212400 -105.039719875034 31.7508246118967
-213300 -104.959388409227 31.7629506191568
-214200 -104.881725547233 31.7746865756633
-215100 -104.806618550904 31.78604827095
-216000 -104.734040067315 31.7970386668971
-216900 -104.664003972552 31.8076545261269
-217800 -104.596453871757 31.8179033064632
-218700 -104.531356984333 31.8277889461104
-219600 -104.468674099998 31.8373164140773
-220500 -104.408367049265 31.8464905759996
-221400 -104.350398658857 31.8553161986427
-222300 -104.294732697677 31.8637979559554
-223200 -104.241333814091 31.8719404365633
-224100 -104.190271850172 31.8797322183428
-225000 -104.141336006393 31.8872047498038
-225900 -104.094533998551 31.894356195488
-226800 -104.049865256264 31.9011860117613
-227700 -104.007297985379 31.9076984612958
-228600 -103.966800990491 31.9138977538761
-229500 -103.928343658317 31.9197880474519
-230400 -103.891895945149 31.925373448618
-231300 -103.857428366628 31.9306580127875
-232200 -103.82491199066 31.9356457439315
-233100 -103.794318434384 31.9403405937395
-234000 -103.765619864574 31.9447464602971
-234900 -103.738788999338 31.948867186602
-235800 -103.713799108784 31.9527065592801
-236700 -103.690624012898 31.9562683077692
-237600 -103.669238075913 31.9595561040812
-238500 -103.649616197221 31.9625735631372
-239400 -103.631733799316 31.9653242435985
-240300 -103.615566813506 31.9678116490804
-241200 -103.601091664175 31.9700392296279
-242100 -103.588285252305 31.9720103833415
-243000 -103.577124938775 31.9737284580738
-243900 -103.567588527849 31.9751967531303
-244800 -103.559654251246 31.9764185209135
-245700 -103.553391070034 31.977383058916
-246600 -103.548689817928 31.9781071132282
-247500 -103.545527124538 31.9785942361137
-248400 -103.543882796486 31.9788475065397
-249300 -103.543737006131 31.9788699624279
-250200 -103.545070321119 31.9786645954541
-251100 -103.547863846234 31.9782343285794
-252000 -103.552099526545 31.9775819687695
-252900 -103.557760533414 31.9767101470084
-253800 -103.564831563734 31.9756212717507
-254700 -103.573298921529 31.9743175159761
-255600 -103.583150359455 31.9728008412882
-256500 -103.594374744347 31.9710730491483
-257400 -103.60696164189 31.9691358445655
-258300 -103.620900904283 31.9669908993025
-259200 -103.636182316001 31.964639906096
-260100 -103.652795323774 31.96208461986
-261000 -103.670728855339 31.9593268851772
-261900 -103.689971218454 31.9563686513949
-262800 -103.710510065524 31.9532119775915
-263700 -103.732332407694 31.949859029909
-264600 -103.755424663322 31.9463120735876
-265500 -103.779772728164 31.9425734616577
-266400 -103.805362057278 31.9386456218368
-267300 -103.832177770305 31.9345310398517
-268200 -103.860204659702 31.9302322576686
-269100 -103.889427387109 31.9257518428785
-270000 -103.919830479639 31.9210923888093
-270900 -103.95139841413 31.9162565011647
-271800 -103.984115664539 31.9112467903407
-272700 -104.017966713108 31.9060658693111
-273600 -104.05293601428 31.9007163587491
-274500 -104.089007933162 31.8952008960296
-275400 -104.126166702131 31.8895221414354
-276300 -104.164396427487 31.8836827767032
-277200 -104.203681150136 31.8776854953281
-278100 -104.244004943276 31.8715329872581
-279000 -104.285352023529 31.8652279215938
-279900 -104.327706855776 31.8587729303146
-280800 -104.371054239572 31.8521705948792
-281700 -104.415379372154 31.8454234364488
-282600 -104.460667888169 31.8385339097043
-283500 -104.50690587905 31.8315043997963
-284400 -104.554079896159 31.8243372217906
-285300 -104.602176941925 31.8170346219557
-286200 -104.651184452768 31.8095987803086
-287100 -104.701090276904 31.8020318139427
-288000 -104.751882649421 31.7943357807709
-288900 -104.803550182853 31.7865126809215
-289800 -104.856081775369 31.7785644706025
-290700 -104.90946668566 31.7704930507251
-291600 -104.963694443114 31.7623002804607
-292500 -105.018754840038 31.7539879783711
-293400 -105.074637886554 31.7455579291682
-294300 -105.131333695784 31.7370119009558
-295200 -105.188832263593 31.7283516782745
-296100 -105.247123188409 31.7195791040033
-297000 -105.306195440501 31.710696113626
-297900 -105.366037270913 31.7017047483427
-298800 -105.426636281658 31.692607143907
-299700 -105.487979620135 31.6834055008765
-300600 -105.550054237055 31.6741020454906
-301500 -105.612847151772 31.6646989896346
-302400 -105.676345686443 31.6551984956739
-303300 -105.740537649135 31.6456026491071
-304200 -105.805411460533 31.6359134397949
-305100 -105.870956228048 31.6261327511502
-306000 -105.937161775748 31.6162623559849
-306900 -106.004018640053 31.6063039174947
-307800 -106.071518040768 31.5962589939242
-308700 -106.139651835758 31.5861290456527
-309600 -106.208381931772 31.5759199770598
-310500 -106.277760522032 31.5656242807825
-311400 -106.347754165529 31.555247170229
-312300 -106.418354870033 31.544790073961
-313200 -106.489556817874 31.5342540958275
-314100 -106.561354488201 31.5236402938998
-315000 -106.633742593164 31.5129496900357
-315900 -106.706715967457 31.502183286272
-316800 -106.780269382315 31.4913420922522
-317700 -106.854397311726 31.4804271595245
-318600 -106.929093727864 31.4694396113352
-319500 -107.004351994834 31.4583806577965
-320400 -107.080164883454 31.447251593193
-321300 -107.156524686432 31.4360537785819
-322200 -107.233423392745 31.4247886158237
-323100 -107.310852880025 31.4134575191355
-324000 -107.388805094297 31.402061888669
-324900 -107.467272199224 31.3906030887044
-325800 -107.546246687754 31.3790824314715
-326700 -107.625721456315 31.3675011665309
-327600 -107.705689845901 31.3558604750494
-328500 -107.786145656175 31.3441614680412
-329400 -107.867083139028 31.3324051876097
-330300 -107.948463082992 31.3205975254715
-331200 -108.030295308134 31.3087372465479
-332100 -108.112645781734 31.2968149982623
-333000 -108.195460508876 31.2848388094671
-333900 -108.278733959944 31.2728096778649
-334800 -108.362462443387 31.2607283329967
-335700 -108.44664248805 31.2485954707263
-336600 -108.53127086955 31.2364117495953
-337500 -108.616344795422 31.2241777643877
-338400 -108.701862308539 31.2118939885446
-339300 -108.787822788784 31.1995607028919
-340200 -108.874227319058 31.1871779443022
-341100 -108.961078749495 31.1747454979084
-342000 -109.048381445837 31.1622629345251
-342900 -109.136140819289 31.1497296790253
-343800 -109.22436276798 31.1371450908563
-344700 -109.31305313872 31.1245085411148
-345600 -109.402217276507 31.1118194766007
-346500 -109.49185969071 31.0990774668392
-347400 -109.581983839473 31.0862822339851
-348300 -109.672592018206 31.0734336677497
-349200 -109.763685331316 31.0605318284197
-350100 -109.855263725374 31.0475769411542
-351000 -109.947326064024 31.0345693844091
-351900 -110.03987022839 31.0215096748337
-352800 -110.132893230468 31.0083984504353
-353700 -110.226391334038 30.9952364527925
-354600 -110.320360154363 30.9820245123731
-355500 -110.414794788713 30.9687635296213
-356400 -110.509689900599 30.955454462668
-357300 -110.605039816526 30.9420983133746
-358200 -110.70083863693 30.9286961114918
-359100 -110.797080423173 30.9152488883156
-360000 -110.893759494986 30.9017576351384
-360900 -110.990870773201 30.8882232557081
-361800 -111.088410038035 30.8746465308031
-362700 -111.186374010115 30.8610281077139
-363600 -111.284760246659 30.847368515462
-364500 -111.383566908373 30.8336681978305
-365400 -111.482792471415 30.8199275537499
-366300 -111.582435446632 30.8061469763731
-367200 -111.682494144699 30.7923268855121
-368100 -111.782966503789 30.7784677512029
-369000 -111.883849980769 30.7645701083356
-369900 -111.985141498109 30.7506345635065
-370800 -112.08683743493 30.736661795748
-371700 -112.188933650179 30.7226525528421
-372600 -112.29142552715 30.7086076447339
-373500 -112.394308030529 30.6945279352783
-374400 -112.497575769255 30.6804143332546
-375300 -112.601223065665 30.666267782591
-376200 -112.70524399557 30.6520892566242
-377100 -112.809632477413 30.6378797457264
-378000 -112.914382302183 30.623640253079
-378900 -113.019487179823 30.6093717882412
-379800 -113.124940742857 30.5950753665673
-380700 -113.230736445077 30.5807520228261
-381600 -113.336867307832 30.5664028452999
-382500 -113.443325579176 30.5520290213612
-383400 -113.55010245737 30.5376318740008
-384300 -113.657188001636 30.5232128728541
-385200 -113.764571257973 30.5087736162289
-386100 -113.87224054833 30.494315791353
-387000 -113.980183840227 30.4798411241645
-387900 -114.088389121214 30.465351328865
-388800 -114.19684472686 30.4508480641026
-389700 -114.305539596458 30.4363328991671
-390600 -114.414463450192 30.4218072909373
-391500 -114.523606893648 30.4072725706967
-392400 -114.632939244933 30.3927328915843
-393300 -114.742462574227 30.3781880374375
-394200 -114.852182939357 30.3636372649867
-395100 -114.962094522968 30.3490814068495
-396000 -115.072192263891 30.3345211912644
-396900 -115.182504605167 30.3199529209842
-397800 -115.292995852739 30.3053813720153
-398700 -115.403661711592 30.2908071617167
-399600 -115.514499351379 30.276230711651
-400500 -115.625506313924 30.2616523923168
-401400 -115.736680428333 30.2470725346194
-402300 -115.848019668635 30.2324914487683
-403200 -115.959521920761 30.2179094548654
-404100 -116.071184697436 30.2033269200355
-405000 -116.18300489766 30.1887442894323
-405900 -116.294978692675 30.1741621005221
-406800 -116.407101560354 30.1595809779554
-407700 -116.519368437337 30.1450016131987
-408600 -116.631773935672 30.1304247359754
-409500 -116.74431257346 30.1158510841323
-410400 -116.856978983678 30.1012813765806
-411300 -116.969768081704 30.0867162917934
-412200 -117.082675185099 30.0721564526375
-413100 -117.195696087684 30.0576024172178
-414000 -117.308827094407 30.0430546748376
-414900 -117.422065025224 30.028513645973
-415800 -117.535407196156 30.0139796851734
-416700 -117.648851384789 29.9994530859315
-417600 -117.762395786165 29.9849340867411
-418500 -117.876038968471 29.9704228771317
-419400 -117.989779803569 29.9559196068607
-420300 -118.103617445765 29.9414243888896
-421200 -118.217551266255 29.92693730797
-422100 -118.331580822847 29.9124584246808
-423000 -118.445705889246 29.8979877718863
-423900 -118.559926679783 29.883525326494
-424800 -118.674244366354 29.8690709445322
-425700 -118.788661771277 29.854624274577
-426600 -118.903183949622 29.8401846858416
-427500 -119.0178184186 29.8257512412819
-428400 -119.132574967159 29.8113227236843
-429300 -119.247465133014 29.7968977032685
-430200 -119.362501501025 29.7824746271161
-431100 -119.477696969737 29.7680519118366
-432000 -119.593064090526 29.7536280263875
-432900 -119.708614535908 29.7392015580841
-433800 -119.82435871517 29.7247712596969
-434700 -119.940305530431 29.710336078676
-435600 -120.056462252963 29.6958951711816
-436500 -120.172834494781 29.6814479041688
-437400 -120.289426250746 29.6669938487089
-438300 -120.406239989448 29.652532767324
-439200 -120.523276774975 29.6380645976028
-440100 -120.640536410514 29.6235894332537
-441000 -120.758017564729 29.6091075074312
-441900 -120.875717945273 29.5946191704001
-442800 -120.993634418923 29.5801248739385
-443700 -121.111763148263 29.5656251538387
-444600 -121.230099724868 29.5511206129816
-445500 -121.348639327939 29.5366119014404
-446400 -121.467376923232 29.5220996918273
-447300 -121.586307473789 29.5075846534141
-448200 -121.705426105179 29.4930674320112
-449100 -121.824728184285 29.4785486405344
-450000 -121.944209309085 29.4640288604629
-450900 -122.063865235409 29.4495086509284
-451800 -122.183691775266 29.4349885611708
-452700 -122.303684695629 29.4204691428317
-453600 -122.423839635692 29.405950959914
-454500 -122.544152050338 29.3914345954937
-455400 -122.664617180343 29.376920655156
-456300 -122.785230045728 29.3624097676187
-457200 -122.905985456951 29.347902583207
-458100 -123.026878038481 29.3333997708572
-459000 -123.147902259909 29.3189020142431
-459900 -123.269052470741 29.3044100074968
-460800 -123.390322935956 29.289924450872
-461700 -123.511707877534 29.2754460457373
-462600 -123.633201477678 29.2609754941682
-463500 -123.754797950322 29.2465134904295
-464400 -123.876491537485 29.2320607214507
-465300 -123.998276532973 29.2176178640552
-466200 -124.120147260803 29.2031855875748
-467100 -124.242097942229 29.1887645696037
-468000 -124.364122403866 29.1743555303687
-468900 -124.486213704359 29.1599592764019
-469800 -124.608363845315 29.145576733923
-470700 -124.730548987936 29.1312106848912
-471600 -124.852772155185 29.1168607437481
-472500 -124.975024140103 29.102527959843
-473400 -125.097293881925 29.0882135933074
-474300 -125.21957042834 29.0739188843027
-475200 -125.341843263424 29.0596450148971
-476100 -125.464102554618 29.0453930807005
-477000 -125.586339315607 29.031164072526
-477900 -125.708545493959 29.0169588669511
-478800 -125.830713997782 29.0027782240316
-479700 -125.952838676738 28.9886227903266
-480600 -126.074914271405 28.9744931055566
-481500 -126.196936342662 28.9603896115155
-482400 -126.3189011902 28.9463126621608
-483300 -126.44081904372 28.9322610049556
-484200 -126.562674541102 28.9182363376423
-485100 -126.684465276067 28.9042388603156
-486000 -126.806189665732 28.8902686773844
-486900 -126.927846465318 28.8763258538254
-487800 -127.049434664256 28.8624104273417
-488700 -127.17095326836 28.8485224334325
-489600 -127.292400902106 28.8346619507671
-490500 -127.413775301341 28.8208291586601
-491400 -127.535072881328 28.8070243854974
-492300 -127.656288540566 28.7932481299812
-493200 -127.777415746704 28.779501050206
-494100 -127.898446848217 28.7657839272572
-495000 -128.019373510292 28.7520976150642
-495900 -128.140187177369 28.738442987662
-496800 -128.260879492582 28.7248208917495
-497700 -128.38144263592 28.7112321087965
-498600 -128.501869568277 28.6976773280488
-499500 -128.622154185118 28.6841571299075
-500400 -128.742291392368 28.6706719781677
-501300 -128.86227712053 28.6572222192402
-502200 -128.982108293016 28.6438080864989
-503100 -129.101782762951 28.6304297081136
-504000 -129.221299230198 28.6170871170246
-504900 -129.340657150518 28.6037802617098
-505800 -129.459856627496 28.5905090187809
-506700 -129.578898332517 28.5772732023603
-507600 -129.697783402589 28.5640725758384
-508500 -129.816513364889 28.550906860575
-509400 -129.935090119034 28.5377757381404
-510300 -130.053516102593 28.524678832289
-511200 -130.171794745133 28.5116156592275
-512100 -130.28993112555 28.4985855558749
-513000 -130.407932570496 28.4855876151736
-513900 -130.525808945941 28.472620655648
-514800 -130.643572546963 28.4596832353103
-515700 -130.761237643025 28.4467737032272
-516600 -130.878819813813 28.4338902736136
-517500 -130.996335217164 28.4210311067669
-518400 -131.113799898073 28.4081943848817
-519300 -131.23122920471 28.395378375598
-520200 -131.348637339982 28.38258148029
-521100 -131.466037050758 28.369802267002
-522000 -131.583439441245 28.3570394896396
-522900 -131.700853889685 28.344292095802
-523800 -131.818288045641 28.3315592258184
-524700 -131.935747886525 28.3188402053818
-525600 -132.053237814859 28.3061345338352
-526500 -132.170760786992 28.2934418691529
-527400 -132.288318427743 28.2807620145543
-528300 -132.405911203048 28.2680948989746
-529200 -132.523538543542 28.2554405629634
-530100 -132.641198981907 28.2427991432112
-531000 -132.75889028318 28.2301708579505
-531900 -132.876609571068 28.2175559928983
-532800 -132.994353453613 28.2049548873749
-533700 -133.112118142313 28.19236792123
-534600 -133.229899552397 28.1797955038801
-535500 -133.347693375169 28.1672380664068
-536400 -133.465495122236 28.1546960567072
-537300 -133.583300148624 28.1421699369265
-538200 -133.701103664198 28.1296601821502
-539100 -133.81890074153 28.1171672794846
-540000 -133.936686325513 28.1046917269588
-540900 -134.054455247188 28.0922340319901
-541800 -134.172202242185 28.0797947093751
-542700 -134.289921972938 28.0673742788978
-543600 -134.407609053301 28.0549732627037
-544500 -134.525258074105 28.0425921825964
-545400 -134.642863628365 28.0302315573903
-546300 -134.760420335149 28.0178919004269
-547200 -134.877922861383 28.0055737173237
-548100 -134.995365945961 27.9932775035026
-549000 -135.112744397379 27.9810037445014
-549900 -135.23005313625 27.9687529116016
-550800 -135.347287187551 27.9565254627282
-551700 -135.464441688396 27.944321841726
-552600 -135.581511846151 27.9321424828067
-553500 -135.698492760418 27.9199878290953
-554400 -135.81537904866 27.9078583714017
-555300 -135.93216437107 27.8957546971333
-556200 -136.048841708623 27.8836774609275
-557100 -136.165401332648 27.8716275940049
-558000 -136.281832828837 27.8596060935922
-558900 -136.398125002838 27.8476140322461
-559800 -136.514266295366 27.8356525146662
-560700 -136.63024526227 27.8237226281566
-561600 -136.746050982775 27.8118254008331
-562500 -136.861673366423 27.7999617705318
-563400 -136.977103354871 27.7881325647154
-564300 -137.09233302979 27.7763384901341
-565200 -137.207355644751 27.7645801303261
-566100 -137.322165600271 27.7528579489339
-567000 -137.436758379516 27.7411722970038
-567900 -137.551130459223 27.7295234227517
-568800 -137.665279207292 27.7179114826081
-569700 -137.7792001031 27.7063368240352
-570600 -137.892894626058 27.6947991843351
-571500 -138.006362269037 27.683298503345
-572400 -138.119602918563 27.6718346814042
-573300 -138.23261685118 27.660407579959
-574200 -138.345404599324 27.6490170353335
-575100 -138.457966662389 27.6376628880067
-576000 -138.570302979803 27.6263450356427
-576900 -138.682412271205 27.6150634991074
-577800 -138.794291497087 27.6038184759186
-578700 -138.905935647633 27.5926103603901
-579600 -139.017337906545 27.581439726061
-580500 -139.128490100718 27.5703072796423
-581400 -139.239383293436 27.5592138009439
-582300 -139.350008391605 27.5481600818269
-583200 -139.460356679366 27.5371468729277
-584100 -139.570420234016 27.52617484248
-585000 -139.680192213328 27.5152445482208
-585900 -139.789667023825 27.5043564213188
-586800 -139.898840389711 27.4935107602755
-587700 -140.007709345208 27.4827077324581
-588600 -140.116272172023 27.4719473810523
-589500 -140.224528300665 27.4612296355398
-590400 -140.332478190614 27.4505543241894
-591300 -140.440123202072 27.4399211872899
-592200 -140.547465460031 27.4293298910472
-593100 -140.654507735191 27.418780039725
-594000 -140.761253320543 27.4082711881277
-594900 -140.86770592962 27.3978028518673
-595800 -140.97386964376 27.3873745127495
-596700 -141.079755160154 27.3769850062302
-597600 -141.18536164985 27.366634302113
-598500 -141.290695238093 27.3563216899937
-599400 -141.395763589077 27.3460463122836
-600300 -141.500575750798 27.3358071801455
-601200 -141.605141940543 27.3256031951108
-602100 -141.709473151119 27.3154331880173
-603000 -141.813580682291 27.30529596497
-603900 -141.917475686979 27.2951903515702
-604800 -142.021168788852 27.2851152299254

+ 0 - 674
connector-fetch-drutes/src/test/resources/predictions/4151559_20220301/710010002.predict

@@ -1,674 +0,0 @@
-# time [s]     hpress [kPa]    sat deg [%]  
-0 -181.2 24.1129915711394
-900 -181.199999987291 24.1129915720001
-1800 -181.199978884801 24.1129930011504
-2700 -181.199651961429 24.1130151418217
-3600 -181.198480430554 24.1130944834706
-4500 -181.196213889521 24.1132479865846
-5400 -181.192936521422 24.1134699537316
-6300 -181.1888718934 24.1137452481189
-7200 -181.184255929365 24.1140578952321
-8100 -181.179290198849 24.1143942458394
-9000 -181.174133119558 24.1147435718293
-9900 -181.168904752524 24.1150977417392
-10800 -181.163694857313 24.1154506754666
-11700 -181.158569849336 24.1157978733948
-12600 -181.153579012514 24.1161359958119
-13500 -181.148758717773 24.1164625773737
-14400 -181.144135458961 24.1167758216125
-15300 -181.139728066517 24.1170744511026
-16200 -181.13554934805 24.1173575964141
-17100 -181.131607318235 24.1176247128621
-18000 -181.127906127474 24.1178755176421
-18900 -181.124446774142 24.1181099416122
-19800 -181.121227662881 24.1183280914917
-20700 -181.118245042503 24.1185302202079
-21600 -181.115493330069 24.1187167049472
-22500 -181.112965360187 24.1188880302672
-23400 -181.110652613319 24.1190447726269
-24300 -181.10854545062 24.1191875844695
-25200 -181.106633363549 24.1193171773005
-26100 -181.104905224141 24.1194343047188
-27000 -181.103349514257 24.1195397468701
-27900 -181.101954508995 24.1196342980057
-28800 -181.100708381736 24.119718759353
-29700 -181.099599236642 24.1197939369028
-30600 -181.098615098304 24.1198606421018
-31500 -181.097743827978 24.1199196975217
-32400 -181.096972917706 24.1199719508066
-33300 -181.096289203699 24.1200182940935
-34200 -181.095678602601 24.1200596818841
-35100 -181.095125893741 24.1200971457992
-36000 -181.094614503599 24.1201318091851
-36900 -181.094126277918 24.1201649025578
-37800 -181.093641258075 24.1201977787607
-38700 -181.093137447188 24.1202319288194
-39600 -181.092590505763 24.1202690025762
-40500 -181.091973343078 24.1203108363951
-41400 -181.091255588063 24.1203594890413
-42300 -181.090402944327 24.1204172854209
-43200 -181.089376407445 24.1204868696684
-44100 -181.088131309415 24.1205712699644
-45000 -181.086616117263 24.1206739800412
-45900 -181.084770918557 24.1207990619414
-46800 -181.082525565705 24.120951271952
-47700 -181.079797490843 24.1211362089323
-48600 -181.076489252569 24.1213604809111
-49500 -181.072485837009 24.1216318884666
-50400 -181.067651776104 24.1219596206754
-51300 -181.061828102915 24.122354462357
-52200 -181.054829223943 24.1228290072777
-53100 -181.046439718613 24.1233978767407
-54000 -181.036411116612 24.1240779402696
-54900 -181.024458741776 24.1248885325547
-55800 -181.010258607911 24.1258516678755
-56700 -180.993444365518 24.1269922523464
-57600 -180.973604217002 24.1283382999117
-58500 -180.950278124581 24.1299211304959
-59400 -180.922955505703 24.1317755375436
-60300 -180.891073420539 24.13393992514
-61200 -180.854014993533 24.1364564327955
-62100 -180.811108094066 24.1393710468483
-63000 -180.761625938536 24.1427335862264
-63900 -180.704788366213 24.1465976478385
-64800 -180.639763980648 24.1510204991461
-65700 -180.565671133733 24.1560630561436
-66600 -180.481578432193 24.1617899015158
-67500 -180.386513933113 24.1682687190467
-68400 -180.279471596042 24.1755699217382
-69300 -180.15941690339 24.183766344044
-70200 -180.025290712092 24.192933062653
-71100 -179.876001780768 24.2031480010175
-72000 -179.710450251964 24.2144904264848
-72900 -179.527575154966 24.2270377961488
-73800 -179.326302157917 24.2408694406962
-74700 -179.105615271936 24.256061749362
-75600 -178.864471211178 24.2726941702834
-76500 -178.601826202087 24.2908475060684
-77400 -178.316818245925 24.3105914160042
-78300 -178.008749589738 24.3319856263518
-79200 -177.676751774933 24.3551032645585
-80100 -177.32038919738 24.3799889473749
-81000 -176.938786239744 24.4067196925719
-81900 -176.531284887384 24.4353592455233
-82800 -176.097454836932 24.4659572601655
-83700 -175.636982145096 24.4985570321374
-84600 -175.149443394194 24.533211529886
-85500 -174.634597834992 24.569962767016
-86400 -174.092487263637 24.6088344510632
-87300 -173.523052383772 24.649859295968
-88200 -172.92660162467 24.6930452287146
-89100 -172.303422346568 24.7384031226158
-90000 -171.653898302158 24.7859382255016
-90900 -170.978575422315 24.8356451087578
-91800 -170.278162775079 24.8875072256781
-92700 -169.553535700773 24.9414962562922
-93600 -168.80565494199 24.9975777135751
-94500 -168.036026477179 25.0556757915701
-95400 -167.245831420875 25.1157381661863
-96300 -166.435276808515 25.1777865367007
-97200 -165.606134686409 25.2417227220678
-98100 -164.759915884671 25.3074664950475
-99000 -163.898057080333 25.3749413952746
-99900 -163.022037235847 25.4440655125179
-100800 -162.13335792459 25.5147527123711
-101700 -161.233533317583 25.5869131532056
-102600 -160.324080174582 25.660453840772
-103500 -159.406839298552 25.7352520793672
-104400 -158.483736104555 25.8111738974594
-105300 -157.554333981174 25.8882773464247
-106200 -156.621097368705 25.9663785303402
-107100 -155.685428763526 26.0453769096685
-108000 -154.748645020934 26.1251754889776
-108900 -153.812797152692 26.2056102071333
-109800 -152.878538883966 26.2866326129555
-110700 -151.945642355198 26.3682698362907
-111600 -151.016296531546 26.4503354736117
-112500 -150.091512303538 26.5327416217439
-113400 -149.172233817576 26.6154031136943
-114300 -148.259338442168 26.6982377171731
-115200 -147.353637833495 26.7811662461059
-116100 -146.455878634172 26.8641127137922
-117000 -145.566743798744 26.9470044356639
-117900 -144.686853803258 27.0297721470116
-118800 -143.816768483992 27.1123500641693
-119700 -142.956988776508 27.1946759543977
-120600 -142.107958882405 27.2766911627584
-121500 -141.2700686278 27.3583406154534
-122400 -140.443656339607 27.4395727652736
-123300 -139.629011802882 27.520339518599
-124200 -138.826379368549 27.6005961356355
-125100 -138.035961178273 27.6803011055755
-126000 -137.257920499976 27.7594159959761
-126900 -136.492385083972 27.8379052843863
-127800 -135.739450197431 27.915736207158
-128700 -134.99918168656 27.9928785903902
-129600 -134.271618447189 28.0693047278559
-130500 -133.55677473832 28.1449892629348
-131400 -132.854747895835 28.2198977679203
-132300 -132.16569345097 28.2939891061453
-133200 -131.489196871549 28.3672835375824
-134100 -130.825200434939 28.4397635038557
-135000 -130.173629808626 28.5114133999192
-135900 -129.534395668678 28.582219473703
-136800 -128.907395304527 28.6521697181642
-137700 -128.292514183472 28.721253758848
-138600 -127.689627432303 28.7894627420788
-139500 -127.098601202494 28.8567892281562
-140400 -126.519293897477 28.9232270927603
-141300 -125.951557266245 28.9887714369186
-142200 -125.3952373791 29.0534185045139
-143100 -124.850175497431 29.1171656066636
-144000 -124.316208840944 29.1800110532242
-144900 -123.793171272136 29.2419540897004
-145800 -123.280893932335 29.3029948359767
-146700 -122.779205853207 29.3631342243341
-147600 -122.287934546705 29.422373936613
-148500 -121.806906569104 29.4807163412538
-149400 -121.335948062745 29.5381644300006
-150300 -120.874885303615 29.5947217510157
-151200 -120.423545266422 29.6503923370364
-152100 -119.981756156056 29.7051806349567
-153000 -119.549347815946 29.7590914482857
-153900 -119.126151950831 29.8121299010042
-154800 -118.712002172139 29.8643014227006
-155700 -118.306733935097 29.9156117470583
-156600 -117.910184453141 29.9660669132736
-157500 -117.522192648031 30.0156732630252
-158400 -117.142599156405 30.064437430174
-159300 -116.771246383956 30.1123663241065
-160200 -116.407978572339 30.1594671110767
-161100 -116.052641816723 30.2057472016279
-162000 -115.705084003483 30.2512142483161
-162900 -115.365154719884 30.2958761472447
-163800 -115.032705221481 30.3397410321876
-164700 -114.707588489645 30.3828172567765
-165600 -114.389659356074 30.4251133675089
-166500 -114.078774671402 30.4666380704156
-167400 -113.774793512577 30.5074001919801
-168300 -113.477577420641 30.5474086353436
-169200 -113.186990643641 30.5866723351563
-170100 -112.90290035115 30.625200215668
-171000 -112.62517679039 30.6630011562974
-171900 -112.353693367854 30.7000839671287
-172800 -112.088326657018 30.7364573745324
-173700 -111.828956350148 30.7721300146946
-174600 -111.575465183568 30.80711043118
-175500 -111.327814190143 30.8413966273008
-176400 -111.085853025959 30.8750022741494
-177300 -110.849441627174 30.9079399750514
-178200 -110.618473710615 30.9402179464902
-179100 -110.39284577227 30.971844292233
-180000 -110.172457005562 31.0028270041329
-180900 -109.957209236056 31.0331739610336
-181800 -109.747006718479 31.0628929475419
-182700 -109.541756172199 31.0919916396334
-183600 -109.341366564841 31.1204776262241
-184500 -109.145749028853 31.1483584124529
-185400 -108.954816760509 31.1756414258419
-186300 -108.76848493558 31.2023340204538
-187200 -108.586670649525 31.2284434778711
-188100 -108.409292872789 31.2539770062765
-189000 -108.236272399687 31.278941740709
-189900 -108.067531772933 31.3033447470969
-190800 -107.902917802425 31.3272042583886
-191700 -107.742437255094 31.3505155162789
-192600 -107.585964129538 31.3732931739828
-193500 -107.433475531843 31.3955370539057
-194400 -107.284901437209 31.4172539716791
-195300 -107.140286824285 31.4384340342598
-196200 -106.999337368167 31.4591172050749
-197100 -106.862099793345 31.4792936543863
-198000 -106.728509024381 31.498970046186
-198900 -106.598618714844 31.5181356427851
-199800 -106.47225255777 31.5368137349251
-200700 -106.349316825703 31.5550156172639
-201600 -106.229687592127 31.5727572177694
-202500 -106.113513896508 31.590014059607
-203400 -106.000624957947 31.6068092016521
-204300 -105.890960217959 31.6231494799019
-205200 -105.784459515892 31.6390417785399
-206100 -105.681073140687 31.6544915232778
-207000 -105.580750156509 31.6695044162363
-207900 -105.48343420071 31.6840870647131
-208800 -105.389073452273 31.6982454875681
-209700 -105.297504008344 31.7120026405046
-210600 -105.208785898068 31.725347941174
-211500 -105.122873796881 31.7382866827015
-212400 -105.039719875034 31.7508246118967
-213300 -104.959388409227 31.7629506191568
-214200 -104.881725547233 31.7746865756633
-215100 -104.806618550904 31.78604827095
-216000 -104.734040067315 31.7970386668971
-216900 -104.664003972552 31.8076545261269
-217800 -104.596453871757 31.8179033064632
-218700 -104.531356984333 31.8277889461104
-219600 -104.468674099998 31.8373164140773
-220500 -104.408367049265 31.8464905759996
-221400 -104.350398658857 31.8553161986427
-222300 -104.294732697677 31.8637979559554
-223200 -104.241333814091 31.8719404365633
-224100 -104.190271850172 31.8797322183428
-225000 -104.141336006393 31.8872047498038
-225900 -104.094533998551 31.894356195488
-226800 -104.049865256264 31.9011860117613
-227700 -104.007297985379 31.9076984612958
-228600 -103.966800990491 31.9138977538761
-229500 -103.928343658317 31.9197880474519
-230400 -103.891895945149 31.925373448618
-231300 -103.857428366628 31.9306580127875
-232200 -103.82491199066 31.9356457439315
-233100 -103.794318434384 31.9403405937395
-234000 -103.765619864574 31.9447464602971
-234900 -103.738788999338 31.948867186602
-235800 -103.713799108784 31.9527065592801
-236700 -103.690624012898 31.9562683077692
-237600 -103.669238075913 31.9595561040812
-238500 -103.649616197221 31.9625735631372
-239400 -103.631733799316 31.9653242435985
-240300 -103.615566813506 31.9678116490804
-241200 -103.601091664175 31.9700392296279
-242100 -103.588285252305 31.9720103833415
-243000 -103.577124938775 31.9737284580738
-243900 -103.567588527849 31.9751967531303
-244800 -103.559654251246 31.9764185209135
-245700 -103.553391070034 31.977383058916
-246600 -103.548689817928 31.9781071132282
-247500 -103.545527124538 31.9785942361137
-248400 -103.543882796486 31.9788475065397
-249300 -103.543737006131 31.9788699624279
-250200 -103.545070321119 31.9786645954541
-251100 -103.547863846234 31.9782343285794
-252000 -103.552099526545 31.9775819687695
-252900 -103.557760533414 31.9767101470084
-253800 -103.564831563734 31.9756212717507
-254700 -103.573298921529 31.9743175159761
-255600 -103.583150359455 31.9728008412882
-256500 -103.594374744347 31.9710730491483
-257400 -103.60696164189 31.9691358445655
-258300 -103.620900904283 31.9669908993025
-259200 -103.636182316001 31.964639906096
-260100 -103.652795323774 31.96208461986
-261000 -103.670728855339 31.9593268851772
-261900 -103.689971218454 31.9563686513949
-262800 -103.710510065524 31.9532119775915
-263700 -103.732332407694 31.949859029909
-264600 -103.755424663322 31.9463120735876
-265500 -103.779772728164 31.9425734616577
-266400 -103.805362057278 31.9386456218368
-267300 -103.832177770305 31.9345310398517
-268200 -103.860204659702 31.9302322576686
-269100 -103.889427387109 31.9257518428785
-270000 -103.919830479639 31.9210923888093
-270900 -103.95139841413 31.9162565011647
-271800 -103.984115664539 31.9112467903407
-272700 -104.017966713108 31.9060658693111
-273600 -104.05293601428 31.9007163587491
-274500 -104.089007933162 31.8952008960296
-275400 -104.126166702131 31.8895221414354
-276300 -104.164396427487 31.8836827767032
-277200 -104.203681150136 31.8776854953281
-278100 -104.244004943276 31.8715329872581
-279000 -104.285352023529 31.8652279215938
-279900 -104.327706855776 31.8587729303146
-280800 -104.371054239572 31.8521705948792
-281700 -104.415379372154 31.8454234364488
-282600 -104.460667888169 31.8385339097043
-283500 -104.50690587905 31.8315043997963
-284400 -104.554079896159 31.8243372217906
-285300 -104.602176941925 31.8170346219557
-286200 -104.651184452768 31.8095987803086
-287100 -104.701090276904 31.8020318139427
-288000 -104.751882649421 31.7943357807709
-288900 -104.803550182853 31.7865126809215
-289800 -104.856081775369 31.7785644706025
-290700 -104.90946668566 31.7704930507251
-291600 -104.963694443114 31.7623002804607
-292500 -105.018754840038 31.7539879783711
-293400 -105.074637886554 31.7455579291682
-294300 -105.131333695784 31.7370119009558
-295200 -105.188832263593 31.7283516782745
-296100 -105.247123188409 31.7195791040033
-297000 -105.306195440501 31.710696113626
-297900 -105.366037270913 31.7017047483427
-298800 -105.426636281658 31.692607143907
-299700 -105.487979620135 31.6834055008765
-300600 -105.550054237055 31.6741020454906
-301500 -105.612847151772 31.6646989896346
-302400 -105.676345686443 31.6551984956739
-303300 -105.740537649135 31.6456026491071
-304200 -105.805411460533 31.6359134397949
-305100 -105.870956228048 31.6261327511502
-306000 -105.937161775748 31.6162623559849
-306900 -106.004018640053 31.6063039174947
-307800 -106.071518040768 31.5962589939242
-308700 -106.139651835758 31.5861290456527
-309600 -106.208381931772 31.5759199770598
-310500 -106.277760522032 31.5656242807825
-311400 -106.347754165529 31.555247170229
-312300 -106.418354870033 31.544790073961
-313200 -106.489556817874 31.5342540958275
-314100 -106.561354488201 31.5236402938998
-315000 -106.633742593164 31.5129496900357
-315900 -106.706715967457 31.502183286272
-316800 -106.780269382315 31.4913420922522
-317700 -106.854397311726 31.4804271595245
-318600 -106.929093727864 31.4694396113352
-319500 -107.004351994834 31.4583806577965
-320400 -107.080164883454 31.447251593193
-321300 -107.156524686432 31.4360537785819
-322200 -107.233423392745 31.4247886158237
-323100 -107.310852880025 31.4134575191355
-324000 -107.388805094297 31.402061888669
-324900 -107.467272199224 31.3906030887044
-325800 -107.546246687754 31.3790824314715
-326700 -107.625721456315 31.3675011665309
-327600 -107.705689845901 31.3558604750494
-328500 -107.786145656175 31.3441614680412
-329400 -107.867083139028 31.3324051876097
-330300 -107.948463082992 31.3205975254715
-331200 -108.030295308134 31.3087372465479
-332100 -108.112645781734 31.2968149982623
-333000 -108.195460508876 31.2848388094671
-333900 -108.278733959944 31.2728096778649
-334800 -108.362462443387 31.2607283329967
-335700 -108.44664248805 31.2485954707263
-336600 -108.53127086955 31.2364117495953
-337500 -108.616344795422 31.2241777643877
-338400 -108.701862308539 31.2118939885446
-339300 -108.787822788784 31.1995607028919
-340200 -108.874227319058 31.1871779443022
-341100 -108.961078749495 31.1747454979084
-342000 -109.048381445837 31.1622629345251
-342900 -109.136140819289 31.1497296790253
-343800 -109.22436276798 31.1371450908563
-344700 -109.31305313872 31.1245085411148
-345600 -109.402217276507 31.1118194766007
-346500 -109.49185969071 31.0990774668392
-347400 -109.581983839473 31.0862822339851
-348300 -109.672592018206 31.0734336677497
-349200 -109.763685331316 31.0605318284197
-350100 -109.855263725374 31.0475769411542
-351000 -109.947326064024 31.0345693844091
-351900 -110.03987022839 31.0215096748337
-352800 -110.132893230468 31.0083984504353
-353700 -110.226391334038 30.9952364527925
-354600 -110.320360154363 30.9820245123731
-355500 -110.414794788713 30.9687635296213
-356400 -110.509689900599 30.955454462668
-357300 -110.605039816526 30.9420983133746
-358200 -110.70083863693 30.9286961114918
-359100 -110.797080423173 30.9152488883156
-360000 -110.893759494986 30.9017576351384
-360900 -110.990870773201 30.8882232557081
-361800 -111.088410038035 30.8746465308031
-362700 -111.186374010115 30.8610281077139
-363600 -111.284760246659 30.847368515462
-364500 -111.383566908373 30.8336681978305
-365400 -111.482792471415 30.8199275537499
-366300 -111.582435446632 30.8061469763731
-367200 -111.682494144699 30.7923268855121
-368100 -111.782966503789 30.7784677512029
-369000 -111.883849980769 30.7645701083356
-369900 -111.985141498109 30.7506345635065
-370800 -112.08683743493 30.736661795748
-371700 -112.188933650179 30.7226525528421
-372600 -112.29142552715 30.7086076447339
-373500 -112.394308030529 30.6945279352783
-374400 -112.497575769255 30.6804143332546
-375300 -112.601223065665 30.666267782591
-376200 -112.70524399557 30.6520892566242
-377100 -112.809632477413 30.6378797457264
-378000 -112.914382302183 30.623640253079
-378900 -113.019487179823 30.6093717882412
-379800 -113.124940742857 30.5950753665673
-380700 -113.230736445077 30.5807520228261
-381600 -113.336867307832 30.5664028452999
-382500 -113.443325579176 30.5520290213612
-383400 -113.55010245737 30.5376318740008
-384300 -113.657188001636 30.5232128728541
-385200 -113.764571257973 30.5087736162289
-386100 -113.87224054833 30.494315791353
-387000 -113.980183840227 30.4798411241645
-387900 -114.088389121214 30.465351328865
-388800 -114.19684472686 30.4508480641026
-389700 -114.305539596458 30.4363328991671
-390600 -114.414463450192 30.4218072909373
-391500 -114.523606893648 30.4072725706967
-392400 -114.632939244933 30.3927328915843
-393300 -114.742462574227 30.3781880374375
-394200 -114.852182939357 30.3636372649867
-395100 -114.962094522968 30.3490814068495
-396000 -115.072192263891 30.3345211912644
-396900 -115.182504605167 30.3199529209842
-397800 -115.292995852739 30.3053813720153
-398700 -115.403661711592 30.2908071617167
-399600 -115.514499351379 30.276230711651
-400500 -115.625506313924 30.2616523923168
-401400 -115.736680428333 30.2470725346194
-402300 -115.848019668635 30.2324914487683
-403200 -115.959521920761 30.2179094548654
-404100 -116.071184697436 30.2033269200355
-405000 -116.18300489766 30.1887442894323
-405900 -116.294978692675 30.1741621005221
-406800 -116.407101560354 30.1595809779554
-407700 -116.519368437337 30.1450016131987
-408600 -116.631773935672 30.1304247359754
-409500 -116.74431257346 30.1158510841323
-410400 -116.856978983678 30.1012813765806
-411300 -116.969768081704 30.0867162917934
-412200 -117.082675185099 30.0721564526375
-413100 -117.195696087684 30.0576024172178
-414000 -117.308827094407 30.0430546748376
-414900 -117.422065025224 30.028513645973
-415800 -117.535407196156 30.0139796851734
-416700 -117.648851384789 29.9994530859315
-417600 -117.762395786165 29.9849340867411
-418500 -117.876038968471 29.9704228771317
-419400 -117.989779803569 29.9559196068607
-420300 -118.103617445765 29.9414243888896
-421200 -118.217551266255 29.92693730797
-422100 -118.331580822847 29.9124584246808
-423000 -118.445705889246 29.8979877718863
-423900 -118.559926679783 29.883525326494
-424800 -118.674244366354 29.8690709445322
-425700 -118.788661771277 29.854624274577
-426600 -118.903183949622 29.8401846858416
-427500 -119.0178184186 29.8257512412819
-428400 -119.132574967159 29.8113227236843
-429300 -119.247465133014 29.7968977032685
-430200 -119.362501501025 29.7824746271161
-431100 -119.477696969737 29.7680519118366
-432000 -119.593064090526 29.7536280263875
-432900 -119.708614535908 29.7392015580841
-433800 -119.82435871517 29.7247712596969
-434700 -119.940305530431 29.710336078676
-435600 -120.056462252963 29.6958951711816
-436500 -120.172834494781 29.6814479041688
-437400 -120.289426250746 29.6669938487089
-438300 -120.406239989448 29.652532767324
-439200 -120.523276774975 29.6380645976028
-440100 -120.640536410514 29.6235894332537
-441000 -120.758017564729 29.6091075074312
-441900 -120.875717945273 29.5946191704001
-442800 -120.993634418923 29.5801248739385
-443700 -121.111763148263 29.5656251538387
-444600 -121.230099724868 29.5511206129816
-445500 -121.348639327939 29.5366119014404
-446400 -121.467376923232 29.5220996918273
-447300 -121.586307473789 29.5075846534141
-448200 -121.705426105179 29.4930674320112
-449100 -121.824728184285 29.4785486405344
-450000 -121.944209309085 29.4640288604629
-450900 -122.063865235409 29.4495086509284
-451800 -122.183691775266 29.4349885611708
-452700 -122.303684695629 29.4204691428317
-453600 -122.423839635692 29.405950959914
-454500 -122.544152050338 29.3914345954937
-455400 -122.664617180343 29.376920655156
-456300 -122.785230045728 29.3624097676187
-457200 -122.905985456951 29.347902583207
-458100 -123.026878038481 29.3333997708572
-459000 -123.147902259909 29.3189020142431
-459900 -123.269052470741 29.3044100074968
-460800 -123.390322935956 29.289924450872
-461700 -123.511707877534 29.2754460457373
-462600 -123.633201477678 29.2609754941682
-463500 -123.754797950322 29.2465134904295
-464400 -123.876491537485 29.2320607214507
-465300 -123.998276532973 29.2176178640552
-466200 -124.120147260803 29.2031855875748
-467100 -124.242097942229 29.1887645696037
-468000 -124.364122403866 29.1743555303687
-468900 -124.486213704359 29.1599592764019
-469800 -124.608363845315 29.145576733923
-470700 -124.730548987936 29.1312106848912
-471600 -124.852772155185 29.1168607437481
-472500 -124.975024140103 29.102527959843
-473400 -125.097293881925 29.0882135933074
-474300 -125.21957042834 29.0739188843027
-475200 -125.341843263424 29.0596450148971
-476100 -125.464102554618 29.0453930807005
-477000 -125.586339315607 29.031164072526
-477900 -125.708545493959 29.0169588669511
-478800 -125.830713997782 29.0027782240316
-479700 -125.952838676738 28.9886227903266
-480600 -126.074914271405 28.9744931055566
-481500 -126.196936342662 28.9603896115155
-482400 -126.3189011902 28.9463126621608
-483300 -126.44081904372 28.9322610049556
-484200 -126.562674541102 28.9182363376423
-485100 -126.684465276067 28.9042388603156
-486000 -126.806189665732 28.8902686773844
-486900 -126.927846465318 28.8763258538254
-487800 -127.049434664256 28.8624104273417
-488700 -127.17095326836 28.8485224334325
-489600 -127.292400902106 28.8346619507671
-490500 -127.413775301341 28.8208291586601
-491400 -127.535072881328 28.8070243854974
-492300 -127.656288540566 28.7932481299812
-493200 -127.777415746704 28.779501050206
-494100 -127.898446848217 28.7657839272572
-495000 -128.019373510292 28.7520976150642
-495900 -128.140187177369 28.738442987662
-496800 -128.260879492582 28.7248208917495
-497700 -128.38144263592 28.7112321087965
-498600 -128.501869568277 28.6976773280488
-499500 -128.622154185118 28.6841571299075
-500400 -128.742291392368 28.6706719781677
-501300 -128.86227712053 28.6572222192402
-502200 -128.982108293016 28.6438080864989
-503100 -129.101782762951 28.6304297081136
-504000 -129.221299230198 28.6170871170246
-504900 -129.340657150518 28.6037802617098
-505800 -129.459856627496 28.5905090187809
-506700 -129.578898332517 28.5772732023603
-507600 -129.697783402589 28.5640725758384
-508500 -129.816513364889 28.550906860575
-509400 -129.935090119034 28.5377757381404
-510300 -130.053516102593 28.524678832289
-511200 -130.171794745133 28.5116156592275
-512100 -130.28993112555 28.4985855558749
-513000 -130.407932570496 28.4855876151736
-513900 -130.525808945941 28.472620655648
-514800 -130.643572546963 28.4596832353103
-515700 -130.761237643025 28.4467737032272
-516600 -130.878819813813 28.4338902736136
-517500 -130.996335217164 28.4210311067669
-518400 -131.113799898073 28.4081943848817
-519300 -131.23122920471 28.395378375598
-520200 -131.348637339982 28.38258148029
-521100 -131.466037050758 28.369802267002
-522000 -131.583439441245 28.3570394896396
-522900 -131.700853889685 28.344292095802
-523800 -131.818288045641 28.3315592258184
-524700 -131.935747886525 28.3188402053818
-525600 -132.053237814859 28.3061345338352
-526500 -132.170760786992 28.2934418691529
-527400 -132.288318427743 28.2807620145543
-528300 -132.405911203048 28.2680948989746
-529200 -132.523538543542 28.2554405629634
-530100 -132.641198981907 28.2427991432112
-531000 -132.75889028318 28.2301708579505
-531900 -132.876609571068 28.2175559928983
-532800 -132.994353453613 28.2049548873749
-533700 -133.112118142313 28.19236792123
-534600 -133.229899552397 28.1797955038801
-535500 -133.347693375169 28.1672380664068
-536400 -133.465495122236 28.1546960567072
-537300 -133.583300148624 28.1421699369265
-538200 -133.701103664198 28.1296601821502
-539100 -133.81890074153 28.1171672794846
-540000 -133.936686325513 28.1046917269588
-540900 -134.054455247188 28.0922340319901
-541800 -134.172202242185 28.0797947093751
-542700 -134.289921972938 28.0673742788978
-543600 -134.407609053301 28.0549732627037
-544500 -134.525258074105 28.0425921825964
-545400 -134.642863628365 28.0302315573903
-546300 -134.760420335149 28.0178919004269
-547200 -134.877922861383 28.0055737173237
-548100 -134.995365945961 27.9932775035026
-549000 -135.112744397379 27.9810037445014
-549900 -135.23005313625 27.9687529116016
-550800 -135.347287187551 27.9565254627282
-551700 -135.464441688396 27.944321841726
-552600 -135.581511846151 27.9321424828067
-553500 -135.698492760418 27.9199878290953
-554400 -135.81537904866 27.9078583714017
-555300 -135.93216437107 27.8957546971333
-556200 -136.048841708623 27.8836774609275
-557100 -136.165401332648 27.8716275940049
-558000 -136.281832828837 27.8596060935922
-558900 -136.398125002838 27.8476140322461
-559800 -136.514266295366 27.8356525146662
-560700 -136.63024526227 27.8237226281566
-561600 -136.746050982775 27.8118254008331
-562500 -136.861673366423 27.7999617705318
-563400 -136.977103354871 27.7881325647154
-564300 -137.09233302979 27.7763384901341
-565200 -137.207355644751 27.7645801303261
-566100 -137.322165600271 27.7528579489339
-567000 -137.436758379516 27.7411722970038
-567900 -137.551130459223 27.7295234227517
-568800 -137.665279207292 27.7179114826081
-569700 -137.7792001031 27.7063368240352
-570600 -137.892894626058 27.6947991843351
-571500 -138.006362269037 27.683298503345
-572400 -138.119602918563 27.6718346814042
-573300 -138.23261685118 27.660407579959
-574200 -138.345404599324 27.6490170353335
-575100 -138.457966662389 27.6376628880067
-576000 -138.570302979803 27.6263450356427
-576900 -138.682412271205 27.6150634991074
-577800 -138.794291497087 27.6038184759186
-578700 -138.905935647633 27.5926103603901
-579600 -139.017337906545 27.581439726061
-580500 -139.128490100718 27.5703072796423
-581400 -139.239383293436 27.5592138009439
-582300 -139.350008391605 27.5481600818269
-583200 -139.460356679366 27.5371468729277
-584100 -139.570420234016 27.52617484248
-585000 -139.680192213328 27.5152445482208
-585900 -139.789667023825 27.5043564213188
-586800 -139.898840389711 27.4935107602755
-587700 -140.007709345208 27.4827077324581
-588600 -140.116272172023 27.4719473810523
-589500 -140.224528300665 27.4612296355398
-590400 -140.332478190614 27.4505543241894
-591300 -140.440123202072 27.4399211872899
-592200 -140.547465460031 27.4293298910472
-593100 -140.654507735191 27.418780039725
-594000 -140.761253320543 27.4082711881277
-594900 -140.86770592962 27.3978028518673
-595800 -140.97386964376 27.3873745127495
-596700 -141.079755160154 27.3769850062302
-597600 -141.18536164985 27.366634302113
-598500 -141.290695238093 27.3563216899937
-599400 -141.395763589077 27.3460463122836
-600300 -141.500575750798 27.3358071801455
-601200 -141.605141940543 27.3256031951108
-602100 -141.709473151119 27.3154331880173
-603000 -141.813580682291 27.30529596497
-603900 -141.917475686979 27.2951903515702
-604800 -142.021168788852 27.2851152299254

+ 0 - 4
connector-fetch-drutes/src/test/resources/predictions/4151559_20220301/predict.times

@@ -1,4 +0,0 @@
-# sensor data from:
-2021-10-22 15:00:00+02
-# meteo data from
-2021-11-02 16:00:00

+ 0 - 5
connector-fetch-fieldclimate/pom.xml

@@ -20,11 +20,6 @@
             <artifactId>connector-fetch-api</artifactId>
             <version>${project.parent.version}</version>
         </dependency>
-        <dependency>
-            <groupId>cz.senslog</groupId>
-            <artifactId>common</artifactId>
-            <version>1.0.0</version>
-        </dependency>
     </dependencies>
 
     <build>

+ 2 - 2
connector-fetch-fieldclimate/src/main/java/cz/senslog/connector/fetch/fieldclimate/ConnectorFetchFieldClimateProvider.java

@@ -8,8 +8,8 @@ import cz.senslog.connector.model.fieldclimate.FieldClimateModel;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
-import static cz.senslog.common.http.HttpClient.newHttpClient;
-import static cz.senslog.common.http.HttpClient.newHttpSSLClient;
+import static cz.senslog.connector.tools.http.HttpClient.newHttpClient;
+import static cz.senslog.connector.tools.http.HttpClient.newHttpSSLClient;
 
 
 public final class ConnectorFetchFieldClimateProvider implements ConnectorFetchProvider {

+ 12 - 12
connector-fetch-fieldclimate/src/main/java/cz/senslog/connector/fetch/fieldclimate/FieldClimateFetcher.java

@@ -2,17 +2,17 @@ package cz.senslog.connector.fetch.fieldclimate;
 
 import com.google.gson.reflect.TypeToken;
 import cz.senslog.connector.model.config.HostConfig;
-import cz.senslog.common.exception.ParseException;
-import cz.senslog.common.exception.SyntaxException;
+import cz.senslog.connector.tools.exception.ParseException;
+import cz.senslog.connector.tools.exception.SyntaxException;
 import cz.senslog.connector.fetch.api.ConnectorFetcher;
 import cz.senslog.connector.fetch.fieldclimate.auth.AuthenticationService;
-import cz.senslog.common.http.HttpClient;
-import cz.senslog.common.http.HttpRequest;
-import cz.senslog.common.http.HttpResponse;
-import cz.senslog.common.http.URLBuilder;
+import cz.senslog.connector.tools.http.HttpClient;
+import cz.senslog.connector.tools.http.HttpRequest;
+import cz.senslog.connector.tools.http.HttpResponse;
+import cz.senslog.connector.tools.http.URLBuilder;
 import cz.senslog.connector.model.api.ProxySessionModel;
 import cz.senslog.connector.model.fieldclimate.*;
-import cz.senslog.common.util.Tuple;
+import cz.senslog.connector.tools.util.Tuple;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
@@ -21,11 +21,11 @@ import java.time.*;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 
-import static cz.senslog.common.http.HttpContentType.APPLICATION_JSON;
-import static cz.senslog.common.http.HttpHeader.*;
-import static cz.senslog.common.http.HttpMethod.GET;
-import static cz.senslog.common.json.BasicJson.jsonToObject;
-import static cz.senslog.common.util.StringUtils.isBlank;
+import static cz.senslog.connector.tools.http.HttpContentType.APPLICATION_JSON;
+import static cz.senslog.connector.tools.http.HttpHeader.*;
+import static cz.senslog.connector.tools.http.HttpMethod.GET;
+import static cz.senslog.connector.tools.json.BasicJson.jsonToObject;
+import static cz.senslog.connector.tools.util.StringUtils.isBlank;
 import static java.lang.String.format;
 import static java.time.OffsetDateTime.MAX;
 import static java.time.OffsetDateTime.MIN;

+ 6 - 6
connector-fetch-fieldclimate/src/main/java/cz/senslog/connector/fetch/fieldclimate/FieldClimateProxySession.java

@@ -4,12 +4,12 @@ import com.google.gson.reflect.TypeToken;
 import cz.senslog.connector.model.config.HostConfig;
 import cz.senslog.connector.fetch.api.ConnectorFetcher;
 import cz.senslog.connector.fetch.api.FetchProxySession;
-import cz.senslog.common.http.HttpClient;
-import cz.senslog.common.http.HttpRequest;
-import cz.senslog.common.http.HttpResponse;
-import cz.senslog.common.http.URLBuilder;
+import cz.senslog.connector.tools.http.HttpClient;
+import cz.senslog.connector.tools.http.HttpRequest;
+import cz.senslog.connector.tools.http.HttpResponse;
+import cz.senslog.connector.tools.http.URLBuilder;
 import cz.senslog.connector.model.fieldclimate.FieldClimateModel;
-import cz.senslog.common.util.Tuple;
+import cz.senslog.connector.tools.util.Tuple;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
@@ -20,7 +20,7 @@ import java.util.List;
 import java.util.Optional;
 
 import static cz.senslog.connector.fetch.fieldclimate.FieldClimateSession.emptySession;
-import static cz.senslog.common.json.BasicJson.jsonToObject;
+import static cz.senslog.connector.tools.json.BasicJson.jsonToObject;
 import static cz.senslog.connector.model.converter.FieldClimateUnitConverter.convertIdToFieldClimateId;
 import static java.time.OffsetDateTime.parse;
 import static java.time.format.DateTimeFormatter.ofPattern;

+ 1 - 3
connector-fetch-fieldclimate/src/main/java/cz/senslog/connector/fetch/fieldclimate/StationTimeRange.java

@@ -1,10 +1,8 @@
 package cz.senslog.connector.fetch.fieldclimate;
 
 import java.time.LocalDateTime;
-import java.time.LocalDateTime;
-import java.time.LocalDateTime;
 
-import static cz.senslog.common.json.BasicJson.objectToJson;
+import static cz.senslog.connector.tools.json.BasicJson.objectToJson;
 
 public class StationTimeRange {
 

+ 7 - 7
connector-fetch-fieldclimate/src/test/java/cz/senslog/connector/fetch/fieldclimate/FieldClimateFetcherTest.java

@@ -3,9 +3,9 @@ package cz.senslog.connector.fetch.fieldclimate;
 import cz.senslog.connector.fetch.api.ExecutableFetcher;
 import cz.senslog.connector.model.config.DefaultConfig;
 import cz.senslog.connector.fetch.fieldclimate.auth.AuthenticationService;
-import cz.senslog.common.http.HttpClient;
-import cz.senslog.common.http.HttpRequest;
-import cz.senslog.common.http.HttpResponse;
+import cz.senslog.connector.tools.http.HttpClient;
+import cz.senslog.connector.tools.http.HttpRequest;
+import cz.senslog.connector.tools.http.HttpResponse;
 import cz.senslog.connector.model.converter.FieldClimateModelSenslogV1ModelConverter;
 import cz.senslog.connector.model.fieldclimate.*;
 import cz.senslog.connector.model.v1.SenslogV1Model;
@@ -17,10 +17,10 @@ import org.mockito.stubbing.Answer;
 import java.time.LocalDateTime;
 import java.util.*;
 
-import static cz.senslog.common.http.HttpClient.newHttpClient;
-import static cz.senslog.common.http.HttpClient.newHttpSSLClient;
-import static cz.senslog.common.http.HttpCode.OK;
-import static cz.senslog.common.http.HttpCode.SERVER_ERROR;
+import static cz.senslog.connector.tools.http.HttpClient.newHttpClient;
+import static cz.senslog.connector.tools.http.HttpClient.newHttpSSLClient;
+import static cz.senslog.connector.tools.http.HttpCode.OK;
+import static cz.senslog.connector.tools.http.HttpCode.SERVER_ERROR;
 import static java.lang.String.format;
 import static java.time.format.DateTimeFormatter.ofPattern;
 import static java.util.Collections.emptyList;

+ 6 - 6
connector-fetch-fieldclimate/src/test/java/cz/senslog/connector/fetch/fieldclimate/FieldClimateProxySessionTest.java

@@ -2,9 +2,9 @@ package cz.senslog.connector.fetch.fieldclimate;
 
 import cz.senslog.connector.model.config.DefaultConfig;
 import cz.senslog.connector.fetch.api.ExecutableFetcher;
-import cz.senslog.common.http.HttpClient;
-import cz.senslog.common.http.HttpRequest;
-import cz.senslog.common.http.HttpResponse;
+import cz.senslog.connector.tools.http.HttpClient;
+import cz.senslog.connector.tools.http.HttpRequest;
+import cz.senslog.connector.tools.http.HttpResponse;
 import cz.senslog.connector.model.fieldclimate.FieldClimateModel;
 import cz.senslog.connector.model.fieldclimate.StationData;
 import org.junit.jupiter.api.BeforeEach;
@@ -17,9 +17,9 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
 
-import static cz.senslog.common.http.HttpCode.OK;
-import static cz.senslog.common.http.HttpCode.SERVER_ERROR;
-import static cz.senslog.common.json.BasicJson.objectToJson;
+import static cz.senslog.connector.tools.http.HttpCode.OK;
+import static cz.senslog.connector.tools.http.HttpCode.SERVER_ERROR;
+import static cz.senslog.connector.tools.json.BasicJson.objectToJson;
 import static cz.senslog.connector.model.converter.FieldClimateUnitConverter.convertIdToFieldClimateId;
 import static java.time.ZoneOffset.UTC;
 import static java.util.Collections.singletonList;

+ 32 - 37
connector-fetch-senslog-v1/pom.xml

@@ -1,38 +1,33 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>connectors</artifactId>
-        <groupId>cz.senslog</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>connector-fetch-senslog-v1</artifactId>
-    <name>fetch-senslog-v1</name>
-    <version>${project.parent.version}</version>
-    <packaging>jar</packaging>
-
-    <dependencies>
-        <dependency>
-            <groupId>cz.senslog</groupId>
-            <artifactId>connector-fetch-api</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>cz.senslog</groupId>
-            <artifactId>common</artifactId>
-            <version>1.0.0</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-assembly-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>connectors</artifactId>
+        <groupId>cz.senslog</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>connector-fetch-senslog-v1</artifactId>
+    <name>fetch-senslog-v1</name>
+    <version>${project.parent.version}</version>
+    <packaging>jar</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>cz.senslog</groupId>
+            <artifactId>connector-fetch-api</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-assembly-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
 </project>

+ 1 - 1
connector-fetch-senslog-v1/src/main/java/cz/senslog/connector/fetch/senslog/v1/SenslogFetchProvider.java

@@ -10,7 +10,7 @@ import cz.senslog.connector.model.v1.SenslogV1Model;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
-import static cz.senslog.common.http.HttpClient.newHttpClient;
+import static cz.senslog.connector.tools.http.HttpClient.newHttpClient;
 
 public class SenslogFetchProvider implements ConnectorFetchProvider {
 

+ 6 - 6
connector-fetch-senslog-v1/src/main/java/cz/senslog/connector/fetch/senslog/v1/SenslogFetcher.java

@@ -4,11 +4,11 @@
 package cz.senslog.connector.fetch.senslog.v1;
 
 import com.google.gson.reflect.TypeToken;
-import cz.senslog.common.http.HttpClient;
-import cz.senslog.common.http.HttpRequest;
-import cz.senslog.common.http.HttpResponse;
-import cz.senslog.common.http.URLBuilder;
-import cz.senslog.common.util.Tuple;
+import cz.senslog.connector.tools.http.HttpClient;
+import cz.senslog.connector.tools.http.HttpRequest;
+import cz.senslog.connector.tools.http.HttpResponse;
+import cz.senslog.connector.tools.http.URLBuilder;
+import cz.senslog.connector.tools.util.Tuple;
 import cz.senslog.connector.fetch.api.ConnectorFetcher;
 import cz.senslog.connector.model.api.ProxySessionModel;
 import cz.senslog.connector.model.config.HostConfig;
@@ -21,7 +21,7 @@ import java.time.*;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 
-import static cz.senslog.common.json.BasicJson.jsonToObject;
+import static cz.senslog.connector.tools.json.BasicJson.jsonToObject;
 import static java.time.OffsetDateTime.now;
 import static java.time.OffsetDateTime.parse;
 import static java.time.format.DateTimeFormatter.ofPattern;

+ 6 - 6
connector-fetch-senslog-v1/src/main/java/cz/senslog/connector/fetch/senslog/v1/SenslogProxySession.java

@@ -3,11 +3,11 @@
 
 package cz.senslog.connector.fetch.senslog.v1;
 
-import cz.senslog.common.http.HttpClient;
-import cz.senslog.common.http.HttpRequest;
-import cz.senslog.common.http.HttpResponse;
-import cz.senslog.common.http.URLBuilder;
-import cz.senslog.common.util.Tuple;
+import cz.senslog.connector.tools.http.HttpClient;
+import cz.senslog.connector.tools.http.HttpRequest;
+import cz.senslog.connector.tools.http.HttpResponse;
+import cz.senslog.connector.tools.http.URLBuilder;
+import cz.senslog.connector.tools.util.Tuple;
 import cz.senslog.connector.fetch.api.ConnectorFetcher;
 import cz.senslog.connector.fetch.api.FetchProxySession;
 import cz.senslog.connector.model.config.HostConfig;
@@ -22,7 +22,7 @@ import java.time.ZoneId;
 import java.util.List;
 import java.util.Optional;
 
-import static cz.senslog.common.json.BasicJson.jsonToObject;
+import static cz.senslog.connector.tools.json.BasicJson.jsonToObject;
 import static cz.senslog.connector.fetch.senslog.v1.SensLogSession.emptySession;
 import static java.time.OffsetDateTime.ofInstant;
 

+ 44 - 44
connector-fetch-senslog-v1/src/test/java/cz/senslog/connector/fetch/senslog/v1/SenslogFetcherTest.java

@@ -1,45 +1,45 @@
-package cz.senslog.connector.fetch.senslog.v1;
-
-import cz.senslog.common.http.HttpClient;
-import cz.senslog.connector.model.config.DefaultConfig;
-import org.junit.jupiter.api.Test;
-
-import java.time.LocalDateTime;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-class SenslogFetcherTest {
-
-    /*
-    @Test
-    void fetch() {
-
-        DefaultConfig defaultConfig = new DefaultConfig("", null);
-
-        defaultConfig.setProperty("startDate", LocalDateTime.of(2020, 3, 11, 0, 0,0));
-        defaultConfig.setProperty("user", "afarcloud");
-        defaultConfig.setProperty("group", "afc");
-
-        Map<String, String> sensorServiceHost = new HashMap<>();
-        sensorServiceHost.put("domain", "http://foodie.lesprojekt.cz:8080/MapLogOT");
-        sensorServiceHost.put("path", "SensorService");
-        defaultConfig.setProperty("sensorServiceHost", sensorServiceHost);
-
-        Map<String, String> dataServiceHost = new HashMap<>();
-        dataServiceHost.put("domain", "http://foodie.lesprojekt.cz:8080/MapLogOT");
-        dataServiceHost.put("path", "DataService");
-        defaultConfig.setProperty("dataServiceHost", dataServiceHost);
-
-
-        SenslogConfig config = new SenslogConfig(defaultConfig);
-        SenslogFetcher fetcher = new SenslogFetcher(config, HttpClient.newHttpClient());
-
-        fetcher.init();
-        fetcher.fetch(Optional.empty());
-    }
-
-     */
+package cz.senslog.connector.fetch.senslog.v1;
+
+import cz.senslog.connector.tools.http.HttpClient;
+import cz.senslog.connector.model.config.DefaultConfig;
+import org.junit.jupiter.api.Test;
+
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class SenslogFetcherTest {
+
+    /*
+    @Test
+    void fetch() {
+
+        DefaultConfig defaultConfig = new DefaultConfig("", null);
+
+        defaultConfig.setProperty("startDate", LocalDateTime.of(2020, 3, 11, 0, 0,0));
+        defaultConfig.setProperty("user", "afarcloud");
+        defaultConfig.setProperty("group", "afc");
+
+        Map<String, String> sensorServiceHost = new HashMap<>();
+        sensorServiceHost.put("domain", "http://foodie.lesprojekt.cz:8080/MapLogOT");
+        sensorServiceHost.put("path", "SensorService");
+        defaultConfig.setProperty("sensorServiceHost", sensorServiceHost);
+
+        Map<String, String> dataServiceHost = new HashMap<>();
+        dataServiceHost.put("domain", "http://foodie.lesprojekt.cz:8080/MapLogOT");
+        dataServiceHost.put("path", "DataService");
+        defaultConfig.setProperty("dataServiceHost", dataServiceHost);
+
+
+        SenslogConfig config = new SenslogConfig(defaultConfig);
+        SenslogFetcher fetcher = new SenslogFetcher(config, HttpClient.newHttpClient());
+
+        fetcher.init();
+        fetcher.fetch(Optional.empty());
+    }
+
+     */
 }

+ 22 - 22
connector-model/pom.xml

@@ -1,23 +1,23 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>connectors</artifactId>
-        <groupId>cz.senslog</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>connector-model</artifactId>
-    <name>model</name>
-    <version>${project.parent.version}</version>
-
-    <dependencies>
-        <dependency>
-            <groupId>cz.senslog</groupId>
-            <artifactId>common</artifactId>
-            <version>1.0.0</version>
-        </dependency>
-    </dependencies>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>connectors</artifactId>
+        <groupId>cz.senslog</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>connector-model</artifactId>
+    <name>model</name>
+    <version>${project.parent.version}</version>
+
+    <dependencies>
+        <dependency>
+            <groupId>cz.senslog</groupId>
+            <artifactId>connector-tools</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+    </dependencies>
 </project>

+ 1 - 1
connector-model/src/main/java/cz/senslog/connector/model/afarcloud/MultiCollarMeasurements.java

@@ -5,7 +5,7 @@ package cz.senslog.connector.model.afarcloud;
 
 import java.util.List;
 
-import static cz.senslog.common.json.BasicJson.objectToJson;
+import static cz.senslog.connector.tools.json.BasicJson.objectToJson;
 
 public class MultiCollarMeasurements extends MultiMeasurement {
 

+ 1 - 1
connector-model/src/main/java/cz/senslog/connector/model/afarcloud/MultiSensorMeasurements.java

@@ -5,7 +5,7 @@ package cz.senslog.connector.model.afarcloud;
 
 import java.util.List;
 
-import static cz.senslog.common.json.BasicJson.objectToJson;
+import static cz.senslog.connector.tools.json.BasicJson.objectToJson;
 
 public class MultiSensorMeasurements extends MultiMeasurement {
 

+ 1 - 1
connector-model/src/main/java/cz/senslog/connector/model/azure/SensorData.java

@@ -1,6 +1,6 @@
 package cz.senslog.connector.model.azure;
 
-import cz.senslog.common.util.NumberUtils;
+import cz.senslog.connector.tools.util.NumberUtils;
 import org.apache.logging.log4j.util.BiConsumer;
 
 import java.time.OffsetDateTime;

+ 1 - 1
connector-model/src/main/java/cz/senslog/connector/model/azure/SensorInfo.java

@@ -4,7 +4,7 @@ import java.time.LocalDateTime;
 import java.time.OffsetDateTime;
 import java.util.List;
 
-import static cz.senslog.common.json.BasicJson.objectToJson;
+import static cz.senslog.connector.tools.json.BasicJson.objectToJson;
 import static java.lang.Boolean.TRUE;
 
 /**

+ 11 - 2
connector-model/src/main/java/cz/senslog/connector/model/config/ConnectorDescriptor.java

@@ -3,7 +3,9 @@
 
 package cz.senslog.connector.model.config;
 
-import static cz.senslog.common.json.BasicJson.objectToJson;
+import java.time.LocalTime;
+
+import static cz.senslog.connector.tools.json.BasicJson.objectToJson;
 
 /**
  * The class {@code ConnectorDescriptor} represents a configuration class for a connector.
@@ -30,6 +32,8 @@ public class ConnectorDescriptor {
     /** Initialization delay for scheduling. */
     private final Integer delay;
 
+    private final LocalTime startAt;
+
     /**
      * Constructor sets all attributes.
      * @param name - name of a connector.
@@ -38,12 +42,13 @@ public class ConnectorDescriptor {
      * @param period - period for scheduling.
      * @param delay - initialization delay for scheduling.
      */
-    public ConnectorDescriptor(String name, String fetcherId, String pusherId, Integer period, Integer delay) {
+    public ConnectorDescriptor(String name, String fetcherId, String pusherId, Integer period, Integer delay, LocalTime startAt) {
         this.name = name;
         this.fetcherId = fetcherId;
         this.pusherId = pusherId;
         this.period = period;
         this.delay = delay;
+        this.startAt = startAt;
     }
 
     public String getName() {
@@ -66,6 +71,10 @@ public class ConnectorDescriptor {
         return delay;
     }
 
+    public LocalTime getStartAt() {
+        return startAt;
+    }
+
     @Override
     public String toString() {
         return objectToJson(this);

+ 1 - 1
connector-model/src/main/java/cz/senslog/connector/model/config/HostConfig.java

@@ -3,7 +3,7 @@
 
 package cz.senslog.connector.model.config;
 
-import static cz.senslog.common.json.BasicJson.objectToJson;
+import static cz.senslog.connector.tools.json.BasicJson.objectToJson;
 
 /**
  * The class {@code HostConfig} represents a configuration class.

+ 3 - 3
connector-model/src/main/java/cz/senslog/connector/model/config/PropertyConfig.java

@@ -3,9 +3,9 @@
 
 package cz.senslog.connector.model.config;
 
-import cz.senslog.common.exception.PropertyNotFoundException;
-import cz.senslog.common.util.ClassUtils;
-import cz.senslog.common.util.LocalDateTimeUtils;
+import cz.senslog.connector.tools.exception.PropertyNotFoundException;
+import cz.senslog.connector.tools.util.ClassUtils;
+import cz.senslog.connector.tools.util.LocalDateTimeUtils;
 
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;

+ 1 - 1
connector-model/src/main/java/cz/senslog/connector/model/converter/AFarCloudUnitSensorConverter.java

@@ -4,7 +4,7 @@
 package cz.senslog.connector.model.converter;
 
 
-import cz.senslog.common.util.Tuple;
+import cz.senslog.connector.tools.util.Tuple;
 
 import java.util.HashMap;
 import java.util.Map;

+ 1 - 1
connector-model/src/main/java/cz/senslog/connector/model/converter/AzureUnitConverter.java

@@ -3,7 +3,7 @@
 
 package cz.senslog.connector.model.converter;
 
-import cz.senslog.common.util.Tuple;
+import cz.senslog.connector.tools.util.Tuple;
 
 import java.util.HashMap;
 import java.util.Map;

+ 10 - 14
connector-model/src/main/java/cz/senslog/connector/model/converter/DrutesModelSenslogV1ModelConverter.java

@@ -10,7 +10,6 @@ import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
 import java.time.OffsetDateTime;
-import java.time.ZoneId;
 import java.util.*;
 
 public class DrutesModelSenslogV1ModelConverter implements Converter<DrutesModel, SenslogV1Model> {
@@ -95,19 +94,16 @@ public class DrutesModelSenslogV1ModelConverter implements Converter<DrutesModel
         logger.debug("Creating an empty list of observation.");
         List<Record> observations = new LinkedList<>();
 
-        long unitId = model.getUnitId();
-        OffsetDateTime timestampBase = model.getStart().atZone(ZoneId.systemDefault()).toOffsetDateTime();
-        for (Map.Entry<Long, List<PredictionData>> predictionEntry : model.getPredictions().entrySet()) {
-            long sensorId = predictionEntry.getKey();
-            logger.info("Converting sensor with ID {}.", sensorId);
-
-            for (PredictionData prediction : predictionEntry.getValue()) {
-                OffsetDateTime timestamp = timestampBase.plusSeconds(prediction.getTimeshift());
-                observations.addAll(SENSOR_TO_CONVERTER
-                        .getOrDefault(sensorId, SensorPredictionConverter.VOID_CONVERTER)
-                        .convert(unitId, timestamp, model.getDayOffset(), prediction.getValues())
-                );
-            }
+        for (PredictionData prediction : model.getPredictions()) {
+            logger.info("Converting sensor with ID {}.", prediction.getSensorId());
+
+            int dayOffset = prediction.getPredictCreated().getDayOfWeek().getValue();
+            OffsetDateTime timestamp = prediction.getPredictFrom().plusSeconds(prediction.getTimeshift());
+
+            observations.addAll(SENSOR_TO_CONVERTER
+                    .getOrDefault(prediction.getSensorId(), SensorPredictionConverter.VOID_CONVERTER)
+                    .convert(prediction.getUnitId(), timestamp, dayOffset, prediction.getValues())
+            );
         }
 
         logger.debug("Creating a new SenslogV1 model.");

+ 1 - 1
connector-model/src/main/java/cz/senslog/connector/model/converter/SenslogV1ModelAFarCloudModelConverter.java

@@ -3,7 +3,7 @@
 
 package cz.senslog.connector.model.converter;
 
-import cz.senslog.common.util.Tuple;
+import cz.senslog.connector.tools.util.Tuple;
 import cz.senslog.connector.model.afarcloud.AFarCloudModel;
 import cz.senslog.connector.model.afarcloud.MultiMeasurement;
 import cz.senslog.connector.model.afarcloud.MultiSensorMeasurements;

+ 3 - 23
connector-model/src/main/java/cz/senslog/connector/model/drutes/DrutesModel.java

@@ -2,39 +2,19 @@ package cz.senslog.connector.model.drutes;
 
 import cz.senslog.connector.model.api.AbstractModel;
 
-import java.time.LocalDateTime;
 import java.time.OffsetDateTime;
 import java.util.List;
-import java.util.Map;
 
 public class DrutesModel extends AbstractModel {
 
-    private final long unitId;
-    private final LocalDateTime start;
-    private final int dayOffset;
-    private final Map<Long, List<PredictionData>> predictions;
+    private final List<PredictionData> predictions;
 
-    public DrutesModel(long unitId, LocalDateTime start, int dayOffset, Map<Long, List<PredictionData>> predictions, OffsetDateTime from, OffsetDateTime to) {
+    public DrutesModel(List<PredictionData> predictions, OffsetDateTime from, OffsetDateTime to) {
         super(from, to);
-        this.unitId = unitId;
-        this.start = start;
-        this.dayOffset = dayOffset;
         this.predictions = predictions;
     }
 
-    public long getUnitId() {
-        return unitId;
-    }
-
-    public LocalDateTime getStart() {
-        return start;
-    }
-
-    public int getDayOffset() {
-        return dayOffset;
-    }
-
-    public Map<Long, List<PredictionData>> getPredictions() {
+    public List<PredictionData> getPredictions() {
         return predictions;
     }
 }

+ 27 - 1
connector-model/src/main/java/cz/senslog/connector/model/drutes/PredictionData.java

@@ -1,13 +1,31 @@
 package cz.senslog.connector.model.drutes;
 
+import java.time.OffsetDateTime;
+
 public class PredictionData {
 
+    private final long unitId;
+    private final long sensorId;
+    private final OffsetDateTime predictCreated;
+    private final OffsetDateTime predictFrom;
     private final long timeshift;
     private final double [] values;
 
-    public PredictionData(long timestamp, double [] values) {
+    public PredictionData(long unitId, long sensorId, long timestamp, double [] values, OffsetDateTime predictCreated, OffsetDateTime predictFrom) {
+        this.unitId = unitId;
+        this.sensorId = sensorId;
         this.timeshift = timestamp;
         this.values = values;
+        this.predictCreated = predictCreated;
+        this.predictFrom = predictFrom;
+    }
+
+    public long getUnitId() {
+        return unitId;
+    }
+
+    public long getSensorId() {
+        return sensorId;
     }
 
     public long getTimeshift() {
@@ -17,4 +35,12 @@ public class PredictionData {
     public double[] getValues() {
         return values;
     }
+
+    public OffsetDateTime getPredictCreated() {
+        return predictCreated;
+    }
+
+    public OffsetDateTime getPredictFrom() {
+        return predictFrom;
+    }
 }

+ 1 - 1
connector-model/src/main/java/cz/senslog/connector/model/fieldclimate/SensorDataInfo.java

@@ -2,7 +2,7 @@ package cz.senslog.connector.model.fieldclimate;
 
 import java.util.Map;
 
-import static cz.senslog.common.json.BasicJson.objectToJson;
+import static cz.senslog.connector.tools.json.BasicJson.objectToJson;
 
 public class SensorDataInfo {
 

+ 1 - 1
connector-model/src/main/java/cz/senslog/connector/model/fieldclimate/StationData.java

@@ -3,7 +3,7 @@ package cz.senslog.connector.model.fieldclimate;
 import java.util.List;
 import java.util.Map;
 
-import static cz.senslog.common.json.BasicJson.objectToJson;
+import static cz.senslog.connector.tools.json.BasicJson.objectToJson;
 
 public class StationData {
 

+ 1 - 1
connector-model/src/main/java/cz/senslog/connector/model/fieldclimate/StationInfo.java

@@ -2,7 +2,7 @@ package cz.senslog.connector.model.fieldclimate;
 
 import java.time.LocalDateTime;
 
-import static cz.senslog.common.json.BasicJson.objectToJson;
+import static cz.senslog.connector.tools.json.BasicJson.objectToJson;
 
 public class StationInfo {
 

+ 1 - 1
connector-model/src/main/java/cz/senslog/connector/model/v1/Observation.java

@@ -3,7 +3,7 @@
 
 package cz.senslog.connector.model.v1;
 
-import static cz.senslog.common.json.BasicJson.objectToJson;
+import static cz.senslog.connector.tools.json.BasicJson.objectToJson;
 
 /**
  * The class {@code Observation} represents a record for Senslog V1.

+ 1 - 1
connector-model/src/main/java/cz/senslog/connector/model/v1/Position.java

@@ -3,7 +3,7 @@
 
 package cz.senslog.connector.model.v1;
 
-import static cz.senslog.common.json.BasicJson.objectToJson;
+import static cz.senslog.connector.tools.json.BasicJson.objectToJson;
 
 /**
  * The class {@code Position} represents a record of position for Senslog V1.

+ 1 - 1
connector-model/src/main/java/cz/senslog/connector/model/v2/Observation.java

@@ -2,7 +2,7 @@ package cz.senslog.connector.model.v2;
 
 import java.time.LocalDateTime;
 
-import static cz.senslog.common.json.BasicJson.objectToJson;
+import static cz.senslog.connector.tools.json.BasicJson.objectToJson;
 
 /**
  * The class {@code Observation} represents a record for Senslog V2.

+ 21 - 21
connector-model/src/test/java/cz/senslog/connector/model/config/ConnectorDescriptorTest.java

@@ -1,22 +1,22 @@
-package cz.senslog.connector.model.config;
-
-import org.junit.jupiter.api.Test;
-
-import static cz.senslog.common.json.BasicJson.jsonToObject;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-class ConnectorDescriptorTest {
-
-    @Test
-    void toString_ConvertJson_True() {
-
-        String jsonDescriptor = new ConnectorDescriptor("test", "FetcherId", "PusherId", 42, 2).toString();
-        ConnectorDescriptor descriptor = jsonToObject(jsonDescriptor, ConnectorDescriptor.class);
-
-        assertEquals("test", descriptor.getName());
-        assertEquals("FetcherId", descriptor.getFetcherId());
-        assertEquals("PusherId", descriptor.getPusherId());
-        assertEquals(42, descriptor.getPeriod());
-        assertEquals(2, descriptor.getDelay());
-    }
+package cz.senslog.connector.model.config;
+
+import org.junit.jupiter.api.Test;
+
+import static cz.senslog.connector.tools.json.BasicJson.jsonToObject;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+class ConnectorDescriptorTest {
+
+    @Test
+    void toString_ConvertJson_True() {
+
+        String jsonDescriptor = new ConnectorDescriptor("test", "FetcherId", "PusherId", 42, 2, null).toString();
+        ConnectorDescriptor descriptor = jsonToObject(jsonDescriptor, ConnectorDescriptor.class);
+
+        assertEquals("test", descriptor.getName());
+        assertEquals("FetcherId", descriptor.getFetcherId());
+        assertEquals("PusherId", descriptor.getPusherId());
+        assertEquals(42, descriptor.getPeriod());
+        assertEquals(2, descriptor.getDelay());
+    }
 }

+ 18 - 18
connector-model/src/test/java/cz/senslog/connector/model/config/HostConfigTest.java

@@ -1,19 +1,19 @@
-package cz.senslog.connector.model.config;
-
-import cz.senslog.common.json.BasicJson;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-class HostConfigTest {
-
-    @Test
-    void toString_ConvertJson_True() {
-
-        String jsonConfig = new HostConfig("http://test.com", "test").toString();
-        HostConfig config = BasicJson.jsonToObject(jsonConfig, HostConfig.class);
-
-        assertEquals("http://test.com", config.getDomain());
-        assertEquals("test", config.getPath());
-    }
+package cz.senslog.connector.model.config;
+
+import cz.senslog.connector.tools.json.BasicJson;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+class HostConfigTest {
+
+    @Test
+    void toString_ConvertJson_True() {
+
+        String jsonConfig = new HostConfig("http://test.com", "test").toString();
+        HostConfig config = BasicJson.jsonToObject(jsonConfig, HostConfig.class);
+
+        assertEquals("http://test.com", config.getDomain());
+        assertEquals("test", config.getPath());
+    }
 }

+ 82 - 82
connector-model/src/test/java/cz/senslog/connector/model/config/PropertyConfigTest.java

@@ -1,83 +1,83 @@
-package cz.senslog.connector.model.config;
-
-import cz.senslog.common.exception.PropertyNotFoundException;
-import org.junit.jupiter.api.Test;
-
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.Month;
-import java.time.ZoneOffset;
-import java.time.format.DateTimeFormatter;
-import java.util.Date;
-import java.util.HashMap;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-class PropertyConfigTest {
-
-    @Test
-    void property_basicDataTypes_True() {
-
-        PropertyConfig config = new PropertyConfig("test");
-        config.setProperty("string", "testString");
-        config.setProperty("integer", 42);
-
-        LocalDateTime localDateTime = LocalDateTime.of(1970, Month.JANUARY, 1, 0,0, 0);
-        config.setProperty("localDateTime", localDateTime);
-
-        String date = localDateTime.format(DateTimeFormatter.ISO_DATE_TIME);
-        config.setProperty("date", date);
-
-        assertEquals("test", config.getId());
-        assertEquals("testString", config.getStringProperty("string"));
-        assertEquals(42, config.getIntegerProperty("integer"));
-        assertEquals(localDateTime, config.getLocalDateTimeProperty("localDateTime"));
-        assertEquals(localDateTime, config.getLocalDateTimeProperty("date"));
-    }
-
-    @Test
-    void property_configProperty_True() {
-
-        PropertyConfig config = new PropertyConfig("test");
-        config.setProperty("values", new HashMap<String, Integer>(){{put("integer", 42);}});
-
-        PropertyConfig valuesConfig = config.getPropertyConfig("values");
-
-        assertEquals("test.values", valuesConfig.getId());
-        assertEquals(42, valuesConfig.getIntegerProperty("integer"));
-    }
-
-    @Test
-    void property_NotFound_PropertyNotFoundException() {
-
-        PropertyConfig config = new PropertyConfig("test");
-
-        assertThrows(PropertyNotFoundException.class, () -> config.getProperty("unknown"));
-    }
-
-    @Test
-    void property_InvalidDataType_ClassCastException() {
-
-        PropertyConfig config = new PropertyConfig("test");
-        config.setProperty("date", 42);
-
-        assertThrows(ClassCastException.class, () -> config.getLocalDateTimeProperty("date"));
-    }
-
-    @Test
-    void property_OptionalLocalDateTime_EmptyOptional() {
-
-        PropertyConfig config = new PropertyConfig("test");
-
-        assertFalse(config.getOptionalLocalDateTimeProperty("date").isPresent());
-    }
-
-    @Test
-    void property_LocalDateTime_True() {
-
-        PropertyConfig config = new PropertyConfig("test");
-        config.setProperty("date", LocalDateTime.MIN);
-
-        assertEquals(LocalDateTime.MIN, config.getOptionalLocalDateTimeProperty("date").orElse(null));
-    }
+package cz.senslog.connector.model.config;
+
+import cz.senslog.connector.tools.exception.PropertyNotFoundException;
+import org.junit.jupiter.api.Test;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.Month;
+import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+import java.util.HashMap;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class PropertyConfigTest {
+
+    @Test
+    void property_basicDataTypes_True() {
+
+        PropertyConfig config = new PropertyConfig("test");
+        config.setProperty("string", "testString");
+        config.setProperty("integer", 42);
+
+        LocalDateTime localDateTime = LocalDateTime.of(1970, Month.JANUARY, 1, 0,0, 0);
+        config.setProperty("localDateTime", localDateTime);
+
+        String date = localDateTime.format(DateTimeFormatter.ISO_DATE_TIME);
+        config.setProperty("date", date);
+
+        assertEquals("test", config.getId());
+        assertEquals("testString", config.getStringProperty("string"));
+        assertEquals(42, config.getIntegerProperty("integer"));
+        assertEquals(localDateTime, config.getLocalDateTimeProperty("localDateTime"));
+        assertEquals(localDateTime, config.getLocalDateTimeProperty("date"));
+    }
+
+    @Test
+    void property_configProperty_True() {
+
+        PropertyConfig config = new PropertyConfig("test");
+        config.setProperty("values", new HashMap<String, Integer>(){{put("integer", 42);}});
+
+        PropertyConfig valuesConfig = config.getPropertyConfig("values");
+
+        assertEquals("test.values", valuesConfig.getId());
+        assertEquals(42, valuesConfig.getIntegerProperty("integer"));
+    }
+
+    @Test
+    void property_NotFound_PropertyNotFoundException() {
+
+        PropertyConfig config = new PropertyConfig("test");
+
+        assertThrows(PropertyNotFoundException.class, () -> config.getProperty("unknown"));
+    }
+
+    @Test
+    void property_InvalidDataType_ClassCastException() {
+
+        PropertyConfig config = new PropertyConfig("test");
+        config.setProperty("date", 42);
+
+        assertThrows(ClassCastException.class, () -> config.getLocalDateTimeProperty("date"));
+    }
+
+    @Test
+    void property_OptionalLocalDateTime_EmptyOptional() {
+
+        PropertyConfig config = new PropertyConfig("test");
+
+        assertFalse(config.getOptionalLocalDateTimeProperty("date").isPresent());
+    }
+
+    @Test
+    void property_LocalDateTime_True() {
+
+        PropertyConfig config = new PropertyConfig("test");
+        config.setProperty("date", LocalDateTime.MIN);
+
+        assertEquals(LocalDateTime.MIN, config.getOptionalLocalDateTimeProperty("date").orElse(null));
+    }
 }

+ 19 - 15
connector-model/src/test/java/cz/senslog/connector/model/converter/DrutesModelSenslogV1ModelConverterTest.java

@@ -13,7 +13,6 @@ import java.time.ZoneId;
 import java.util.*;
 
 import static java.time.format.DateTimeFormatter.ofPattern;
-import static java.util.Collections.singletonList;
 import static org.junit.jupiter.api.Assertions.*;
 
 class DrutesModelSenslogV1ModelConverterTest {
@@ -23,15 +22,20 @@ class DrutesModelSenslogV1ModelConverterTest {
 
         final long timeShift = 604800;
 
-        Map<Long, List<PredictionData>> predictions = new HashMap<>();
-        predictions.put(340260001L, singletonList(new PredictionData(timeShift, new double[]{-1})));
-        predictions.put(340260002L, singletonList(new PredictionData(timeShift, new double[] {-2})));
-        predictions.put(710010001L, singletonList(new PredictionData(timeShift, new double[] {-3, 3})));
-        predictions.put(710010002L, singletonList(new PredictionData(timeShift, new double[] {-4, 4})));
+        OffsetDateTime predictCreated = LocalDateTime.of(2022, 3, 9, 13, 26, 42, 0)
+                .atZone(ZoneId.systemDefault()).toOffsetDateTime();
+        OffsetDateTime predictionFrom = LocalDateTime.of(2021, 11, 2, 16, 0,0,0)
+                .atZone(ZoneId.systemDefault()).toOffsetDateTime();
+        OffsetDateTime predictionTo = predictionFrom.plusSeconds(timeShift);
 
-        LocalDateTime predictionFrom = LocalDateTime.parse("2021-11-02 16:00:00", ofPattern("yyyy-MM-dd HH:mm:ss"));
-        OffsetDateTime predictionTo = predictionFrom.atZone(ZoneId.systemDefault()).toOffsetDateTime().plusSeconds(timeShift);
-        DrutesModel drutesModel = new DrutesModel(4151559L, predictionFrom, 5, predictions, null, null);
+        List<PredictionData> predictions = Arrays.asList(
+                new PredictionData(4151559L, 340260001L, timeShift, new double[]{-1}, predictCreated, predictionFrom),
+                new PredictionData(4151559L, 340260002L, timeShift, new double[]{-2}, predictCreated, predictionFrom),
+                new PredictionData(4151559L, 710010001L, timeShift, new double[]{-3, 3}, predictCreated, predictionFrom),
+                new PredictionData(4151559L, 710010002L, timeShift, new double[]{-4, 4}, predictCreated, predictionFrom)
+        );
+
+        DrutesModel drutesModel = new DrutesModel(predictions, predictionFrom, predictionTo);
 
         SenslogV1Model senslogV1Model = new DrutesModelSenslogV1ModelConverter().convert(drutesModel);
 
@@ -47,12 +51,12 @@ class DrutesModelSenslogV1ModelConverterTest {
             double value = obs.getValue();
 
             switch (sensorId) {
-                case 340595001 : assertEquals(-1, value); break;
-                case 340595002 : assertEquals(-2, value); break;
-                case 710065001 : assertEquals(-3, value); break;
-                case 890025001 : assertEquals(3, value); break;
-                case 710065002 : assertEquals(-4, value); break;
-                case 890025002 : assertEquals(4, value); break;
+                case 340593001 : assertEquals(-1, value); break;
+                case 340593002 : assertEquals(-2, value); break;
+                case 710063001 : assertEquals(-3, value); break;
+                case 890023001 : assertEquals(3, value); break;
+                case 710063002 : assertEquals(-4, value); break;
+                case 890023002 : assertEquals(4, value); break;
                 default: fail(String.format("Sensor ID '%d' is not defined.", sensorId));
             }
         }

+ 1 - 1
connector-model/src/test/java/cz/senslog/connector/model/converter/SenslogV1ModelAFarCloudModelConverterTest.java

@@ -12,7 +12,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static cz.senslog.common.json.BasicJson.objectToJson;
+import static cz.senslog.connector.tools.json.BasicJson.objectToJson;
 import static org.junit.jupiter.api.Assertions.*;
 
 class SenslogV1ModelAFarCloudModelConverterTest {

+ 37 - 42
connector-push-afarcloud/pom.xml

@@ -1,43 +1,38 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>connectors</artifactId>
-        <groupId>cz.senslog</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>connector-push-afarcloud</artifactId>
-    <name>push-afarcloud</name>
-    <version>${project.parent.version}</version>
-    <packaging>jar</packaging>
-
-    <dependencies>
-        <dependency>
-            <groupId>cz.senslog</groupId>
-            <artifactId>common</artifactId>
-            <version>1.0.0</version>
-        </dependency>
-        <dependency>
-            <groupId>cz.senslog</groupId>
-            <artifactId>connector-model</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>cz.senslog</groupId>
-            <artifactId>connector-push-api</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-assembly-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>connectors</artifactId>
+        <groupId>cz.senslog</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>connector-push-afarcloud</artifactId>
+    <name>push-afarcloud</name>
+    <version>${project.parent.version}</version>
+    <packaging>jar</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>cz.senslog</groupId>
+            <artifactId>connector-push-api</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>cz.senslog</groupId>
+            <artifactId>connector-model</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-assembly-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
 </project>

+ 1 - 1
connector-push-afarcloud/src/main/java/cz/senslog/connector/push/afarcloud/AFarCloudPushProvider.java

@@ -10,7 +10,7 @@ import cz.senslog.connector.push.api.ConnectorPusher;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
-import static cz.senslog.common.http.HttpClient.newHttpSSLClient;
+import static cz.senslog.connector.tools.http.HttpClient.newHttpSSLClient;
 
 public class AFarCloudPushProvider implements ConnectorPushProvider {
 

+ 4 - 7
connector-push-afarcloud/src/main/java/cz/senslog/connector/push/afarcloud/AFarCloudPusher.java

@@ -3,14 +3,12 @@
 
 package cz.senslog.connector.push.afarcloud;
 
-import cz.senslog.common.http.HttpClient;
-import cz.senslog.common.http.HttpRequest;
-import cz.senslog.common.http.HttpResponse;
-import cz.senslog.common.http.URLBuilder;
+import cz.senslog.connector.tools.http.HttpClient;
+import cz.senslog.connector.tools.http.HttpRequest;
+import cz.senslog.connector.tools.http.HttpResponse;
+import cz.senslog.connector.tools.http.URLBuilder;
 import cz.senslog.connector.model.afarcloud.AFarCloudModel;
-import cz.senslog.connector.model.afarcloud.CollarMeasurement;
 import cz.senslog.connector.model.afarcloud.MultiMeasurement;
-import cz.senslog.connector.model.afarcloud.MultiSensorMeasurements;
 import cz.senslog.connector.model.config.HostConfig;
 import cz.senslog.connector.push.api.ConnectorPusher;
 import org.apache.logging.log4j.LogManager;
@@ -18,7 +16,6 @@ import org.apache.logging.log4j.Logger;
 
 import java.util.UUID;
 
-import static cz.senslog.common.json.BasicJson.objectToJson;
 
 
 public class AFarCloudPusher implements ConnectorPusher<AFarCloudModel> {

+ 38 - 38
connector-push-api/pom.xml

@@ -1,39 +1,39 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>connectors</artifactId>
-        <groupId>cz.senslog</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>connector-push-api</artifactId>
-    <name>push-api</name>
-    <version>${project.parent.version}</version>
-    <packaging>jar</packaging>
-
-    <dependencies>
-        <dependency>
-            <groupId>cz.senslog</groupId>
-            <artifactId>common</artifactId>
-            <version>1.0.0</version>
-        </dependency>
-        <dependency>
-            <groupId>cz.senslog</groupId>
-            <artifactId>connector-model</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-assembly-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>connectors</artifactId>
+        <groupId>cz.senslog</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>connector-push-api</artifactId>
+    <name>push-api</name>
+    <version>${project.parent.version}</version>
+    <packaging>jar</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>cz.senslog</groupId>
+            <artifactId>connector-tools</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>cz.senslog</groupId>
+            <artifactId>connector-model</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-assembly-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>

+ 3 - 7
connector-push-rest-senslog-v1/pom.xml

@@ -17,19 +17,15 @@
     <dependencies>
         <dependency>
             <groupId>cz.senslog</groupId>
-            <artifactId>common</artifactId>
-            <version>1.0.0</version>
-        </dependency>
-        <dependency>
-            <groupId>cz.senslog</groupId>
-            <artifactId>connector-model</artifactId>
+            <artifactId>connector-push-api</artifactId>
             <version>${project.parent.version}</version>
         </dependency>
         <dependency>
             <groupId>cz.senslog</groupId>
-            <artifactId>connector-push-api</artifactId>
+            <artifactId>connector-model</artifactId>
             <version>${project.parent.version}</version>
         </dependency>
+
     </dependencies>
 
     <build>

+ 45 - 5
connector-push-rest-senslog-v1/src/main/java/cz/senslog/connector/push/rest/senslog/v1/SenslogV1Config.java

@@ -2,8 +2,12 @@ package cz.senslog.connector.push.rest.senslog.v1;
 
 import cz.senslog.connector.model.config.DefaultConfig;
 import cz.senslog.connector.model.config.HostConfig;
+import cz.senslog.connector.model.config.PropertyConfig;
 
-import static cz.senslog.common.json.BasicJson.objectToJson;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import static cz.senslog.connector.tools.json.BasicJson.objectToJson;
 
 /**
  * The class {@code SenslogV1Config} represents a configuration class for the {@link SenslogV1Pusher}.
@@ -14,7 +18,28 @@ import static cz.senslog.common.json.BasicJson.objectToJson;
  */
 public class SenslogV1Config {
 
-    private final HostConfig host;
+    public static class AuthConfig {
+
+        private final String username;
+        private final String password;
+
+        private AuthConfig(PropertyConfig config) {
+            this.username = config.getStringProperty("username");
+            this.password = config.getStringProperty("password");
+        }
+
+        public String getUsername() {
+            return username;
+        }
+
+        public String getPassword() {
+            return password;
+        }
+    }
+
+    private final String baseUrl;
+    private final URI baseUri;
+    private final AuthConfig auth;
 
     /**
      * Constructor sets class attributes from default input configuration class {@link DefaultConfig}.
@@ -22,11 +47,26 @@ public class SenslogV1Config {
      * @param config - default configuration
      */
     public SenslogV1Config(DefaultConfig config) {
-        this.host = new HostConfig(config.getPropertyConfig("host"));
+        this.baseUrl = config.getStringProperty("baseUrl");
+        this.auth = config.containsProperty("auth") ? new AuthConfig(config.getPropertyConfig("auth")) : null;
+
+        try {
+            this.baseUri = new URI(baseUrl);
+        } catch (URISyntaxException e) {
+            throw new RuntimeException("The config is in invalid format. " + e.getMessage());
+        }
+    }
+
+    public String getBaseUrl() {
+        return baseUrl;
+    }
+
+    public AuthConfig getAuth() {
+        return auth;
     }
 
-    public HostConfig getHost() {
-        return host;
+    public URI getBaseURI() {
+        return baseUri;
     }
 
     @Override

+ 1 - 1
connector-push-rest-senslog-v1/src/main/java/cz/senslog/connector/push/rest/senslog/v1/SenslogV1ConnectorPushProvider.java

@@ -7,7 +7,7 @@ import cz.senslog.connector.push.api.ConnectorPusher;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
-import static cz.senslog.common.http.HttpClient.newHttpClient;
+import static cz.senslog.connector.tools.http.HttpClient.newHttpClient;
 
 /**
  * The class {@code SenslogV1ConnectorPushProvider} represents a concrete implementation of {@link ConnectorPushProvider}.

+ 107 - 26
connector-push-rest-senslog-v1/src/main/java/cz/senslog/connector/push/rest/senslog/v1/SenslogV1Pusher.java

@@ -1,23 +1,26 @@
 package cz.senslog.connector.push.rest.senslog.v1;
 
+import com.google.gson.reflect.TypeToken;
 import cz.senslog.connector.model.config.HostConfig;
-import cz.senslog.common.http.*;
+import cz.senslog.connector.tools.http.*;
 import cz.senslog.connector.model.v1.Observation;
 import cz.senslog.connector.model.v1.Position;
 import cz.senslog.connector.model.v1.Record;
 import cz.senslog.connector.model.v1.SenslogV1Model;
 import cz.senslog.connector.push.api.ConnectorPusher;
+import cz.senslog.connector.tools.util.Tuple;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Queue;
-import java.util.UUID;
+import java.lang.reflect.Type;
+import java.util.*;
 import java.util.concurrent.LinkedTransferQueue;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Supplier;
 
-import static cz.senslog.common.http.HttpContentType.TEXT_PLAIN;
+import static cz.senslog.connector.tools.http.HttpContentType.TEXT_PLAIN;
+import static cz.senslog.connector.tools.json.BasicJson.jsonToObject;
+import static java.util.Collections.emptyList;
 
 /**
  * The class {@code SenslogV1Pusher} represents an implementation of {@link ConnectorPusher}.
@@ -40,6 +43,8 @@ class  SenslogV1Pusher implements ConnectorPusher<SenslogV1Model> {
 
     private static final Logger logger = LogManager.getLogger(SenslogV1Pusher.class);
 
+    private static final int MAX_AUTH_ERRORS = 2;
+
     /** Configuration. */
     private final SenslogV1Config config;
 
@@ -52,6 +57,9 @@ class  SenslogV1Pusher implements ConnectorPusher<SenslogV1Model> {
     /** List of failed observations. */
     private final List<Record> failedObservations;
 
+    private Tuple<Boolean, HttpCookie> authCookie;
+    private final Map<Long, AtomicInteger> authError;
+
     /**
      * Constructor of the class sets all attributes.
      * @param config - configuration for pusher.
@@ -62,11 +70,59 @@ class  SenslogV1Pusher implements ConnectorPusher<SenslogV1Model> {
         this.httpClient = httpClient;
         this.observationQueue = new LinkedTransferQueue<>();
         this.failedObservations = new ArrayList<>();
+        this.authCookie = Tuple.of(false, null);
+        this.authError = new HashMap<>();
     }
 
     @Override
     public void init() {}
 
+    private synchronized HttpCookie getAuthCookie() {
+        if (authCookie.getItem1()) {
+            return authCookie.getItem2();
+        }
+
+        if (config.getAuth() == null) {
+            authCookie = Tuple.of(true, null);
+            return authCookie.getItem2();
+        }
+
+        HttpRequest request = HttpRequest.newBuilder().GET()
+                .url(URLBuilder.newBuilder(config.getBaseUrl(), "/ControllerServlet")
+                        .addParam("username", config.getAuth().getUsername())
+                        .addParam("password", config.getAuth().getPassword())
+                        .build()
+                ).build();
+        logger.info("Getting new auth cookie from the server: {}.", config.getBaseUrl());
+
+        HttpResponse response = httpClient.send(request);
+        logger.info("Received new auth token with the status '{}' from the server {}.", response.getStatus(), config.getBaseUrl());
+
+        if (response.isError()) {
+            logger.warn("Authorization failed. Error code {} with the reason '{}'.", response.getStatus(), response.getBody());
+            HttpCookie cookie = HttpCookie.empty();
+            authCookie = Tuple.of(false, cookie);
+            return cookie;
+        }
+
+        final Type lastObsType = new TypeToken<Map<String, Object>>() {}.getType();
+        Map<String, Object> jsonResponse = jsonToObject(response.getBody(), lastObsType);
+
+        if (!jsonResponse.containsKey("sessionid")) {
+            logger.error("Authorization failed. JSON does not contain session id. {}", response.getBody());
+            HttpCookie cookie = HttpCookie.empty();
+            authCookie = Tuple.of(false, cookie);
+            return cookie;
+        }
+
+        String sessionId = (String) jsonResponse.get("sessionid");
+        String domain = config.getBaseURI().getHost();
+        String path = config.getBaseURI().getPath();
+        HttpCookie cookie = new HttpCookie("JSESSIONID", sessionId, domain, path);
+        authCookie = Tuple.of(true, cookie);
+        return cookie;
+    }
+
     @Override
     public void push(SenslogV1Model model) {
 
@@ -103,29 +159,22 @@ class  SenslogV1Pusher implements ConnectorPusher<SenslogV1Model> {
                 logger.error("Observation {} can not be send because required values are null.", id); continue;
             }
 
-            HttpRequest request = null; // TODO refactor
+            HttpRequest.Builder reqBuilder = null; // TODO refactor
             if (record instanceof Observation) {
-                request = prepareRequest((Observation) record, config.getHost());
+                reqBuilder = prepareRequest((Observation) record, config.getBaseUrl());
             } else if (record instanceof Position) {
-                request = prepareRequest((Position) record, config.getHost());
+                reqBuilder = prepareRequest((Position) record, config.getBaseUrl());
             }
 
-            if (request == null) {
+            if (reqBuilder == null) {
                 logger.error("Request for the {} was not created.", id); continue;
             } else {
                 logger.debug("Request for the {} was created successfully.", id);
             }
 
-            logger.info("Sending request for the {}", id);
-            HttpResponse response = httpClient.send(request);
-            logger.info("Response of {} {}", id, response);
-
-            if (response.isError()) {
-                logger.error("Observation {} was not send. Reason {}.", id, response.getBody()); continue;
-            }
-
+            String responseBody = sendRequest(reqBuilder, id);
             logger.debug("Parsing body of the response.");
-            boolean result = Boolean.parseBoolean(response.getBody());
+            boolean result = Boolean.parseBoolean(responseBody);
 
             if (result) {
                 pushedSuccessfully += 1;
@@ -136,20 +185,52 @@ class  SenslogV1Pusher implements ConnectorPusher<SenslogV1Model> {
         logger.info("Total pushed successfully {}/{} observations.", pushedSuccessfully, totalToPush);
     }
 
-    private HttpRequest prepareRequest(Observation observation, HostConfig hostConfig) {
+    private String sendRequest(HttpRequest.Builder reqBuilder, String reqId) {
+        HttpCookie authCookie = getAuthCookie();
+
+        HttpRequest request;
+        if (authCookie == null) {
+            request = reqBuilder.build();
+        } else if (!authCookie.isSecure()) {
+            logger.error("Auth cookie is not valid to be used."); return "false";
+        } else {
+            request = reqBuilder.addCookie(authCookie).build();
+        }
+
+        logger.info("Sending request for the {}", reqId);
+        HttpResponse response = httpClient.send(request);
+        logger.info("Response of {} {}", reqId, response);
+
+        long threadId = Thread.currentThread().getId();
+        AtomicInteger authErrors = authError.computeIfAbsent(threadId, id -> new AtomicInteger(0));
+        if (response.getStatus() == HttpCode.UNAUTHORIZED && authErrors.get() <= MAX_AUTH_ERRORS) {
+            this.authCookie = Tuple.of(false, null);
+            authErrors.incrementAndGet();
+            return sendRequest(reqBuilder, reqId);
+        }
+
+        String responseBody = response.getBody();
+        if (response.isError()) {
+            logger.error("Observation {} was not send. Reason {}.", reqId, responseBody);
+        }
+
+        return responseBody;
+    }
+
+    private static HttpRequest.Builder prepareRequest(Observation observation, String hostUrl) {
         return HttpRequest.newBuilder()
                 .contentType(TEXT_PLAIN)
-                .url(URLBuilder.newBuilder(hostConfig.getDomain(), hostConfig.getPath())
+                .url(URLBuilder.newBuilder(hostUrl, "FeederServlet")
                         .addParam("Operation", "InsertObservation")
                         .addParam("value", observation.getValue())
                         .addParam("date", observation.getFormattedTime())
                         .addParam("unit_id", observation.getUnitId())
                         .addParam("sensor_id", observation.getSensorId())
                         .build())
-                .GET().build();
+                .GET();
     }
 
-    private HttpRequest prepareRequest(Position position, HostConfig hostConfig) {
+    private static HttpRequest.Builder prepareRequest(Position position, String hostUrl) {
 
         if (!validateRequiredValues(
                 position::getLatitude,
@@ -160,7 +241,7 @@ class  SenslogV1Pusher implements ConnectorPusher<SenslogV1Model> {
 
         return HttpRequest.newBuilder()
                 .contentType(TEXT_PLAIN)
-                .url(URLBuilder.newBuilder(hostConfig.getDomain(), hostConfig.getPath())
+                .url(URLBuilder.newBuilder(hostUrl, "FeederServlet")
                         .addParam("Operation", "InsertPosition")
                         .addParam("date", position.getFormattedTime())
                         .addParam("unit_id", position.getUnitId())
@@ -170,11 +251,11 @@ class  SenslogV1Pusher implements ConnectorPusher<SenslogV1Model> {
                         .addParam("speed", position.getSpeed())
                         .addParam("dop", position.getDilutionOfPrecision())
                         .build())
-                .GET().build();
+                .GET();
     }
 
     @SafeVarargs
-    private final boolean validateRequiredValues(Supplier<Object>... attributes) {
+    private static boolean validateRequiredValues(Supplier<Object>... attributes) {
         for (Supplier<Object> attribute : attributes) {
             if (attribute.get() == null) {
                 return false;

+ 5 - 25
connector-push-rest-senslog-v1/src/test/java/cz/senslog/connector/push/rest/senslog/v1/SenslogV1ConfigTest.java

@@ -2,12 +2,12 @@ package cz.senslog.connector.push.rest.senslog.v1;
 
 import cz.senslog.connector.model.config.DefaultConfig;
 import cz.senslog.connector.model.config.HostConfig;
-import cz.senslog.common.exception.PropertyNotFoundException;
+import cz.senslog.connector.tools.exception.PropertyNotFoundException;
 import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 
-import static cz.senslog.common.json.BasicJson.jsonToObject;
+import static cz.senslog.connector.tools.json.BasicJson.jsonToObject;
 import static org.junit.jupiter.api.Assertions.*;
 
 class SenslogV1ConfigTest {
@@ -18,17 +18,14 @@ class SenslogV1ConfigTest {
 
         DefaultConfig defaultConfig = new DefaultConfig("senslog", null);
         defaultConfig.setProperty("host", new HashMap<String, String>(){{
-            put("domain", "http://test.com");
-            put("path", "test");
+            put("baseUrl", "http://test.com");
         }});
 
         SenslogV1Config config = new SenslogV1Config(defaultConfig);
 
-        HostConfig hostConfig = config.getHost();
 
-        assertNotNull(hostConfig);
-        assertEquals("http://test.com", hostConfig.getDomain());
-        assertEquals("test", hostConfig.getPath());
+        assertNotNull(config);
+        assertEquals("http://test.com", config.getBaseUrl());
     }
 
     @Test
@@ -40,21 +37,4 @@ class SenslogV1ConfigTest {
 
         assertEquals("Property 'senslog.host' does not exist.", exception.getMessage());
     }
-
-    @Test
-    void toString_ConvertJson_True() {
-
-        DefaultConfig defaultConfig = new DefaultConfig("senslog", null);
-        defaultConfig.setProperty("host", new HashMap<String, String>(){{
-            put("domain", "http://test.com");
-            put("path", "test");
-        }});
-
-        String jsonConfig = new SenslogV1Config(defaultConfig).toString();
-        SenslogV1Config parsedConfig = jsonToObject(jsonConfig, SenslogV1Config.class);
-
-        assertNotNull(parsedConfig.getHost());
-        assertEquals("http://test.com", parsedConfig.getHost().getDomain());
-        assertEquals("test", parsedConfig.getHost().getPath());
-    }
 }

+ 6 - 6
connector-push-rest-senslog-v1/src/test/java/cz/senslog/connector/push/rest/senslog/v1/SenslogV1PusherTest.java

@@ -1,10 +1,10 @@
 package cz.senslog.connector.push.rest.senslog.v1;
 
 import cz.senslog.connector.model.config.HostConfig;
-import cz.senslog.common.http.HttpClient;
-import cz.senslog.common.http.HttpCode;
-import cz.senslog.common.http.HttpRequest;
-import cz.senslog.common.http.HttpResponse;
+import cz.senslog.connector.tools.http.HttpClient;
+import cz.senslog.connector.tools.http.HttpCode;
+import cz.senslog.connector.tools.http.HttpRequest;
+import cz.senslog.connector.tools.http.HttpResponse;
 import cz.senslog.connector.model.v1.Observation;
 import cz.senslog.connector.model.v1.Record;
 import cz.senslog.connector.model.v1.SenslogV1Model;
@@ -30,7 +30,7 @@ class SenslogV1PusherTest {
                 );
 
         SenslogV1Config config = mock(SenslogV1Config.class);
-        when(config.getHost()).thenReturn(new HostConfig("http://test.com", ""));
+        when(config.getBaseUrl()).thenReturn("http://test.com");
 
         SenslogV1Pusher pusher = new SenslogV1Pusher(config, httpClient);
 
@@ -61,7 +61,7 @@ class SenslogV1PusherTest {
                 );
 
         SenslogV1Config config = mock(SenslogV1Config.class);
-        when(config.getHost()).thenReturn(new HostConfig("http://test.com", ""));
+        when(config.getBaseUrl()).thenReturn("http://test.com");
 
         SenslogV1Pusher pusher = new SenslogV1Pusher(config, httpClient);
 

+ 0 - 44
connector-push-rest-senslog-v2/pom.xml

@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>connectors</artifactId>
-        <groupId>cz.senslog</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>connector-push-senslog-v2</artifactId>
-    <name>push-senslog-v2</name>
-    <version>${project.parent.version}</version>
-    <packaging>jar</packaging>
-
-    <dependencies>
-        <dependency>
-            <groupId>cz.senslog</groupId>
-            <artifactId>common</artifactId>
-            <version>1.0.0</version>
-        </dependency>
-        <dependency>
-            <groupId>cz.senslog</groupId>
-            <artifactId>connector-model</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>cz.senslog</groupId>
-            <artifactId>connector-push-api</artifactId>
-            <version>${project.parent.version}</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-assembly-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>

+ 0 - 30
connector-push-rest-senslog-v2/src/main/java/cz/senslog/connector/push/rest/senslog/v2/SenslogV2Config.java

@@ -1,30 +0,0 @@
-package cz.senslog.connector.push.rest.senslog.v2;
-
-import cz.senslog.connector.model.config.DefaultConfig;
-
-import static cz.senslog.common.json.BasicJson.objectToJson;
-
-/**
- * The class {@code SenslogV2Config} represents a configuration class for the {@link SenslogV2Pusher}.
- *
- * @author Lukas Cerny
- * @version 1.0
- * @since 1.0
- */
-public class SenslogV2Config {
-
-
-    /**
-     * Constructor sets class attributes from default input configuration class {@link DefaultConfig}.
-     * From the default configuration are dynamically get properties for attributes.
-     * @param config - default configuration
-     */
-    public SenslogV2Config(DefaultConfig config) {
-
-    }
-
-    @Override
-    public String toString() {
-        return objectToJson(this);
-    }
-}

+ 0 - 35
connector-push-rest-senslog-v2/src/main/java/cz/senslog/connector/push/rest/senslog/v2/SenslogV2ConnectorPushProvider.java

@@ -1,35 +0,0 @@
-package cz.senslog.connector.push.rest.senslog.v2;
-
-import cz.senslog.connector.model.config.DefaultConfig;
-import cz.senslog.connector.push.api.ConnectorPushProvider;
-import cz.senslog.connector.push.api.ConnectorPusher;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-/**
- * The class {@code cz.senslog.connector.push.rest.senslog.v2.SenslogV2ConnectorPushProvider} represents a concrete implementation of {@link ConnectorPushProvider}.
- * Contains basic functionality to configure implementation of {@link ConnectorPusher} from the default configuration.
- *
- * @author Lukas Cerny
- * @version 1.0
- * @since 1.0
- */
-public final class SenslogV2ConnectorPushProvider implements ConnectorPushProvider {
-
-    private static final Logger logger = LogManager.getLogger(SenslogV2ConnectorPushProvider.class);
-
-    @Override
-    public ConnectorPusher createPusher(DefaultConfig defaultConfig) {
-        logger.info("Initialization a new push provider {}.", SenslogV2ConnectorPushProvider.class);
-
-        logger.debug("Creating a new configuration.");
-        SenslogV2Config config = new SenslogV2Config(defaultConfig);
-        logger.info("Configuration for {} was created successfully.", SenslogV2Pusher.class);
-
-        logger.debug("Creating a new instance of {}.", SenslogV2Pusher.class);
-        SenslogV2Pusher pusher = new SenslogV2Pusher(config);
-        logger.info("Pusher for {} was created successfully.", SenslogV2Pusher.class);
-
-        return pusher;
-    }
-}

+ 0 - 48
connector-push-rest-senslog-v2/src/main/java/cz/senslog/connector/push/rest/senslog/v2/SenslogV2Pusher.java

@@ -1,48 +0,0 @@
-package cz.senslog.connector.push.rest.senslog.v2;
-
-import cz.senslog.connector.model.v2.SenslogV2Model;
-import cz.senslog.connector.push.api.ConnectorPusher;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import static java.lang.String.format;
-
-/**
- * The class {@code SenslogV2Pusher} represents an implementation of {@link ConnectorPusher}.
- * The class receive a {@link SenslogV2Model} which contains data to send.
- *
- *
- * @author Lukas Cerny
- * @version 1.0
- * @since 1.0
- */
-class SenslogV2Pusher implements ConnectorPusher<SenslogV2Model> {
-
-    private static final Logger logger = LogManager.getLogger(SenslogV2Pusher.class);
-
-    /** Configuration. */
-    private final SenslogV2Config config;
-
-
-    /**
-     * Constructor of the class sets all attributes.
-     * @param config - configuration for pusher.
-     */
-    SenslogV2Pusher(SenslogV2Config config) {
-        this.config = config;
-    }
-
-    @Override
-    public void init() {}
-
-    @Override
-    public void push(SenslogV2Model model) {
-        if (model.getTo().isAfter(model.getFrom())) {
-            logger.info("Received model: " + model);
-        } else {
-            throw logger.throwing(new UnsupportedOperationException(format(
-                    "%s#push(%s) is not implemented.", SenslogV2Pusher.class, SenslogV2Model.class.getSimpleName()
-            )));
-        }
-    }
-}

+ 0 - 1
connector-push-rest-senslog-v2/src/main/resources/META-INF/services/cz.senslog.connector.push.api.ConnectorPushProvider

@@ -1 +0,0 @@
-cz.senslog.connector.push.rest.senslog.v2.SenslogV2ConnectorPushProvider

+ 76 - 0
connector-tools/pom.xml

@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>connectors</artifactId>
+        <groupId>cz.senslog</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>connector-tools</artifactId>
+    <name>tools</name>
+    <version>${project.parent.version}</version>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>2.8.5</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+            <version>4.5.9</version>
+        </dependency>
+        <dependency>
+            <groupId>org.yaml</groupId>
+            <artifactId>snakeyaml</artifactId>
+            <version>1.24</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-api</artifactId>
+            <version>2.12.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>2.12.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.github.everit-org.json-schema</groupId>
+            <artifactId>org.everit.json.schema</artifactId>
+            <version>1.11.1</version>
+        </dependency>
+
+        <dependency>
+            <groupId>cglib</groupId>
+            <artifactId>cglib-nodep</artifactId>
+            <version>3.3.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter</artifactId>
+            <version>5.4.2</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <version>3.0.0</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <repositories>
+        <repository>
+            <id>jitpack.io</id>
+            <url>https://jitpack.io</url>
+        </repository>
+    </repositories>
+
+</project>

+ 8 - 0
connector-tools/src/main/java/cz/senslog/connector/tools/exception/ModuleInterruptedException.java

@@ -0,0 +1,8 @@
+package cz.senslog.connector.tools.exception;
+
+public class ModuleInterruptedException extends RuntimeException{
+
+    public ModuleInterruptedException(String message) {
+        super(message);
+    }
+}

+ 8 - 0
connector-tools/src/main/java/cz/senslog/connector/tools/exception/ParseException.java

@@ -0,0 +1,8 @@
+package cz.senslog.connector.tools.exception;
+
+public class ParseException extends RuntimeException {
+
+    public ParseException(String message) {
+        super(message);
+    }
+}

Неке датотеке нису приказане због велике количине промена